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