@elice/material-exercise 1.230325.0 → 1.230418.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 (373) hide show
  1. package/cjs/_virtual/_rollupPluginBabelHelpers.js +526 -0
  2. package/cjs/components/material-exercise/MaterialExercise.js +44 -63
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +20 -23
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +19 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +83 -81
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +16 -16
  8. package/cjs/components/material-exercise/context/context.js +1 -1
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +3 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +3 -1
  11. package/cjs/components/material-exercise/context/recoil.d.ts +2 -1
  12. package/cjs/components/material-exercise/context/recoil.js +562 -373
  13. package/cjs/components/material-exercise/context/recoilTypes.js +0 -5
  14. package/cjs/components/material-exercise/context/subjects.js +3 -6
  15. package/cjs/components/material-exercise/context/types.d.ts +8 -1
  16. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  17. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -65
  18. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  19. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +7 -0
  20. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +7 -0
  21. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +20 -21
  22. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +228 -199
  23. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -10
  24. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +35 -32
  25. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +57 -48
  26. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +6 -4
  27. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +3 -1
  28. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +3 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +327 -231
  30. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +6 -4
  31. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +3 -1
  32. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +3 -1
  33. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +17 -17
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +13 -14
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +6 -6
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +47 -38
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +60 -42
  38. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +29 -22
  39. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +45 -56
  40. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  41. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +3 -1
  42. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +3 -1
  43. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +28 -20
  44. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +5 -3
  45. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +30 -41
  46. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +17 -12
  47. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +3 -1
  48. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +3 -1
  49. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +24 -33
  50. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +13 -8
  51. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +84 -83
  52. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +3 -1
  53. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +3 -1
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +20 -12
  55. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  56. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +239 -147
  57. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +92 -63
  58. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  59. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +3 -1
  60. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +3 -1
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +224 -223
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -13
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +30 -26
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +26 -26
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +79 -95
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +27 -27
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +54 -60
  69. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +5 -5
  70. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +10 -13
  71. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +29 -26
  72. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +3 -1
  73. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +3 -1
  74. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  75. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +290 -180
  76. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  77. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -45
  78. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +7 -0
  79. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +7 -0
  80. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +19 -17
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +5 -4
  82. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +15 -14
  83. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +7 -6
  84. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +17 -16
  85. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +18 -11
  86. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -4
  87. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  88. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -7
  89. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  90. package/cjs/components/shared/file-icon/FileIcon.js +23 -23
  91. package/cjs/components/shared/file-tabs/FileTab.js +32 -43
  92. package/cjs/components/shared/file-tabs/FileTab.styled.js +26 -22
  93. package/cjs/components/shared/file-tabs/FileTabs.js +55 -49
  94. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -2
  95. package/cjs/components/shared/file-tabs/util.js +29 -18
  96. package/cjs/components/shared/file-tree/FileTree.js +11 -11
  97. package/cjs/components/shared/file-tree/FileTreeConfig.js +24 -23
  98. package/cjs/components/shared/file-tree/FileTreeList.js +35 -41
  99. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +75 -91
  100. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  101. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +77 -101
  102. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  103. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +51 -86
  104. package/cjs/components/shared/file-tree/FileTreeListItems.js +150 -153
  105. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  106. package/cjs/components/shared/file-tree/FileTreeToolbar.js +30 -41
  107. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  108. package/cjs/components/shared/file-tree/context/FileTreeContext.js +91 -97
  109. package/cjs/components/shared/file-tree/locales/en.json.js +3 -1
  110. package/cjs/components/shared/file-tree/locales/ko.json.js +3 -1
  111. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  112. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  113. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  114. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  115. package/cjs/components/shared/file-tree/utils/fileTreePath.js +5 -7
  116. package/cjs/components/shared/file-viewer/FileViewer.js +59 -60
  117. package/cjs/components/shared/file-viewer/FileViewerCsv.js +145 -101
  118. package/cjs/components/shared/file-viewer/FileViewerImage.js +7 -8
  119. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +20 -14
  120. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +28 -34
  121. package/cjs/components/shared/file-viewer/FileViewerText.js +23 -16
  122. package/cjs/components/shared/file-viewer/locales/en.json.js +3 -1
  123. package/cjs/components/shared/file-viewer/locales/ko.json.js +3 -1
  124. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +3 -1
  125. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +3 -1
  126. package/cjs/components/shared/material-modal/MaterialModal.js +10 -12
  127. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -5
  128. package/cjs/components/shared/monaco-editor/MonacoEditor.js +123 -149
  129. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +10 -8
  130. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +49 -58
  131. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +78 -85
  132. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  133. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  134. package/cjs/components/shared/monaco-editor/constants/themes/index.js +80 -32
  135. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  136. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  137. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  138. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  139. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  140. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  141. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +36 -12
  142. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +5 -8
  143. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +36 -12
  144. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +3 -6
  145. package/cjs/components/shared/monaco-editor/editor-languages/index.js +3 -1
  146. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  147. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +3 -2
  148. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +3 -2
  149. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +3 -2
  150. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +36 -12
  151. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +18 -24
  152. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  153. package/cjs/components/shared/monaco-editor/locales/en.json.js +3 -1
  154. package/cjs/components/shared/monaco-editor/locales/ko.json.js +3 -1
  155. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  156. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  157. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  158. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +70 -32
  159. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  160. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  161. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  162. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  163. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  164. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +30 -9
  165. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  166. package/cjs/components/shared/monaco-editor/utils/theme/index.js +22 -5
  167. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  168. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  169. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  170. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  171. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  172. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  173. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  174. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  175. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +218 -329
  176. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  177. package/cjs/components/shared/no-vnc/NoVnc.js +93 -90
  178. package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -5
  179. package/cjs/components/shared/preview-container/PreviewContainer.js +7 -10
  180. package/cjs/components/shared/web-browser/WebBrowser.js +54 -59
  181. package/cjs/components/shared/xterm/Xterm.js +112 -105
  182. package/cjs/components/shared/xterm/XtermLazy.js +7 -5
  183. package/cjs/components/shared/xterm/locales/en.json.js +3 -1
  184. package/cjs/components/shared/xterm/locales/ko.json.js +3 -1
  185. package/cjs/constants/arduino.js +10 -10
  186. package/cjs/constants/shortcutKeyMap.js +5 -5
  187. package/cjs/constants/stylesheets.js +7 -10
  188. package/cjs/hooks/useArduino.js +327 -255
  189. package/cjs/hooks/useExerciseFile.js +24 -24
  190. package/cjs/hooks/useExericseShortcut.js +6 -5
  191. package/cjs/hooks/useMaterialExerciseFileUrl.js +54 -37
  192. package/cjs/hooks/useRunnerRoomWebSocket.js +58 -56
  193. package/cjs/hooks/useStdioTextConcator.js +18 -12
  194. package/cjs/hooks/useStdioWebSocket.js +41 -67
  195. package/cjs/hooks/useUsercodeEditWebSocket.js +230 -252
  196. package/cjs/hooks/useUsercodeHistory.js +121 -82
  197. package/cjs/index.js +4 -4
  198. package/cjs/utils/arduino.js +23 -25
  199. package/cjs/utils/exerciseFile.js +8 -16
  200. package/cjs/utils/runner.js +29 -25
  201. package/es/_virtual/_rollupPluginBabelHelpers.js +504 -0
  202. package/es/components/material-exercise/MaterialExercise.js +33 -54
  203. package/es/components/material-exercise/MaterialExercise.styled.js +20 -23
  204. package/es/components/material-exercise/MaterialExerciseMobile.js +15 -13
  205. package/es/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
  206. package/es/components/material-exercise/context/ExerciseProvider.js +79 -79
  207. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +11 -13
  208. package/es/components/material-exercise/context/context.js +1 -1
  209. package/es/components/material-exercise/context/recoil.d.ts +2 -1
  210. package/es/components/material-exercise/context/recoil.js +563 -374
  211. package/es/components/material-exercise/context/recoilTypes.js +0 -5
  212. package/es/components/material-exercise/context/subjects.js +3 -6
  213. package/es/components/material-exercise/context/types.d.ts +8 -1
  214. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
  215. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +73 -62
  216. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  217. package/es/components/material-exercise/exercise-code-history/locales/en.json.js +3 -0
  218. package/es/components/material-exercise/exercise-code-history/locales/ko.json.js +3 -0
  219. package/es/components/material-exercise/exercise-file/ExerciseFile.js +15 -18
  220. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +222 -195
  221. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -9
  222. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +31 -28
  223. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +52 -45
  224. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  225. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +321 -225
  226. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  227. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +12 -14
  228. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -10
  229. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -5
  230. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +43 -36
  231. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +53 -37
  232. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +25 -20
  233. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +41 -54
  234. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  235. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +25 -19
  236. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  237. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +21 -34
  238. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +13 -10
  239. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +17 -28
  240. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +9 -6
  241. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +81 -82
  242. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +13 -7
  243. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
  244. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +236 -146
  245. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +90 -63
  246. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
  247. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +218 -219
  248. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  249. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +7 -9
  250. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +27 -25
  251. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +22 -24
  252. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +76 -94
  253. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +24 -26
  254. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +51 -59
  255. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -4
  256. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +6 -11
  257. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +26 -25
  258. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
  259. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +284 -174
  260. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  261. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +38 -44
  262. package/es/components/material-exercise/exercise-submit-history/locales/en.json.js +3 -0
  263. package/es/components/material-exercise/exercise-submit-history/locales/ko.json.js +3 -0
  264. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +16 -16
  265. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -3
  266. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -13
  267. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -3
  268. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -15
  269. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +15 -10
  270. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +2 -3
  271. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  272. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +5 -6
  273. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
  274. package/es/components/shared/file-icon/FileIcon.js +20 -22
  275. package/es/components/shared/file-tabs/FileTab.js +28 -41
  276. package/es/components/shared/file-tabs/FileTab.styled.js +26 -22
  277. package/es/components/shared/file-tabs/FileTabs.js +52 -48
  278. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  279. package/es/components/shared/file-tabs/util.js +29 -18
  280. package/es/components/shared/file-tree/FileTree.js +3 -5
  281. package/es/components/shared/file-tree/FileTreeConfig.js +21 -22
  282. package/es/components/shared/file-tree/FileTreeList.js +31 -39
  283. package/es/components/shared/file-tree/FileTreeListItemContent.js +67 -85
  284. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
  285. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +74 -100
  286. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  287. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +48 -85
  288. package/es/components/shared/file-tree/FileTreeListItems.js +147 -152
  289. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  290. package/es/components/shared/file-tree/FileTreeToolbar.js +24 -37
  291. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  292. package/es/components/shared/file-tree/context/FileTreeContext.js +91 -97
  293. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
  294. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
  295. package/es/components/shared/file-tree/utils/fileTreeInput.js +0 -1
  296. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  297. package/es/components/shared/file-tree/utils/fileTreePath.js +5 -7
  298. package/es/components/shared/file-viewer/FileViewer.js +52 -53
  299. package/es/components/shared/file-viewer/FileViewerCsv.js +141 -99
  300. package/es/components/shared/file-viewer/FileViewerImage.js +3 -6
  301. package/es/components/shared/file-viewer/FileViewerIpynb.js +16 -12
  302. package/es/components/shared/file-viewer/FileViewerNonViewable.js +22 -30
  303. package/es/components/shared/file-viewer/FileViewerText.js +18 -13
  304. package/es/components/shared/material-modal/MaterialModal.js +7 -11
  305. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  306. package/es/components/shared/monaco-editor/MonacoEditor.js +119 -147
  307. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +6 -4
  308. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +45 -56
  309. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +73 -82
  310. package/es/components/shared/monaco-editor/constants/grammars/index.js +131 -52
  311. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
  312. package/es/components/shared/monaco-editor/constants/themes/index.js +80 -32
  313. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  314. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
  315. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  316. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
  317. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
  318. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
  319. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +33 -11
  320. package/es/components/shared/monaco-editor/editor-languages/css/index.js +2 -5
  321. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +33 -11
  322. package/es/components/shared/monaco-editor/editor-languages/html/index.js +2 -5
  323. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  324. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +0 -1
  325. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +0 -1
  326. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +0 -1
  327. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +33 -11
  328. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -16
  329. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
  330. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
  331. package/es/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
  332. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
  333. package/es/components/shared/monaco-editor/utils/grammar/index.js +67 -31
  334. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
  335. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
  336. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
  337. package/es/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
  338. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -3
  339. package/es/components/shared/monaco-editor/utils/prettier/index.js +27 -8
  340. package/es/components/shared/monaco-editor/utils/theme/convert.js +20 -26
  341. package/es/components/shared/monaco-editor/utils/theme/index.js +22 -5
  342. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
  343. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
  344. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
  345. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
  346. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
  347. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  348. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
  349. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
  350. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +219 -330
  351. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
  352. package/es/components/shared/no-vnc/NoVnc.js +89 -88
  353. package/es/components/shared/no-vnc/NoVncLazy.js +4 -2
  354. package/es/components/shared/preview-container/PreviewContainer.js +7 -10
  355. package/es/components/shared/web-browser/WebBrowser.js +49 -56
  356. package/es/components/shared/xterm/Xterm.js +107 -102
  357. package/es/components/shared/xterm/XtermLazy.js +4 -2
  358. package/es/constants/arduino.js +10 -10
  359. package/es/constants/shortcutKeyMap.js +3 -5
  360. package/es/constants/stylesheets.js +7 -10
  361. package/es/hooks/useArduino.js +327 -255
  362. package/es/hooks/useExerciseFile.js +24 -24
  363. package/es/hooks/useExericseShortcut.js +6 -5
  364. package/es/hooks/useMaterialExerciseFileUrl.js +55 -38
  365. package/es/hooks/useRunnerRoomWebSocket.js +58 -56
  366. package/es/hooks/useStdioTextConcator.js +18 -12
  367. package/es/hooks/useStdioWebSocket.js +41 -67
  368. package/es/hooks/useUsercodeEditWebSocket.js +230 -252
  369. package/es/hooks/useUsercodeHistory.js +122 -83
  370. package/es/utils/arduino.js +23 -25
  371. package/es/utils/exerciseFile.js +8 -16
  372. package/es/utils/runner.js +29 -25
  373. package/package.json +8 -8
@@ -1,3 +1,4 @@
1
+ import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, createForOfIteratorHelper as _createForOfIteratorHelper, typeof as _typeof } from '../../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import React from 'react';
2
3
  import { getOrgMaterialExerciseExerciseImageExerciseFileGet } from '@elice/api-client';
3
4
  import { Flex } from '@elice/blocks';
@@ -16,7 +17,7 @@ import 'monaco-editor/esm/vs/editor/editor.api';
16
17
  import '../../shared/monaco-editor/constants/monaco/preferences.js';
17
18
  import 'react-use';
18
19
  import 'socket.io-client';
19
- import { exerciseState, exerciseRoomState, exerciseLectureState, exerciseEditorPreferenceState, exerciseActiveFilenameState, exerciseWebsocketQuery, exerciseFileEditorCursorState, exerciseFileEditorCursorSelectionValueState, exerciseMonacoEditorValueState } from '../context/recoil.js';
20
+ import { exerciseState, exerciseRoomState, exerciseLectureState, exerciseEditorPreferenceState, exerciseActiveFilenameState, exerciseWebsocketQuery, exerciseFileEditorCursorState, exerciseFileEditorCursorSelectionValueState, exerciseMonacoEditorApisState } from '../context/recoil.js';
20
21
  import { ExerciseContext } from '../context/context.js';
21
22
  import '../context/recoilTypes.js';
22
23
  import { exerciseFileEditorContentChange$, exerciseFileEditorSaveAction$ } from '../context/subjects.js';
@@ -32,99 +33,129 @@ import ExerciseFileReadOnlyBanner from './ExerciseFileReadOnlyBanner.js';
32
33
 
33
34
  //
34
35
  //
35
-
36
+ //
36
37
  /**
37
38
  * Exercise file (code) editor for editable files
38
39
  */
39
-
40
- const ExerciseFileEditor = () => {
41
- const {
42
- materialExerciseId,
43
- exerciseRoomId,
44
- readOnlyEditor,
45
- readOnlyActiveFile,
46
- locale
47
- } = React.useContext(ExerciseContext);
48
- const exercise = useRecoilValue(exerciseState(materialExerciseId));
49
- const exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
50
- const lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
51
- const preference = useRecoilValue(exerciseEditorPreferenceState);
52
- const activeFilename = useRecoilValue(exerciseActiveFilenameState);
53
- const readOnly = readOnlyEditor || readOnlyActiveFile;
54
- const setUsercodeWebSocketState = useSetRecoilState(exerciseWebsocketQuery('usercodeEdit'));
55
- const setFileEditorCursorState = useSetRecoilState(exerciseFileEditorCursorState);
56
- const setFileEditorCursorSelectionValueState = useSetRecoilState(exerciseFileEditorCursorSelectionValueState);
57
- const setExerciseMonacoEditorValueState = useSetRecoilState(exerciseMonacoEditorValueState); // editor
58
-
59
- const editorApis = React.useRef(null);
60
- const editorDocHistories = React.useRef({});
61
- const serverInitiatedVersions = React.useRef([]); // ready state
62
-
63
- const [isEditorReady, setEditorReady] = React.useState(false);
64
- const [isWebSocketReady, setWebSocketReady] = React.useState(false);
65
- const isReady = isEditorReady && isWebSocketReady;
66
- const [isFileResettable, setFileResettable] = React.useState(checkExerciseFileResettable(activeFilename, {
67
- exercise,
68
- exerciseRoom
69
- }));
40
+ var ExerciseFileEditor = function ExerciseFileEditor() {
41
+ var _React$useContext = React.useContext(ExerciseContext),
42
+ materialExerciseId = _React$useContext.materialExerciseId,
43
+ exerciseRoomId = _React$useContext.exerciseRoomId,
44
+ readOnlyEditor = _React$useContext.readOnlyEditor,
45
+ readOnlyActiveFile = _React$useContext.readOnlyActiveFile,
46
+ locale = _React$useContext.locale;
47
+ var exercise = useRecoilValue(exerciseState(materialExerciseId));
48
+ var exerciseRoom = useRecoilValue(exerciseRoomState(exerciseRoomId));
49
+ var lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
50
+ var preference = useRecoilValue(exerciseEditorPreferenceState);
51
+ var activeFilename = useRecoilValue(exerciseActiveFilenameState);
52
+ var readOnly = readOnlyEditor || readOnlyActiveFile;
53
+ var setUsercodeWebSocketState = useSetRecoilState(exerciseWebsocketQuery('usercodeEdit'));
54
+ var setFileEditorCursorState = useSetRecoilState(exerciseFileEditorCursorState);
55
+ var setFileEditorCursorSelectionValueState = useSetRecoilState(exerciseFileEditorCursorSelectionValueState);
56
+ // editor
57
+ var editorApis = React.useRef(null);
58
+ var editorDocHistories = React.useRef({});
59
+ var serverInitiatedVersions = React.useRef([]);
60
+ // ready state
61
+ var _React$useState = React.useState(false),
62
+ _React$useState2 = _slicedToArray(_React$useState, 2),
63
+ isEditorReady = _React$useState2[0],
64
+ setEditorReady = _React$useState2[1];
65
+ var _React$useState3 = React.useState(false),
66
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
67
+ isWebSocketReady = _React$useState4[0],
68
+ setWebSocketReady = _React$useState4[1];
69
+ var isReady = isEditorReady && isWebSocketReady;
70
+ var _React$useState5 = React.useState(checkExerciseFileResettable(activeFilename, {
71
+ exercise: exercise,
72
+ exerciseRoom: exerciseRoom
73
+ })),
74
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
75
+ isFileResettable = _React$useState6[0],
76
+ setFileResettable = _React$useState6[1];
77
+ var setExerciseMonacoEditorApisState = useSetRecoilState(exerciseMonacoEditorApisState);
78
+ React.useEffect(function () {
79
+ if (editorApis.current) {
80
+ setExerciseMonacoEditorApisState(editorApis.current);
81
+ }
82
+ // eslint-disable-next-line react-hooks/exhaustive-deps
83
+ }, [editorApis.current]);
70
84
  /**
71
85
  * Set value of current file.
72
86
  */
73
-
74
- const setValue = async content => {
75
- var _a;
76
-
77
- if (!isFileResettable) {
78
- console.warn('Cannot reset file since not resettable.');
79
- return;
80
- }
81
-
82
- if (!activeFilename) {
83
- console.warn('Cannot reset file since no file selected.');
84
- return;
85
- }
86
-
87
- if (content) {
88
- setExerciseMonacoEditorValueState(content);
89
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
90
- } // reset as initial value on `null` received.
91
- else if (content === null) {
92
- const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
93
-
94
- if (!editorApis.current || !readyExerciseImage) {
95
- return;
96
- }
97
-
98
- return getOrgMaterialExerciseExerciseImageExerciseFileGet({
99
- exerciseImageId: readyExerciseImage.id,
100
- filename: activeFilename
101
- }).then(res => res.exerciseFile.content).then(content => {
102
- var _a;
103
-
104
- if (typeof content === 'string') {
105
- setExerciseMonacoEditorValueState(content);
106
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
107
- } else {
108
- setFileResettable(false);
87
+ var setValue = /*#__PURE__*/function () {
88
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(content) {
89
+ var _a, readyExerciseImage;
90
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
91
+ while (1) switch (_context.prev = _context.next) {
92
+ case 0:
93
+ if (isFileResettable) {
94
+ _context.next = 3;
95
+ break;
96
+ }
97
+ console.warn('Cannot reset file since not resettable.');
98
+ return _context.abrupt("return");
99
+ case 3:
100
+ if (activeFilename) {
101
+ _context.next = 6;
102
+ break;
103
+ }
104
+ console.warn('Cannot reset file since no file selected.');
105
+ return _context.abrupt("return");
106
+ case 6:
107
+ if (!content) {
108
+ _context.next = 10;
109
+ break;
110
+ }
111
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
112
+ _context.next = 15;
113
+ break;
114
+ case 10:
115
+ if (!(content === null)) {
116
+ _context.next = 15;
117
+ break;
118
+ }
119
+ readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
120
+ if (!(!editorApis.current || !readyExerciseImage)) {
121
+ _context.next = 14;
122
+ break;
123
+ }
124
+ return _context.abrupt("return");
125
+ case 14:
126
+ return _context.abrupt("return", getOrgMaterialExerciseExerciseImageExerciseFileGet({
127
+ exerciseImageId: readyExerciseImage.id,
128
+ filename: activeFilename
129
+ }).then(function (res) {
130
+ return res.exerciseFile.content;
131
+ }).then(function (content) {
132
+ var _a;
133
+ if (typeof content === 'string') {
134
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
135
+ } else {
136
+ setFileResettable(false);
137
+ }
138
+ }));
139
+ case 15:
140
+ case "end":
141
+ return _context.stop();
109
142
  }
110
- });
111
- }
112
- };
143
+ }, _callee);
144
+ }));
145
+ return function setValue(_x) {
146
+ return _ref.apply(this, arguments);
147
+ };
148
+ }();
113
149
  /**
114
150
  * Update editor document history.
115
151
  */
116
-
117
-
118
- const pushEditorDocHistories = () => {
119
- const _editorApis = editorApis.current;
120
-
152
+ var pushEditorDocHistories = function pushEditorDocHistories() {
153
+ var _editorApis = editorApis.current;
121
154
  if (!_editorApis) {
122
155
  return;
123
156
  }
124
-
125
157
  if (typeof _editorApis.getMonacoModel === 'function') {
126
- const model = _editorApis.getMonacoModel();
127
-
158
+ var model = _editorApis.getMonacoModel();
128
159
  if (model) {
129
160
  editorDocHistories.current[model.getVersionId()] = model.getValue();
130
161
  }
@@ -134,196 +165,190 @@ const ExerciseFileEditor = () => {
134
165
  * Handle usercode edit websocket received `WRITE_NOTI` message,
135
166
  * move cursor or insert / delete content.
136
167
  */
137
-
138
-
139
- const handleWebsocketUsercodeWriteNoti = ots => {
168
+ var handleWebsocketUsercodeWriteNoti = function handleWebsocketUsercodeWriteNoti(ots) {
140
169
  var _a, _b, _c;
141
-
142
- let cursor = 0;
143
-
144
- for (const ot of ots) {
145
- const model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
146
-
147
- if (!model) {
148
- continue;
149
- } // remove previous versions.
150
-
151
-
152
- if (serverInitiatedVersions.current.length > 100) {
153
- serverInitiatedVersions.current.splice(0, 50);
154
- }
155
-
156
- switch (typeof ot) {
157
- // cursor changed...
158
- case 'number':
159
- cursor += ot;
160
- break;
161
- // insertion
162
-
163
- case 'string':
164
- serverInitiatedVersions.current.push(model.getVersionId());
165
- (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
166
- cursor += ot.length;
167
- break;
168
- // deletion
169
-
170
- default:
171
- serverInitiatedVersions.current.push(model.getVersionId());
172
- (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
173
- break;
170
+ var cursor = 0;
171
+ var _iterator = _createForOfIteratorHelper(ots),
172
+ _step;
173
+ try {
174
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
175
+ var ot = _step.value;
176
+ var model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
177
+ if (!model) {
178
+ continue;
179
+ }
180
+ // remove previous versions.
181
+ if (serverInitiatedVersions.current.length > 100) {
182
+ serverInitiatedVersions.current.splice(0, 50);
183
+ }
184
+ switch (_typeof(ot)) {
185
+ // cursor changed...
186
+ case 'number':
187
+ cursor += ot;
188
+ break;
189
+ // insertion
190
+ case 'string':
191
+ serverInitiatedVersions.current.push(model.getVersionId());
192
+ (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
193
+ cursor += ot.length;
194
+ break;
195
+ // deletion
196
+ default:
197
+ serverInitiatedVersions.current.push(model.getVersionId());
198
+ (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
199
+ break;
200
+ }
174
201
  }
202
+ } catch (err) {
203
+ _iterator.e(err);
204
+ } finally {
205
+ _iterator.f();
175
206
  }
176
207
  };
177
208
  /**
178
209
  * Usercode edit web socket.
179
210
  */
180
-
181
-
182
- const wsUsercode = useUsercodeEditWebSocket({
183
- exerciseRoomId,
211
+ var wsUsercode = useUsercodeEditWebSocket({
212
+ exerciseRoomId: exerciseRoomId,
184
213
  filename: activeFilename,
185
- onInit: () => setWebSocketReady(true),
214
+ onInit: function onInit() {
215
+ return setWebSocketReady(true);
216
+ },
186
217
  onWriteNoti: handleWebsocketUsercodeWriteNoti
187
218
  });
188
219
  /**
189
220
  *
190
221
  */
191
-
192
- const handleChange = e => {
193
- const index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
194
-
222
+ var handleChange = function handleChange(e) {
223
+ var index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
195
224
  if (index !== -1) {
196
225
  serverInitiatedVersions.current.splice(index, 1);
197
226
  return;
198
- } // get previous model doc
199
-
200
-
201
- const prevDoc = editorDocHistories.current[e.versionId - 1]; // send OTs to server
202
-
203
- for (const change of e.changes) {
204
- // insertion
205
- if (change.rangeLength === 0 && !readOnly) {
206
- wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
207
- } // deletion
208
- else {
209
- if (prevDoc && !readOnly) {
210
- wsUsercode.sendOTs([change.rangeOffset || null, {
211
- d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
212
- }].filter(Boolean));
213
- } // replace
214
-
215
-
216
- if (change.text.length > 0 && !readOnly) {
227
+ }
228
+ // get previous model doc
229
+ var prevDoc = editorDocHistories.current[e.versionId - 1];
230
+ // send OTs to server
231
+ var _iterator2 = _createForOfIteratorHelper(e.changes),
232
+ _step2;
233
+ try {
234
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
235
+ var change = _step2.value;
236
+ // insertion
237
+ if (change.rangeLength === 0 && !readOnly) {
217
238
  wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
218
239
  }
240
+ // deletion
241
+ else {
242
+ if (prevDoc && !readOnly) {
243
+ wsUsercode.sendOTs([change.rangeOffset || null, {
244
+ d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
245
+ }].filter(Boolean));
246
+ }
247
+ // replace
248
+ if (change.text.length > 0 && !readOnly) {
249
+ wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
250
+ }
251
+ }
219
252
  }
253
+ } catch (err) {
254
+ _iterator2.e(err);
255
+ } finally {
256
+ _iterator2.f();
220
257
  }
221
-
222
258
  delete editorDocHistories.current[e.versionId - 1];
223
259
  };
224
260
  /**
225
261
  * Handle editor cursor change.
226
262
  */
227
-
228
-
229
- const handleEditorCursor = range => {
263
+ var handleEditorCursor = function handleEditorCursor(range) {
230
264
  var _a, _b;
231
-
232
265
  if (!readOnly) {
233
266
  wsUsercode.sendCursor(range);
234
267
  }
235
-
236
268
  setFileEditorCursorState(range);
237
269
  setFileEditorCursorSelectionValueState((_b = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getValueInRange(range.from, range.to)) !== null && _b !== void 0 ? _b : '');
238
270
  };
239
271
  /**
240
272
  * Handle editor save shortcut emitted.
241
273
  */
242
-
243
-
244
- const handleSave = () => {
274
+ var handleSave = function handleSave() {
245
275
  exerciseFileEditorSaveAction$.next();
246
- }; //
276
+ };
277
+ //
247
278
  // Handle editor content change.
248
279
  //
249
-
250
-
251
- React.useEffect(() => {
280
+ React.useEffect(function () {
252
281
  var _a, _b;
253
-
254
- const _editorApis = editorApis.current;
255
-
282
+ var _editorApis = editorApis.current;
256
283
  if (!_editorApis || !isReady) {
257
284
  return;
258
285
  }
259
-
260
- setExerciseMonacoEditorValueState(wsUsercode.doc);
261
-
262
286
  _editorApis.setValue(wsUsercode.doc);
263
-
264
287
  pushEditorDocHistories();
265
- let subscription = undefined;
266
-
288
+ var subscription = undefined;
267
289
  if (FlutterApp.checkWebview()) {
268
- subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(e => {
290
+ subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(function (e) {
269
291
  pushEditorDocHistories();
270
292
  handleChange(e);
271
293
  FlutterApp.onDidChangeContent();
272
294
  });
273
295
  } else {
274
- subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(e => {
296
+ subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(function (e) {
275
297
  pushEditorDocHistories();
276
298
  handleChange(e);
277
299
  });
278
300
  }
279
-
280
- return () => {
301
+ return function () {
281
302
  if (subscription) {
282
303
  subscription.dispose();
283
304
  }
284
305
  };
285
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
286
- [isReady, readOnly]); //
306
+ },
307
+ // eslint-disable-next-line react-hooks/exhaustive-deps
308
+ [isReady, readOnly]);
309
+ //
287
310
  // Handle websocket status change.
288
311
  //
289
-
290
- React.useEffect(() => setUsercodeWebSocketState(wsUsercode.readyState), // eslint-disable-next-line react-hooks/exhaustive-deps
291
- [wsUsercode.readyState]); //
312
+ React.useEffect(function () {
313
+ return setUsercodeWebSocketState(wsUsercode.readyState);
314
+ },
315
+ // eslint-disable-next-line react-hooks/exhaustive-deps
316
+ [wsUsercode.readyState]);
317
+ //
292
318
  // handle content change request to code editor.
293
319
  //
294
-
295
- React.useEffect(() => {
296
- const contentChangeSub = exerciseFileEditorContentChange$.subscribe(v => {
297
- setValue(v).catch(() => void 0);
320
+ React.useEffect(function () {
321
+ var contentChangeSub = exerciseFileEditorContentChange$.subscribe(function (v) {
322
+ setValue(v).catch(function () {
323
+ return void 0;
324
+ });
298
325
  });
299
- return () => {
326
+ return function () {
300
327
  contentChangeSub.unsubscribe();
301
328
  };
302
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
303
- []); //
329
+ },
330
+ // eslint-disable-next-line react-hooks/exhaustive-deps
331
+ []);
332
+ //
304
333
  //
305
334
  //
306
335
  // empty file
307
-
308
336
  if (!activeFilename) {
309
337
  return React.createElement(ExerciseFileShimmer, null);
310
- } // non-editable file
311
-
312
-
338
+ }
339
+ // non-editable file
313
340
  if (!wsUsercode.docEditable) {
314
341
  return React.createElement(FileViewerNonViewable, {
315
342
  filename: activeFilename,
316
343
  locale: locale
317
344
  });
318
- } // websocket not ready
319
-
320
-
345
+ }
346
+ // websocket not ready
321
347
  if (!isWebSocketReady) {
322
348
  return React.createElement(ExerciseFileShimmer, null);
323
349
  }
324
-
325
- const uniqueFilePath = `code/${exerciseRoomId}`;
326
- const editorFilename = `${uniqueFilePath}/${activeFilename}`;
350
+ var uniqueFilePath = "code/".concat(exerciseRoomId);
351
+ var editorFilename = "".concat(uniqueFilePath, "/").concat(activeFilename);
327
352
  return React.createElement(Flex, {
328
353
  column: true,
329
354
  width: "100%",
@@ -334,15 +359,17 @@ const ExerciseFileEditor = () => {
334
359
  filename: editorFilename,
335
360
  markers: wsUsercode.markers,
336
361
  preference: Object.assign(Object.assign({}, preference), {
337
- readOnly
362
+ readOnly: readOnly
338
363
  }),
339
364
  noLanguageIntellisense: (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === enums.LectureType.Test,
340
365
  locale: locale,
341
- onLoad: () => setEditorReady(true),
366
+ onLoad: function onLoad() {
367
+ return setEditorReady(true);
368
+ },
342
369
  onCursor: handleEditorCursor,
343
370
  onSave: handleSave,
344
371
  ref: editorApis
345
372
  }));
346
- }; //
373
+ };
347
374
 
348
375
  export { ExerciseFileEditor as default };
@@ -9,28 +9,24 @@ import '../context/recoilTypes.js';
9
9
  import '../context/subjects.js';
10
10
  import '../context/ExerciseProvider.js';
11
11
 
12
- const StyledEditorReadOnlyBanner = styled.div.withConfig({
12
+ var StyledEditorReadOnlyBanner = styled.div.withConfig({
13
13
  componentId: "sc-kh9iw2-0"
14
14
  })(["flex:0 0 auto;display:flex;align-items:center;margin:0.75rem;padding:0 1rem;height:2rem;border:1px solid ", ";border-radius:2px;"], base.color.navy5);
15
15
  /**
16
16
  * Banner for readonly exercise file.
17
17
  */
18
-
19
- const ExerciseFileReadOnlyBanner = () => {
20
- const {
21
- readOnlyActiveFile
22
- } = React.useContext(ExerciseContext);
23
-
18
+ var ExerciseFileReadOnlyBanner = function ExerciseFileReadOnlyBanner() {
19
+ var _React$useContext = React.useContext(ExerciseContext),
20
+ readOnlyActiveFile = _React$useContext.readOnlyActiveFile;
24
21
  if (!readOnlyActiveFile) {
25
22
  return null;
26
23
  }
27
-
28
24
  return React.createElement(StyledEditorReadOnlyBanner, null, React.createElement(Text, {
29
25
  size: "tiny",
30
26
  role: "gray3"
31
27
  }, React.createElement(FormattedMessage, {
32
28
  id: "[\uC77D\uAE30\uC804\uC6A9] \uC774 \uD30C\uC77C\uC740 \uC77D\uAE30\uC804\uC6A9 \uC785\uB2C8\uB2E4."
33
29
  })));
34
- }; //
30
+ };
35
31
 
36
32
  export { ExerciseFileReadOnlyBanner as default };