@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,3 +1,4 @@
1
+ import { slicedToArray as _slicedToArray, defineProperty as _defineProperty, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime } from '../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useRef, useState, useMemo, useCallback, useEffect } from 'react';
2
3
  import { useDeepCompareEffect } from 'react-use';
3
4
  import { config, getOrgUserGet, postOrgMaterialExerciseUsercodeEdit } from '@elice/api-client';
@@ -11,86 +12,101 @@ import { uniCount, uniToStrPos } from 'unicount';
11
12
 
12
13
  //
13
14
  //
14
-
15
- const MAX_WRITE_FAIL_COUNT = 5;
15
+ //
16
+ var MAX_WRITE_FAIL_COUNT = 5;
16
17
  /**
17
18
  *
18
19
  */
19
-
20
- const useUsercodeEditWebSocket = ({
21
- exerciseRoomId,
22
- filename,
23
- onInit,
24
- onWriteNoti
25
- }) => {
26
- const _return = useRef({});
27
-
28
- const {
29
- apiWsOriginUrl
30
- } = useMaterialConfig();
31
- const isReady = useMaterialConfigApiClientUpdate(config.init);
32
- const websocket = useRef(null);
33
- const [websocketReadyState, setWebSocketReadyState] = useState(EliceWebSocket.CLOSED);
34
- const [doc, setDoc] = useState('');
35
- const [docEditable, setDocEditable] = useState(true);
36
-
37
- const _doc = useRef('');
38
-
39
- const [clients, setClients] = useState({});
40
- const [cursors, setCursors] = useState({});
41
- const myself = useRef(null);
42
- const version = useRef(-1);
43
- const otsBuffer = useRef([]);
44
- const writeIndex = useRef(0);
45
- const writeFailCount = useRef(0);
46
- const [_monkeyAgent, _setMonkeyAgent] = useState(0);
47
- const [_numMonkeyJumped, setNumMonkeyJumped] = useState(0); //
20
+ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
21
+ var exerciseRoomId = _ref.exerciseRoomId,
22
+ filename = _ref.filename,
23
+ onInit = _ref.onInit,
24
+ onWriteNoti = _ref.onWriteNoti;
25
+ var _return = useRef({});
26
+ var _useMaterialConfig = useMaterialConfig(),
27
+ apiWsOriginUrl = _useMaterialConfig.apiWsOriginUrl;
28
+ var isReady = useMaterialConfigApiClientUpdate(config.init);
29
+ var websocket = useRef(null);
30
+ var _useState = useState(EliceWebSocket.CLOSED),
31
+ _useState2 = _slicedToArray(_useState, 2),
32
+ websocketReadyState = _useState2[0],
33
+ setWebSocketReadyState = _useState2[1];
34
+ var _useState3 = useState(''),
35
+ _useState4 = _slicedToArray(_useState3, 2),
36
+ doc = _useState4[0],
37
+ setDoc = _useState4[1];
38
+ var _useState5 = useState(true),
39
+ _useState6 = _slicedToArray(_useState5, 2),
40
+ docEditable = _useState6[0],
41
+ setDocEditable = _useState6[1];
42
+ var _doc = useRef('');
43
+ var _useState7 = useState({}),
44
+ _useState8 = _slicedToArray(_useState7, 2),
45
+ clients = _useState8[0],
46
+ setClients = _useState8[1];
47
+ var _useState9 = useState({}),
48
+ _useState10 = _slicedToArray(_useState9, 2),
49
+ cursors = _useState10[0],
50
+ setCursors = _useState10[1];
51
+ var myself = useRef(null);
52
+ var version = useRef(-1);
53
+ var otsBuffer = useRef([]);
54
+ var writeIndex = useRef(0);
55
+ var writeFailCount = useRef(0);
56
+ var _useState11 = useState(0),
57
+ _useState12 = _slicedToArray(_useState11, 2),
58
+ _monkeyAgent = _useState12[0],
59
+ _setMonkeyAgent = _useState12[1];
60
+ var _useState13 = useState(0),
61
+ _useState14 = _slicedToArray(_useState13, 2),
62
+ _numMonkeyJumped = _useState14[0],
63
+ setNumMonkeyJumped = _useState14[1];
64
+ //
48
65
  // =============== clients and markers ===============
49
66
  //
50
-
51
67
  /**
52
68
  * Markers.
53
69
  */
54
-
55
- const markers = useMemo(() => Object.entries(cursors).filter(([userAccesskey]) => Boolean(clients[userAccesskey])).map(([userAccesskey, cursor]) => {
56
- const client = clients[userAccesskey];
57
- return Object.assign(Object.assign(Object.assign({}, client), cursor), {
58
- fullname: client.fullname || `User ${client.id}`,
59
- email: client.email || 'none'
70
+ var markers = useMemo(function () {
71
+ return Object.entries(cursors).filter(function (_ref2) {
72
+ var _ref3 = _slicedToArray(_ref2, 1),
73
+ userAccesskey = _ref3[0];
74
+ return Boolean(clients[userAccesskey]);
75
+ }).map(function (_ref4) {
76
+ var _ref5 = _slicedToArray(_ref4, 2),
77
+ userAccesskey = _ref5[0],
78
+ cursor = _ref5[1];
79
+ var client = clients[userAccesskey];
80
+ return Object.assign(Object.assign(Object.assign({}, client), cursor), {
81
+ fullname: client.fullname || "User ".concat(client.id),
82
+ email: client.email || 'none'
83
+ });
60
84
  });
61
- }), [clients, cursors]);
85
+ }, [clients, cursors]);
62
86
  /**
63
87
  * Update client to list.
64
88
  */
65
-
66
- const updateClient = (userAccesskey, userId) => {
89
+ var updateClient = function updateClient(userAccesskey, userId) {
67
90
  var _a;
68
-
69
91
  if (userAccesskey === ((_a = myself.current) === null || _a === void 0 ? void 0 : _a.accesskey)) {
70
92
  return;
71
93
  }
72
-
73
- setClients(prev => {
94
+ setClients(function (prev) {
74
95
  if (prev[userAccesskey]) {
75
96
  return prev;
76
97
  }
77
-
78
- return Object.assign(Object.assign({}, prev), {
79
- [userAccesskey]: {
80
- id: userId,
81
- accesskey: userAccesskey
82
- }
83
- });
98
+ return Object.assign(Object.assign({}, prev), _defineProperty({}, userAccesskey, {
99
+ id: userId,
100
+ accesskey: userAccesskey
101
+ }));
84
102
  });
85
103
  };
86
104
  /**
87
105
  * Remove client from list.
88
106
  */
89
-
90
-
91
- const removeClient = userAccesskey => {
92
- setClients(prev => {
93
- const next = Object.assign({}, prev);
107
+ var removeClient = function removeClient(userAccesskey) {
108
+ setClients(function (prev) {
109
+ var next = Object.assign({}, prev);
94
110
  delete next[userAccesskey];
95
111
  return next;
96
112
  });
@@ -98,75 +114,87 @@ const useUsercodeEditWebSocket = ({
98
114
  /**
99
115
  *
100
116
  */
101
-
102
-
103
- const updateCursor = (userAccesskey, cursor) => {
117
+ var updateCursor = function updateCursor(userAccesskey, cursor) {
104
118
  var _a;
105
-
106
119
  if (userAccesskey === ((_a = myself.current) === null || _a === void 0 ? void 0 : _a.accesskey)) {
107
120
  return;
108
121
  }
109
-
110
- setCursors(prev => Object.assign(Object.assign({}, prev), {
111
- [userAccesskey]: cursor
112
- }));
122
+ setCursors(function (prev) {
123
+ return Object.assign(Object.assign({}, prev), _defineProperty({}, userAccesskey, cursor));
124
+ });
113
125
  };
114
126
  /**
115
127
  *
116
128
  */
117
-
118
-
119
- const updateCursorFromOts = ots => {
120
- setCursors(Object.entries(cursors).map(([userAccesskey, cursor]) => ({
121
- [userAccesskey]: {
129
+ var updateCursorFromOts = function updateCursorFromOts(ots) {
130
+ setCursors(Object.entries(cursors).map(function (_ref6) {
131
+ var _ref7 = _slicedToArray(_ref6, 2),
132
+ userAccesskey = _ref7[0],
133
+ cursor = _ref7[1];
134
+ return _defineProperty({}, userAccesskey, {
122
135
  from: type.transformSelection(cursor.from, ots),
123
136
  to: type.transformSelection(cursor.to, ots)
124
- }
125
- })).reduce((prev, next) => Object.assign(Object.assign({}, prev), next), {}));
137
+ });
138
+ }).reduce(function (prev, next) {
139
+ return Object.assign(Object.assign({}, prev), next);
140
+ }, {}));
126
141
  };
127
142
  /**
128
143
  *
129
144
  */
130
-
131
-
132
- const removeCursor = userAccesskey => {
133
- setCursors(prev => {
134
- const next = Object.assign({}, prev);
145
+ var removeCursor = function removeCursor(userAccesskey) {
146
+ setCursors(function (prev) {
147
+ var next = Object.assign({}, prev);
135
148
  delete next[userAccesskey];
136
149
  return next;
137
150
  });
138
- }; //
151
+ };
152
+ //
139
153
  // Fetch client user info, whenever client list changed.
140
154
  //
141
-
142
-
143
- useDeepCompareEffect(() => {
144
- void Promise.all(Object.entries(Object.assign({}, clients)) // only user info not fetched...
145
- .filter(([, client]) => !client.fullname).map(([userAccesskey, client]) => getOrgUserGet({
146
- userId: client.id
147
- }).then(res => res.user).then(user => ({
148
- [userAccesskey]: Object.assign(Object.assign({}, client), {
149
- fullname: user.fullname,
150
- email: user.displayEmail
151
- })
152
- })).catch(() => ({
153
- [userAccesskey]: Object.assign(Object.assign({}, client), {
154
- fullname: `User ${client.id}`
155
- })
156
- })))).then(nextClientArr => nextClientArr.reduce((nextClients, client) => Object.assign(Object.assign({}, nextClients), client), {})).then(nextClients => {
157
- setClients(prev => Object.assign(Object.assign({}, prev), nextClients));
155
+ useDeepCompareEffect(function () {
156
+ void Promise.all(Object.entries(Object.assign({}, clients))
157
+ // only user info not fetched...
158
+ .filter(function (_ref9) {
159
+ var _ref10 = _slicedToArray(_ref9, 2),
160
+ client = _ref10[1];
161
+ return !client.fullname;
162
+ }).map(function (_ref11) {
163
+ var _ref12 = _slicedToArray(_ref11, 2),
164
+ userAccesskey = _ref12[0],
165
+ client = _ref12[1];
166
+ return getOrgUserGet({
167
+ userId: client.id
168
+ }).then(function (res) {
169
+ return res.user;
170
+ }).then(function (user) {
171
+ return _defineProperty({}, userAccesskey, Object.assign(Object.assign({}, client), {
172
+ fullname: user.fullname,
173
+ email: user.displayEmail
174
+ }));
175
+ }).catch(function () {
176
+ return _defineProperty({}, userAccesskey, Object.assign(Object.assign({}, client), {
177
+ fullname: "User ".concat(client.id)
178
+ }));
179
+ });
180
+ })).then(function (nextClientArr) {
181
+ return nextClientArr.reduce(function (nextClients, client) {
182
+ return Object.assign(Object.assign({}, nextClients), client);
183
+ }, {});
184
+ }).then(function (nextClients) {
185
+ setClients(function (prev) {
186
+ return Object.assign(Object.assign({}, prev), nextClients);
187
+ });
158
188
  });
159
- }, [clients]); //
189
+ }, [clients]);
190
+ //
160
191
  // =============== send message ===============
161
192
  //
162
-
163
193
  /**
164
194
  * Send `RESET`.
165
195
  */
166
-
167
- const sendReset = () => {
196
+ var sendReset = function sendReset() {
168
197
  var _a;
169
-
170
198
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
171
199
  type: 'RESET'
172
200
  });
@@ -174,11 +202,8 @@ const useUsercodeEditWebSocket = ({
174
202
  /**
175
203
  * Send `FETCH`.
176
204
  */
177
-
178
-
179
- const sendFetch = useCallback(debounce(() => {
205
+ var sendFetch = useCallback(debounce(function () {
180
206
  var _a;
181
-
182
207
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
183
208
  type: 'FETCH',
184
209
  from: version.current
@@ -187,21 +212,16 @@ const useUsercodeEditWebSocket = ({
187
212
  /**
188
213
  * Send `WRITE`.
189
214
  */
190
-
191
- const sendWrite = useCallback(debounce(() => {
215
+ var sendWrite = useCallback(debounce(function () {
192
216
  var _a;
193
-
194
217
  if (otsBuffer.current.length === 0 || writeIndex.current !== 0) {
195
218
  return;
196
219
  }
197
-
198
220
  writeIndex.current = otsBuffer.current.length;
199
- let ots = otsBuffer.current[0];
200
-
201
- for (let i = 1; i < writeIndex.current; i++) {
221
+ var ots = otsBuffer.current[0];
222
+ for (var i = 1; i < writeIndex.current; i++) {
202
223
  ots = type.compose(ots, otsBuffer.current[i]);
203
224
  }
204
-
205
225
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
206
226
  type: 'WRITE',
207
227
  to: version.current + 1,
@@ -211,13 +231,10 @@ const useUsercodeEditWebSocket = ({
211
231
  /**
212
232
  * Send `CURSOR`.
213
233
  */
214
-
215
- const sendCursor = useCallback(debounce(({
216
- from,
217
- to
218
- }) => {
234
+ var sendCursor = useCallback(debounce(function (_ref15) {
235
+ var from = _ref15.from,
236
+ to = _ref15.to;
219
237
  var _a;
220
-
221
238
  (_a = websocket.current) === null || _a === void 0 ? void 0 : _a.sendJson({
222
239
  type: 'CURSOR',
223
240
  cursor_start: from,
@@ -227,55 +244,46 @@ const useUsercodeEditWebSocket = ({
227
244
  /**
228
245
  * Send OTs.
229
246
  */
230
-
231
- const sendOTs = useCallback(ots => {
247
+ var sendOTs = useCallback(function (ots) {
232
248
  setDoc(type.apply(_doc.current, ots));
233
249
  _doc.current = type.apply(_doc.current, ots);
234
250
  otsBuffer.current.push(ots);
235
251
  sendWrite();
236
- }, [sendWrite]); //
252
+ }, [sendWrite]);
253
+ //
237
254
  // =============== usercode ===============
238
255
  //
239
-
240
256
  /**
241
257
  *
242
258
  */
243
-
244
- const usercodeApply = (newVersion, ots) => {
259
+ var usercodeApply = function usercodeApply(newVersion, ots) {
245
260
  version.current = newVersion;
246
- let conflictOts = [];
247
-
248
- for (let i = 0; i < otsBuffer.current.length; i++) {
261
+ var conflictOts = [];
262
+ for (var i = 0; i < otsBuffer.current.length; i++) {
249
263
  conflictOts = type.compose(conflictOts, otsBuffer.current[i]);
250
264
  }
251
-
252
- const localOts = conflictOts.length > 0 ? type.transform(ots, conflictOts, 'left') : ots;
265
+ var localOts = conflictOts.length > 0 ? type.transform(ots, conflictOts, 'left') : ots;
253
266
  onWriteNoti(localOts, false);
254
267
  setDoc(type.apply(_doc.current, localOts));
255
268
  _doc.current = type.apply(_doc.current, localOts);
256
-
257
269
  if (conflictOts.length > 0) {
258
270
  // update ots buffer
259
- for (let i = 0; i < otsBuffer.current.length - 1; i++) {
260
- otsBuffer.current[i] = [];
271
+ for (var _i = 0; _i < otsBuffer.current.length - 1; _i++) {
272
+ otsBuffer.current[_i] = [];
261
273
  }
262
-
263
274
  otsBuffer.current[otsBuffer.current.length - 1] = type.transform(conflictOts, ots, 'right');
264
275
  }
265
-
266
- sendWrite(); // update display cursors
267
-
276
+ sendWrite();
277
+ // update display cursors
268
278
  updateCursorFromOts(ots);
269
- }; //
279
+ };
280
+ //
270
281
  // =============== websocket ===============
271
282
  //
272
-
273
283
  /**
274
284
  * Websocket on open.
275
285
  */
276
-
277
-
278
- const wsOpen = () => {
286
+ var wsOpen = function wsOpen() {
279
287
  if (websocket.current) {
280
288
  setWebSocketReadyState(websocket.current.readyState);
281
289
  }
@@ -283,11 +291,8 @@ const useUsercodeEditWebSocket = ({
283
291
  /**
284
292
  * Websocket on close.
285
293
  */
286
-
287
-
288
- const wsClose = () => {
294
+ var wsClose = function wsClose() {
289
295
  _stopMonkey();
290
-
291
296
  if (websocket.current) {
292
297
  setWebSocketReadyState(websocket.current.readyState);
293
298
  }
@@ -295,9 +300,7 @@ const useUsercodeEditWebSocket = ({
295
300
  /**
296
301
  * Websocket on error.
297
302
  */
298
-
299
-
300
- const wsError = () => {
303
+ var wsError = function wsError() {
301
304
  if (websocket.current) {
302
305
  setWebSocketReadyState(websocket.current.readyState);
303
306
  }
@@ -305,40 +308,30 @@ const useUsercodeEditWebSocket = ({
305
308
  /**
306
309
  * Websocket on message.
307
310
  */
308
-
309
-
310
- const wsMessage = e => {
311
- const msg = camelizeKeys(e.data);
312
-
311
+ var wsMessage = function wsMessage(e) {
312
+ var msg = camelizeKeys(e.data);
313
313
  switch (msg.type) {
314
314
  case 'INIT':
315
315
  wsMessageInit(msg);
316
316
  break;
317
-
318
317
  case 'ENTER':
319
318
  wsMessageEnter(msg);
320
319
  break;
321
-
322
320
  case 'LEAVE':
323
321
  wsMessageLeave(msg);
324
322
  break;
325
-
326
323
  case 'UPDATE':
327
324
  wsMessageUpdate(msg);
328
325
  break;
329
-
330
326
  case 'WRITE_FAILED':
331
327
  wsMessageWriteFailed();
332
328
  break;
333
-
334
329
  case 'WRITE_SUCCEED':
335
330
  wsMessageWriteSucceed(msg);
336
331
  break;
337
-
338
332
  case 'WRITE_NOTI':
339
333
  wsMessageWriteNoti(msg);
340
334
  break;
341
-
342
335
  case 'CURSOR_NOTI':
343
336
  wsMessageCursorNoti(msg);
344
337
  break;
@@ -347,9 +340,7 @@ const useUsercodeEditWebSocket = ({
347
340
  /**
348
341
  * Websocket on `INIT` message.
349
342
  */
350
-
351
-
352
- const wsMessageInit = msg => {
343
+ var wsMessageInit = function wsMessageInit(msg) {
353
344
  setDocEditable(true);
354
345
  myself.current = {
355
346
  userId: msg.userId,
@@ -358,14 +349,13 @@ const useUsercodeEditWebSocket = ({
358
349
  version.current = msg.version;
359
350
  otsBuffer.current = [];
360
351
  writeIndex.current = 0;
361
- writeFailCount.current = 0; // TODO: set unix mode on both editors.
352
+ writeFailCount.current = 0;
353
+ // TODO: set unix mode on both editors.
362
354
  // editor.getSession().getDocument().setNewLineMode('unix');
363
-
364
- const convertedContent = msg.content.replace(/\r\n/g, '\n');
355
+ var convertedContent = msg.content.replace(/\r\n/g, '\n');
365
356
  setDoc(convertedContent);
366
357
  _doc.current = convertedContent;
367
358
  onInit(convertedContent);
368
-
369
359
  if (msg.content !== convertedContent) {
370
360
  otsBuffer.current.push([{
371
361
  d: msg.content
@@ -377,28 +367,25 @@ const useUsercodeEditWebSocket = ({
377
367
  /**
378
368
  * Websocket on `ENTER` message.
379
369
  */
380
-
381
-
382
- const wsMessageEnter = msg => {
383
- const [userId, userAccesskey] = msg.client;
370
+ var wsMessageEnter = function wsMessageEnter(msg) {
371
+ var _msg$client = _slicedToArray(msg.client, 2),
372
+ userId = _msg$client[0],
373
+ userAccesskey = _msg$client[1];
384
374
  updateClient(userAccesskey, userId);
385
375
  };
386
376
  /**
387
377
  * Websocket on `LEAVE` message.
388
378
  */
389
-
390
-
391
- const wsMessageLeave = msg => {
392
- const [, userAccesskey] = msg.client;
379
+ var wsMessageLeave = function wsMessageLeave(msg) {
380
+ var _msg$client2 = _slicedToArray(msg.client, 2),
381
+ userAccesskey = _msg$client2[1];
393
382
  removeClient(userAccesskey);
394
383
  removeCursor(userAccesskey);
395
384
  };
396
385
  /**
397
386
  * Websocket on `UPDATE` message.
398
387
  */
399
-
400
-
401
- const wsMessageUpdate = msg => {
388
+ var wsMessageUpdate = function wsMessageUpdate(msg) {
402
389
  if (msg.from === version.current) {
403
390
  usercodeApply(msg.version, msg.ots);
404
391
  } else if (msg.from < version.current) {
@@ -408,12 +395,9 @@ const useUsercodeEditWebSocket = ({
408
395
  /**
409
396
  * Websocket on `WRITE_FAILED` message.
410
397
  */
411
-
412
-
413
- const wsMessageWriteFailed = msg => {
398
+ var wsMessageWriteFailed = function wsMessageWriteFailed(msg) {
414
399
  writeIndex.current = 0;
415
400
  writeFailCount.current += 1;
416
-
417
401
  if (MAX_WRITE_FAIL_COUNT < writeFailCount.current) {
418
402
  sendReset();
419
403
  } else {
@@ -423,9 +407,7 @@ const useUsercodeEditWebSocket = ({
423
407
  /**
424
408
  * Websocket on `WRITE_SUCCEED` message.
425
409
  */
426
-
427
-
428
- const wsMessageWriteSucceed = msg => {
410
+ var wsMessageWriteSucceed = function wsMessageWriteSucceed(msg) {
429
411
  version.current = msg.version;
430
412
  otsBuffer.current.splice(0, writeIndex.current);
431
413
  writeIndex.current = 0;
@@ -435,9 +417,7 @@ const useUsercodeEditWebSocket = ({
435
417
  /**
436
418
  * Websocket on `WRITE_NOTI` message.
437
419
  */
438
-
439
-
440
- const wsMessageWriteNoti = msg => {
420
+ var wsMessageWriteNoti = function wsMessageWriteNoti(msg) {
441
421
  if (version.current + 1 === msg.version) {
442
422
  usercodeApply(msg.version, msg.ots);
443
423
  } else if (version.current < msg.version) {
@@ -447,10 +427,10 @@ const useUsercodeEditWebSocket = ({
447
427
  /**
448
428
  * Websocket on `CURSOR_NOTI` message.
449
429
  */
450
-
451
-
452
- const wsMessageCursorNoti = msg => {
453
- const [userId, userAccesskey] = msg.client;
430
+ var wsMessageCursorNoti = function wsMessageCursorNoti(msg) {
431
+ var _msg$client3 = _slicedToArray(msg.client, 2),
432
+ userId = _msg$client3[0],
433
+ userAccesskey = _msg$client3[1];
454
434
  updateClient(userAccesskey, userId);
455
435
  updateCursor(userAccesskey, {
456
436
  from: msg.cursorStart,
@@ -460,73 +440,77 @@ const useUsercodeEditWebSocket = ({
460
440
  /**
461
441
  * Create usercode websocket url.
462
442
  */
463
-
464
-
465
- const createUsercodeUrl = useCallback(async () => {
466
- if (!filename) {
467
- throw new Error('filename is not defined');
468
- }
469
-
470
- const url = `${apiWsOriginUrl}/usercode_edit`;
471
- return postOrgMaterialExerciseUsercodeEdit({
472
- exerciseRoomId,
473
- filename
474
- }).then(data => `${url}/${data.accesskey}`).catch(err => {
475
- var _a, _b;
476
-
477
- if (((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) === 'non_editable_file') {
478
- setDocEditable(false);
443
+ var createUsercodeUrl = useCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
444
+ var url;
445
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
446
+ while (1) switch (_context.prev = _context.next) {
447
+ case 0:
448
+ if (filename) {
449
+ _context.next = 2;
450
+ break;
451
+ }
452
+ throw new Error('filename is not defined');
453
+ case 2:
454
+ url = "".concat(apiWsOriginUrl, "/usercode_edit");
455
+ return _context.abrupt("return", postOrgMaterialExerciseUsercodeEdit({
456
+ exerciseRoomId: exerciseRoomId,
457
+ filename: filename
458
+ }).then(function (data) {
459
+ return "".concat(url, "/").concat(data.accesskey);
460
+ }).catch(function (err) {
461
+ var _a, _b;
462
+ if (((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) === 'non_editable_file') {
463
+ setDocEditable(false);
464
+ }
465
+ throw new Error(((_b = err.detail) === null || _b === void 0 ? void 0 : _b.failMessage) || err.message);
466
+ }));
467
+ case 4:
468
+ case "end":
469
+ return _context.stop();
479
470
  }
480
-
481
- throw new Error(((_b = err.detail) === null || _b === void 0 ? void 0 : _b.failMessage) || err.message);
482
- });
483
- }, [apiWsOriginUrl, exerciseRoomId, filename]); //
471
+ }, _callee);
472
+ })), [apiWsOriginUrl, exerciseRoomId, filename]);
473
+ //
484
474
  // Initialize websocket.
485
475
  //
486
-
487
- useEffect(() => {
476
+ useEffect(function () {
488
477
  if (!isReady) {
489
478
  return;
490
479
  }
491
-
492
480
  websocket.current = new EliceWebSocket(createUsercodeUrl);
493
481
  websocket.current.onopen = wsOpen;
494
482
  websocket.current.onclose = wsClose;
495
483
  websocket.current.onmessage = wsMessage;
496
484
  websocket.current.onerror = wsError;
497
- return () => {
485
+ return function () {
498
486
  if (websocket.current) {
499
487
  websocket.current.close();
500
488
  }
501
489
  };
502
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
503
- [isReady, createUsercodeUrl]); //
490
+ },
491
+ // eslint-disable-next-line react-hooks/exhaustive-deps
492
+ [isReady, createUsercodeUrl]);
493
+ //
504
494
  // =============== monkey ===============
505
495
  //
506
-
507
496
  /**
508
497
  * Make monkey jump.
509
498
  * @note only for testing
510
499
  */
511
-
512
- const _monkeyAgentDoJump = useCallback(() => {
513
- const getRandomInt = function (max) {
500
+ var _monkeyAgentDoJump = useCallback(function () {
501
+ var getRandomInt = function getRandomInt(max) {
514
502
  return Math.floor(Math.random() * max);
515
503
  };
516
-
517
- const emojis = ['๐Ÿฆ', '๐Ÿ™ˆ', '๐Ÿ™‰', '๐Ÿ™Š', '๐Ÿต', '๐Ÿ’', '๐Ÿฆน๐Ÿผ', '๐Ÿง›๐Ÿพ', '๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'];
518
-
519
- const getRandomEmoji = () => {
504
+ var emojis = ['๐Ÿฆ', '๐Ÿ™ˆ', '๐Ÿ™‰', '๐Ÿ™Š', '๐Ÿต', '๐Ÿ’', '๐Ÿฆน๐Ÿผ', '๐Ÿง›๐Ÿพ', '๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'];
505
+ var getRandomEmoji = function getRandomEmoji() {
520
506
  return emojis[getRandomInt(emojis.length)];
521
507
  };
522
-
523
- const uniTextLength = uniCount(_doc.current);
524
- const uniPos = Math.floor(Math.random() * uniTextLength); // add text
525
-
508
+ var uniTextLength = uniCount(_doc.current);
509
+ var uniPos = Math.floor(Math.random() * uniTextLength);
510
+ // add text
526
511
  if (Math.random() < 0.5) {
527
- const randomNumber = Math.random();
528
- let text = '';
529
-
512
+ var randomNumber = Math.random();
513
+ var text = '';
530
514
  if (randomNumber < 1 / 3) {
531
515
  text = getRandomEmoji();
532
516
  } else if (randomNumber < 2 / 3) {
@@ -534,53 +518,47 @@ const useUsercodeEditWebSocket = ({
534
518
  } else {
535
519
  text = '\n';
536
520
  }
537
-
538
521
  onWriteNoti([uniPos, text], true);
539
- } // delete text
522
+ }
523
+ // delete text
540
524
  else {
541
- let uniTextTo = uniPos + getRandomInt(10);
542
-
525
+ var uniTextTo = uniPos + getRandomInt(10);
543
526
  if (uniTextTo >= uniTextLength) {
544
527
  uniTextTo = uniTextLength - 1;
545
528
  }
546
-
547
529
  if (uniPos) onWriteNoti([uniPos, {
548
530
  d: _doc.current.slice(uniToStrPos(_doc.current, uniPos), uniToStrPos(_doc.current, uniTextTo))
549
531
  }], true);
550
532
  }
551
-
552
- setNumMonkeyJumped(mj => mj + 1);
553
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
533
+ setNumMonkeyJumped(function (mj) {
534
+ return mj + 1;
535
+ });
536
+ },
537
+ // eslint-disable-next-line react-hooks/exhaustive-deps
554
538
  []);
555
539
  /**
556
540
  * Make monkey jump.
557
541
  * @note only for testing
558
542
  */
559
-
560
-
561
- const _startMonkey = useCallback(() => {
543
+ var _startMonkey = useCallback(function () {
562
544
  setNumMonkeyJumped(0);
563
-
564
545
  _setMonkeyAgent(window.setInterval(_monkeyAgentDoJump, 500));
565
- }, // eslint-disable-next-line react-hooks/exhaustive-deps
546
+ },
547
+ // eslint-disable-next-line react-hooks/exhaustive-deps
566
548
  []);
567
549
  /**
568
550
  * Stop monkey jump.
569
551
  * @note only for testing
570
552
  */
571
-
572
-
573
- const _stopMonkey = useCallback(() => {
553
+ var _stopMonkey = useCallback(function () {
574
554
  if (_monkeyAgent) {
575
555
  window.clearInterval(_monkeyAgent);
576
-
577
556
  _setMonkeyAgent(0);
578
557
  }
579
- }, [_monkeyAgent]); //
558
+ }, [_monkeyAgent]);
559
+ //
580
560
  //
581
561
  //
582
-
583
-
584
562
  _return.current.doc = doc;
585
563
  _return.current.docEditable = docEditable;
586
564
  _return.current.readyState = websocketReadyState;