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