@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
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var apiClient = require('@elice/api-client');
8
7
  var blocks = require('@elice/blocks');
@@ -18,7 +17,6 @@ var FileViewerNonViewable = require('../../shared/file-viewer/FileViewerNonViewa
18
17
  var MonacoEditorLazy = require('../../shared/monaco-editor/MonacoEditorLazy.js');
19
18
  require('../../shared/monaco-editor/MonacoEditorPerferenceForm.js');
20
19
  require('monaco-editor/esm/vs/editor/editor.api');
21
- require('../../shared/monaco-editor/constants/monaco/preferences.js');
22
20
  require('react-use');
23
21
  require('socket.io-client');
24
22
  var recoil$1 = require('../context/recoil.js');
@@ -35,55 +33,43 @@ require('ot-text-unicode');
35
33
  var useUsercodeEditWebSocket = require('../../../hooks/useUsercodeEditWebSocket.js');
36
34
  var ExerciseFileReadOnlyBanner = require('./ExerciseFileReadOnlyBanner.js');
37
35
 
38
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
39
-
40
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
41
-
42
36
  //
43
37
  //
44
38
  //
45
39
  /**
46
40
  * Exercise file (code) editor for editable files
47
41
  */
48
- var ExerciseFileEditor = function ExerciseFileEditor() {
49
- var _React$useContext = React__default["default"].useContext(context.ExerciseContext),
50
- materialExerciseId = _React$useContext.materialExerciseId,
51
- exerciseRoomId = _React$useContext.exerciseRoomId,
52
- readOnlyEditor = _React$useContext.readOnlyEditor,
53
- readOnlyActiveFile = _React$useContext.readOnlyActiveFile,
54
- locale = _React$useContext.locale;
55
- var exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
56
- var exerciseRoom = recoil.useRecoilValue(recoil$1.exerciseRoomState(exerciseRoomId));
57
- var lecture = recoil.useRecoilValue(recoil$1.exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
58
- var preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
59
- var activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
60
- var readOnly = readOnlyEditor || readOnlyActiveFile;
61
- var setUsercodeWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('usercodeEdit'));
62
- var setFileEditorCursorState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorState);
63
- var setFileEditorCursorSelectionValueState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorSelectionValueState);
42
+ const ExerciseFileEditor = () => {
43
+ const {
44
+ materialExerciseId,
45
+ exerciseRoomId,
46
+ readOnlyEditor,
47
+ readOnlyActiveFile,
48
+ locale
49
+ } = React.useContext(context.ExerciseContext);
50
+ const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
51
+ const exerciseRoom = recoil.useRecoilValue(recoil$1.exerciseRoomState(exerciseRoomId));
52
+ const lecture = recoil.useRecoilValue(recoil$1.exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
53
+ const preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
54
+ const activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
55
+ const readOnly = readOnlyEditor || readOnlyActiveFile;
56
+ const setUsercodeWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('usercodeEdit'));
57
+ const setFileEditorCursorState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorState);
58
+ const setFileEditorCursorSelectionValueState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorSelectionValueState);
64
59
  // editor
65
- var editorApis = React__default["default"].useRef(null);
66
- var editorDocHistories = React__default["default"].useRef({});
67
- var serverInitiatedVersions = React__default["default"].useRef([]);
60
+ const editorApis = React.useRef(null);
61
+ const editorDocHistories = React.useRef({});
62
+ const serverInitiatedVersions = React.useRef([]);
68
63
  // ready state
69
- var _React$useState = React__default["default"].useState(false),
70
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
71
- isEditorReady = _React$useState2[0],
72
- setEditorReady = _React$useState2[1];
73
- var _React$useState3 = React__default["default"].useState(false),
74
- _React$useState4 = _rollupPluginBabelHelpers.slicedToArray(_React$useState3, 2),
75
- isWebSocketReady = _React$useState4[0],
76
- setWebSocketReady = _React$useState4[1];
77
- var isReady = isEditorReady && isWebSocketReady;
78
- var _React$useState5 = React__default["default"].useState(exerciseFile.checkExerciseFileResettable(activeFilename, {
79
- exercise: exercise,
80
- exerciseRoom: exerciseRoom
81
- })),
82
- _React$useState6 = _rollupPluginBabelHelpers.slicedToArray(_React$useState5, 2),
83
- isFileResettable = _React$useState6[0],
84
- setFileResettable = _React$useState6[1];
85
- var setExerciseMonacoEditorApisState = recoil.useSetRecoilState(recoil$1.exerciseMonacoEditorApisState);
86
- React__default["default"].useEffect(function () {
64
+ const [isEditorReady, setEditorReady] = React.useState(false);
65
+ const [isWebSocketReady, setWebSocketReady] = React.useState(false);
66
+ const isReady = isEditorReady && isWebSocketReady;
67
+ const [isFileResettable, setFileResettable] = React.useState(exerciseFile.checkExerciseFileResettable(activeFilename, {
68
+ exercise,
69
+ exerciseRoom
70
+ }));
71
+ const setExerciseMonacoEditorApisState = recoil.useSetRecoilState(recoil$1.exerciseMonacoEditorApisState);
72
+ React.useEffect(() => {
87
73
  if (editorApis.current) {
88
74
  setExerciseMonacoEditorApisState(editorApis.current);
89
75
  }
@@ -92,78 +78,48 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
92
78
  /**
93
79
  * Set value of current file.
94
80
  */
95
- var setValue = /*#__PURE__*/function () {
96
- var _ref = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee(content) {
97
- var _a, readyExerciseImage;
98
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
99
- while (1) switch (_context.prev = _context.next) {
100
- case 0:
101
- if (isFileResettable) {
102
- _context.next = 3;
103
- break;
104
- }
105
- console.warn('Cannot reset file since not resettable.');
106
- return _context.abrupt("return");
107
- case 3:
108
- if (activeFilename) {
109
- _context.next = 6;
110
- break;
111
- }
112
- console.warn('Cannot reset file since no file selected.');
113
- return _context.abrupt("return");
114
- case 6:
115
- if (!content) {
116
- _context.next = 10;
117
- break;
118
- }
119
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
120
- _context.next = 15;
121
- break;
122
- case 10:
123
- if (!(content === null)) {
124
- _context.next = 15;
125
- break;
126
- }
127
- readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
128
- if (!(!editorApis.current || !readyExerciseImage)) {
129
- _context.next = 14;
130
- break;
131
- }
132
- return _context.abrupt("return");
133
- case 14:
134
- return _context.abrupt("return", apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
135
- exerciseImageId: readyExerciseImage.id,
136
- filename: activeFilename
137
- }).then(function (res) {
138
- return res.exerciseFile.content;
139
- }).then(function (content) {
140
- var _a;
141
- if (typeof content === 'string') {
142
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
143
- } else {
144
- setFileResettable(false);
145
- }
146
- }));
147
- case 15:
148
- case "end":
149
- return _context.stop();
81
+ const setValue = async content => {
82
+ var _a;
83
+ if (!isFileResettable) {
84
+ console.warn('Cannot reset file since not resettable.');
85
+ return;
86
+ }
87
+ if (!activeFilename) {
88
+ console.warn('Cannot reset file since no file selected.');
89
+ return;
90
+ }
91
+ if (content) {
92
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
93
+ }
94
+ // reset as initial value on `null` received.
95
+ else if (content === null) {
96
+ const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
97
+ if (!editorApis.current || !readyExerciseImage) {
98
+ return;
99
+ }
100
+ return apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
101
+ exerciseImageId: readyExerciseImage.id,
102
+ filename: activeFilename
103
+ }).then(res => res.exerciseFile.content).then(content => {
104
+ var _a;
105
+ if (typeof content === 'string') {
106
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
107
+ } else {
108
+ setFileResettable(false);
150
109
  }
151
- }, _callee);
152
- }));
153
- return function setValue(_x) {
154
- return _ref.apply(this, arguments);
155
- };
156
- }();
110
+ });
111
+ }
112
+ };
157
113
  /**
158
114
  * Update editor document history.
159
115
  */
160
- var pushEditorDocHistories = function pushEditorDocHistories() {
161
- var _editorApis = editorApis.current;
116
+ const pushEditorDocHistories = () => {
117
+ const _editorApis = editorApis.current;
162
118
  if (!_editorApis) {
163
119
  return;
164
120
  }
165
121
  if (typeof _editorApis.getMonacoModel === 'function') {
166
- var model = _editorApis.getMonacoModel();
122
+ const model = _editorApis.getMonacoModel();
167
123
  if (model) {
168
124
  editorDocHistories.current[model.getVersionId()] = model.getValue();
169
125
  }
@@ -173,102 +129,82 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
173
129
  * Handle usercode edit websocket received `WRITE_NOTI` message,
174
130
  * move cursor or insert / delete content.
175
131
  */
176
- var handleWebsocketUsercodeWriteNoti = function handleWebsocketUsercodeWriteNoti(ots) {
132
+ const handleWebsocketUsercodeWriteNoti = ots => {
177
133
  var _a, _b, _c;
178
- var cursor = 0;
179
- var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelper(ots),
180
- _step;
181
- try {
182
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
183
- var ot = _step.value;
184
- var model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
185
- if (!model) {
186
- continue;
187
- }
188
- // remove previous versions.
189
- if (serverInitiatedVersions.current.length > 100) {
190
- serverInitiatedVersions.current.splice(0, 50);
191
- }
192
- switch (_rollupPluginBabelHelpers["typeof"](ot)) {
193
- // cursor changed...
194
- case 'number':
195
- cursor += ot;
196
- break;
197
- // insertion
198
- case 'string':
199
- serverInitiatedVersions.current.push(model.getVersionId());
200
- (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
201
- cursor += ot.length;
202
- break;
203
- // deletion
204
- default:
205
- serverInitiatedVersions.current.push(model.getVersionId());
206
- (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
207
- break;
208
- }
134
+ let cursor = 0;
135
+ for (const ot of ots) {
136
+ const model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
137
+ if (!model) {
138
+ continue;
139
+ }
140
+ // remove previous versions.
141
+ if (serverInitiatedVersions.current.length > 100) {
142
+ serverInitiatedVersions.current.splice(0, 50);
143
+ }
144
+ switch (typeof ot) {
145
+ // cursor changed...
146
+ case 'number':
147
+ cursor += ot;
148
+ break;
149
+ // insertion
150
+ case 'string':
151
+ serverInitiatedVersions.current.push(model.getVersionId());
152
+ (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
153
+ cursor += ot.length;
154
+ break;
155
+ // deletion
156
+ default:
157
+ serverInitiatedVersions.current.push(model.getVersionId());
158
+ (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
159
+ break;
209
160
  }
210
- } catch (err) {
211
- _iterator.e(err);
212
- } finally {
213
- _iterator.f();
214
161
  }
215
162
  };
216
163
  /**
217
164
  * Usercode edit web socket.
218
165
  */
219
- var wsUsercode = useUsercodeEditWebSocket.useUsercodeEditWebSocket({
220
- exerciseRoomId: exerciseRoomId,
166
+ const wsUsercode = useUsercodeEditWebSocket.useUsercodeEditWebSocket({
167
+ exerciseRoomId,
221
168
  filename: activeFilename,
222
- onInit: function onInit() {
223
- return setWebSocketReady(true);
224
- },
169
+ onInit: () => setWebSocketReady(true),
225
170
  onWriteNoti: handleWebsocketUsercodeWriteNoti
226
171
  });
227
172
  /**
228
173
  *
229
174
  */
230
- var handleChange = function handleChange(e) {
231
- var index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
175
+ const handleChange = e => {
176
+ const index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
232
177
  if (index !== -1) {
233
178
  serverInitiatedVersions.current.splice(index, 1);
234
179
  return;
235
180
  }
236
181
  // get previous model doc
237
- var prevDoc = editorDocHistories.current[e.versionId - 1];
182
+ const prevDoc = editorDocHistories.current[e.versionId - 1];
238
183
  // send OTs to server
239
- var _iterator2 = _rollupPluginBabelHelpers.createForOfIteratorHelper(e.changes),
240
- _step2;
241
- try {
242
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
243
- var change = _step2.value;
244
- // insertion
245
- if (change.rangeLength === 0 && !readOnly) {
246
- wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
184
+ for (const change of e.changes) {
185
+ // insertion
186
+ if (change.rangeLength === 0 && !readOnly) {
187
+ wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
188
+ }
189
+ // deletion
190
+ else {
191
+ if (prevDoc && !readOnly) {
192
+ wsUsercode.sendOTs([change.rangeOffset || null, {
193
+ d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
194
+ }].filter(Boolean));
247
195
  }
248
- // deletion
249
- else {
250
- if (prevDoc && !readOnly) {
251
- wsUsercode.sendOTs([change.rangeOffset || null, {
252
- d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
253
- }].filter(Boolean));
254
- }
255
- // replace
256
- if (change.text.length > 0 && !readOnly) {
257
- wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
258
- }
196
+ // replace
197
+ if (change.text.length > 0 && !readOnly) {
198
+ wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
259
199
  }
260
200
  }
261
- } catch (err) {
262
- _iterator2.e(err);
263
- } finally {
264
- _iterator2.f();
265
201
  }
266
202
  delete editorDocHistories.current[e.versionId - 1];
267
203
  };
268
204
  /**
269
205
  * Handle editor cursor change.
270
206
  */
271
- var handleEditorCursor = function handleEditorCursor(range) {
207
+ const handleEditorCursor = range => {
272
208
  var _a, _b;
273
209
  if (!readOnly) {
274
210
  wsUsercode.sendCursor(range);
@@ -279,34 +215,34 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
279
215
  /**
280
216
  * Handle editor save shortcut emitted.
281
217
  */
282
- var handleSave = function handleSave() {
218
+ const handleSave = () => {
283
219
  subjects.exerciseFileEditorSaveAction$.next();
284
220
  };
285
221
  //
286
222
  // Handle editor content change.
287
223
  //
288
- React__default["default"].useEffect(function () {
224
+ React.useEffect(() => {
289
225
  var _a, _b;
290
- var _editorApis = editorApis.current;
226
+ const _editorApis = editorApis.current;
291
227
  if (!_editorApis || !isReady) {
292
228
  return;
293
229
  }
294
230
  _editorApis.setValue(wsUsercode.doc);
295
231
  pushEditorDocHistories();
296
- var subscription = undefined;
232
+ let subscription = undefined;
297
233
  if (utils.FlutterApp.checkWebview()) {
298
- subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(function (e) {
234
+ subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(e => {
299
235
  pushEditorDocHistories();
300
236
  handleChange(e);
301
237
  utils.FlutterApp.onDidChangeContent();
302
238
  });
303
239
  } else {
304
- subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(function (e) {
240
+ subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(e => {
305
241
  pushEditorDocHistories();
306
242
  handleChange(e);
307
243
  });
308
244
  }
309
- return function () {
245
+ return () => {
310
246
  if (subscription) {
311
247
  subscription.dispose();
312
248
  }
@@ -317,21 +253,17 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
317
253
  //
318
254
  // Handle websocket status change.
319
255
  //
320
- React__default["default"].useEffect(function () {
321
- return setUsercodeWebSocketState(wsUsercode.readyState);
322
- },
256
+ React.useEffect(() => setUsercodeWebSocketState(wsUsercode.readyState),
323
257
  // eslint-disable-next-line react-hooks/exhaustive-deps
324
258
  [wsUsercode.readyState]);
325
259
  //
326
260
  // handle content change request to code editor.
327
261
  //
328
- React__default["default"].useEffect(function () {
329
- var contentChangeSub = subjects.exerciseFileEditorContentChange$.subscribe(function (v) {
330
- setValue(v).catch(function () {
331
- return void 0;
332
- });
262
+ React.useEffect(() => {
263
+ const contentChangeSub = subjects.exerciseFileEditorContentChange$.subscribe(v => {
264
+ setValue(v).catch(() => void 0);
333
265
  });
334
- return function () {
266
+ return () => {
335
267
  contentChangeSub.unsubscribe();
336
268
  };
337
269
  },
@@ -342,42 +274,40 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
342
274
  //
343
275
  // empty file
344
276
  if (!activeFilename) {
345
- return React__default["default"].createElement(ExerciseFileShimmer["default"], null);
277
+ return React.createElement(ExerciseFileShimmer.default, null);
346
278
  }
347
279
  // non-editable file
348
280
  if (!wsUsercode.docEditable) {
349
- return React__default["default"].createElement(FileViewerNonViewable["default"], {
281
+ return React.createElement(FileViewerNonViewable.default, {
350
282
  filename: activeFilename,
351
283
  locale: locale
352
284
  });
353
285
  }
354
286
  // websocket not ready
355
287
  if (!isWebSocketReady) {
356
- return React__default["default"].createElement(ExerciseFileShimmer["default"], null);
288
+ return React.createElement(ExerciseFileShimmer.default, null);
357
289
  }
358
- var uniqueFilePath = "code/".concat(exerciseRoomId);
359
- var editorFilename = "".concat(uniqueFilePath, "/").concat(activeFilename);
360
- return React__default["default"].createElement(blocks.Flex, {
290
+ const uniqueFilePath = `code/${exerciseRoomId}`;
291
+ const editorFilename = `${uniqueFilePath}/${activeFilename}`;
292
+ return React.createElement(blocks.Flex, {
361
293
  column: true,
362
294
  width: "100%",
363
295
  height: "100%"
364
- }, React__default["default"].createElement(ExerciseFileReadOnlyBanner["default"], null), React__default["default"].createElement(MonacoEditorLazy["default"], {
296
+ }, React.createElement(ExerciseFileReadOnlyBanner.default, null), React.createElement(MonacoEditorLazy.default, {
365
297
  key: editorFilename,
366
298
  defaultValue: "",
367
299
  filename: editorFilename,
368
300
  markers: wsUsercode.markers,
369
301
  preference: Object.assign(Object.assign({}, preference), {
370
- readOnly: readOnly
302
+ readOnly
371
303
  }),
372
304
  noLanguageIntellisense: (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === types.enums.LectureType.Test,
373
305
  locale: locale,
374
- onLoad: function onLoad() {
375
- return setEditorReady(true);
376
- },
306
+ onLoad: () => setEditorReady(true),
377
307
  onCursor: handleEditorCursor,
378
308
  onSave: handleSave,
379
309
  ref: editorApis
380
310
  }));
381
311
  };
382
312
 
383
- exports["default"] = ExerciseFileEditor;
313
+ exports.default = ExerciseFileEditor;
@@ -13,29 +13,25 @@ require('../context/recoilTypes.js');
13
13
  require('../context/subjects.js');
14
14
  require('../context/ExerciseProvider.js');
15
15
 
16
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
-
18
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
20
-
21
- var StyledEditorReadOnlyBanner = styled__default["default"].div.withConfig({
16
+ const StyledEditorReadOnlyBanner = styled.div.withConfig({
22
17
  componentId: "sc-kh9iw2-0"
23
18
  })(["flex:0 0 auto;display:flex;align-items:center;margin:0.75rem;padding:0 1rem;height:2rem;border:1px solid ", ";border-radius:2px;"], designTokens.base.color.navy5);
24
19
  /**
25
20
  * Banner for readonly exercise file.
26
21
  */
27
- var ExerciseFileReadOnlyBanner = function ExerciseFileReadOnlyBanner() {
28
- var _React$useContext = React__default["default"].useContext(context.ExerciseContext),
29
- readOnlyActiveFile = _React$useContext.readOnlyActiveFile;
22
+ const ExerciseFileReadOnlyBanner = () => {
23
+ const {
24
+ readOnlyActiveFile
25
+ } = React.useContext(context.ExerciseContext);
30
26
  if (!readOnlyActiveFile) {
31
27
  return null;
32
28
  }
33
- return React__default["default"].createElement(StyledEditorReadOnlyBanner, null, React__default["default"].createElement(blocks.Text, {
29
+ return React.createElement(StyledEditorReadOnlyBanner, null, React.createElement(blocks.Text, {
34
30
  size: "tiny",
35
31
  role: "gray3"
36
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
32
+ }, React.createElement(reactIntl.FormattedMessage, {
37
33
  id: "[\uC77D\uAE30\uC804\uC6A9] \uC774 \uD30C\uC77C\uC740 \uC77D\uAE30\uC804\uC6A9 \uC785\uB2C8\uB2E4."
38
34
  })));
39
35
  };
40
36
 
41
- exports["default"] = ExerciseFileReadOnlyBanner;
37
+ exports.default = ExerciseFileReadOnlyBanner;
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var recoil = require('recoil');
8
7
  var styled = require('styled-components');
@@ -17,60 +16,45 @@ require('../context/recoilTypes.js');
17
16
  require('../context/subjects.js');
18
17
  require('../context/ExerciseProvider.js');
19
18
 
20
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
-
22
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
24
-
25
- var AsyncFileTabs = React__default["default"].lazy(function () {
26
- return Promise.resolve().then(function () { return require('../../shared/file-tabs/FileTabs.js'); });
27
- });
28
- var StyledFileTabsWrapper = styled__default["default"].div.withConfig({
19
+ const AsyncFileTabs = React.lazy(() => Promise.resolve().then(function () { return require('../../shared/file-tabs/FileTabs.js'); }));
20
+ const StyledFileTabsWrapper = styled.div.withConfig({
29
21
  componentId: "sc-11fdoyl-0"
30
22
  })(["flex:0 0 3rem;"]);
31
- var ExerciseFileTabs = function ExerciseFileTabs() {
32
- var _React$useContext = React__default["default"].useContext(context.ExerciseContext),
33
- exerciseRoomId = _React$useContext.exerciseRoomId,
34
- materialExerciseId = _React$useContext.materialExerciseId;
35
- var _useRecoilState = recoil.useRecoilState(recoil$1.exerciseActiveFilenameState),
36
- _useRecoilState2 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState, 2),
37
- activeFilename = _useRecoilState2[0],
38
- setActiveFilename = _useRecoilState2[1];
39
- var _useRecoilState3 = recoil.useRecoilState(recoil$1.exerciseFileTabsOpenedState({
40
- materialExerciseId: materialExerciseId,
41
- exerciseRoomId: exerciseRoomId
42
- })),
43
- _useRecoilState4 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState3, 2),
44
- openedTabs = _useRecoilState4[0],
45
- setOpenedTabs = _useRecoilState4[1];
46
- var handleCloseTab = function handleCloseTab(path) {
47
- var updatedTabs = openedTabs.filter(function (tab) {
48
- return tab !== path;
49
- });
23
+ const ExerciseFileTabs = () => {
24
+ const {
25
+ exerciseRoomId,
26
+ materialExerciseId
27
+ } = React.useContext(context.ExerciseContext);
28
+ const [activeFilename, setActiveFilename] = recoil.useRecoilState(recoil$1.exerciseActiveFilenameState);
29
+ const [openedTabs, setOpenedTabs] = recoil.useRecoilState(recoil$1.exerciseFileTabsOpenedState({
30
+ materialExerciseId,
31
+ exerciseRoomId
32
+ }));
33
+ const handleCloseTab = path => {
34
+ const updatedTabs = openedTabs.filter(tab => tab !== path);
50
35
  setOpenedTabs(updatedTabs);
51
36
  if (activeFilename === path) {
52
37
  setActiveFilename(updatedTabs.length > 0 ? updatedTabs[0] : '');
53
38
  }
54
39
  };
55
- var handleTabOrderChange = function handleTabOrderChange(currentIndex, movedIndex) {
56
- var newOpenedTabs = _rollupPluginBabelHelpers.toConsumableArray(openedTabs);
57
- var movingTab = newOpenedTabs.splice(currentIndex, 1);
58
- newOpenedTabs.splice.apply(newOpenedTabs, [movedIndex, 0].concat(_rollupPluginBabelHelpers.toConsumableArray(movingTab)));
40
+ const handleTabOrderChange = (currentIndex, movedIndex) => {
41
+ const newOpenedTabs = [...openedTabs];
42
+ const movingTab = newOpenedTabs.splice(currentIndex, 1);
43
+ newOpenedTabs.splice(movedIndex, 0, ...movingTab);
59
44
  setOpenedTabs(newOpenedTabs);
60
45
  };
61
- var handleActivePathChange = function handleActivePathChange(path) {
62
- var isDirectory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
46
+ const handleActivePathChange = (path, isDirectory = false) => {
63
47
  if (isDirectory) {
64
48
  return;
65
49
  }
66
50
  if (!openedTabs.includes(path)) {
67
- setOpenedTabs([].concat(_rollupPluginBabelHelpers.toConsumableArray(openedTabs), [path]));
51
+ setOpenedTabs([...openedTabs, path]);
68
52
  }
69
53
  setActiveFilename(path);
70
54
  };
71
- return React__default["default"].createElement(StyledFileTabsWrapper, null, React__default["default"].createElement(React__default["default"].Suspense, {
72
- fallback: React__default["default"].createElement(ExerciseFileTabsShimmer["default"], null)
73
- }, React__default["default"].createElement(AsyncFileTabs, {
55
+ return React.createElement(StyledFileTabsWrapper, null, React.createElement(React.Suspense, {
56
+ fallback: React.createElement(ExerciseFileTabsShimmer.default, null)
57
+ }, React.createElement(AsyncFileTabs, {
74
58
  openedTabs: openedTabs,
75
59
  activeTab: activeFilename || undefined,
76
60
  onCloseTab: handleCloseTab,
@@ -79,4 +63,4 @@ var ExerciseFileTabs = function ExerciseFileTabs() {
79
63
  })));
80
64
  };
81
65
 
82
- exports["default"] = ExerciseFileTabs;
66
+ exports.default = ExerciseFileTabs;