@elice/material-exercise 1.231227.0 โ†’ 1.240112.0-cloud.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
  2. package/cjs/components/material-exercise/MaterialExercise.js +54 -59
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
  8. package/cjs/components/material-exercise/context/context.js +1 -7
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
  11. package/cjs/components/material-exercise/context/recoil.js +293 -544
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
  13. package/cjs/components/material-exercise/context/subjects.js +3 -5
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
  16. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
  17. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
  18. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
  19. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
  21. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
  24. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
  26. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
  28. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
  30. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
  31. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
  38. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  39. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  40. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
  42. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
  44. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
  45. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
  46. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
  49. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
  51. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
  55. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
  56. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
  57. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
  58. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
  69. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  70. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  71. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
  74. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
  76. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
  77. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
  78. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
  82. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
  83. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
  86. package/cjs/components/shared/file-icon/FileIcon.js +17 -23
  87. package/cjs/components/shared/file-tabs/FileTab.js +30 -36
  88. package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
  89. package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
  90. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
  91. package/cjs/components/shared/file-tabs/util.js +14 -29
  92. package/cjs/components/shared/file-tree/FileTree.js +12 -17
  93. package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
  94. package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
  95. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
  96. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
  97. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
  98. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
  100. package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
  101. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
  102. package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
  103. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
  104. package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
  105. package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
  106. package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
  107. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
  108. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
  109. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
  110. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
  111. package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
  112. package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
  113. package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
  114. package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
  115. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
  116. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
  117. package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
  118. package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
  119. package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
  120. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
  121. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
  122. package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
  123. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
  124. package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
  125. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
  126. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
  127. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
  128. package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
  129. package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
  130. package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
  131. package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
  132. package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
  133. package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
  134. package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
  135. package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
  136. package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
  137. package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
  138. package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
  139. package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
  140. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
  141. package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
  142. package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
  143. package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
  144. package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
  145. package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
  146. package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
  147. package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
  148. package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
  149. package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
  150. package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
  151. package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
  152. package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
  153. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
  154. package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
  155. package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
  156. package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
  157. package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
  158. package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
  159. package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
  160. package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
  161. package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
  162. package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
  163. package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
  164. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
  165. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
  166. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
  167. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
  168. package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
  169. package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
  170. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  171. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
  172. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
  173. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
  174. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
  175. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
  176. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
  177. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
  178. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
  179. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
  180. package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
  181. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
  182. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
  183. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
  184. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
  185. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
  186. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
  187. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
  188. package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
  189. package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
  190. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
  191. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
  192. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
  193. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
  194. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
  195. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
  196. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
  197. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
  198. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
  199. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
  200. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
  201. package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
  202. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
  203. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
  204. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
  205. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
  206. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
  207. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
  208. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
  209. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
  210. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
  211. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
  212. package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
  213. package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
  214. package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
  215. package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
  216. package/cjs/components/shared/xterm/Xterm.js +58 -81
  217. package/cjs/components/shared/xterm/XtermLazy.js +5 -11
  218. package/cjs/components/shared/xterm/locales/en.json.js +1 -1
  219. package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
  220. package/cjs/components/shared/xterm/utils/index.js +0 -2
  221. package/cjs/constants/arduino.js +10 -12
  222. package/cjs/constants/shortcutKeyMap.js +2 -4
  223. package/cjs/constants/stylesheets.js +5 -9
  224. package/cjs/hooks/useArduino.js +141 -284
  225. package/cjs/hooks/useExerciseFile.js +22 -26
  226. package/cjs/hooks/useExericseShortcut.js +4 -8
  227. package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
  228. package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
  229. package/cjs/hooks/useStdioTextConcator.js +10 -22
  230. package/cjs/hooks/useStdioWebSocket.js +28 -34
  231. package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
  232. package/cjs/hooks/useUsercodeHistory.js +63 -117
  233. package/cjs/index.js +4 -6
  234. package/cjs/utils/arduino.js +11 -25
  235. package/cjs/utils/exerciseFile.js +10 -10
  236. package/cjs/utils/runner.js +15 -31
  237. package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
  238. package/es/components/material-exercise/MaterialExercise.js +34 -35
  239. package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
  240. package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
  241. package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
  242. package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
  243. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
  244. package/es/components/material-exercise/context/context.js +1 -1
  245. package/es/components/material-exercise/context/recoil.js +290 -535
  246. package/es/components/material-exercise/context/subjects.js +3 -3
  247. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
  248. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  249. package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
  250. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
  251. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
  252. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
  253. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
  254. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  255. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
  256. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  257. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
  258. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
  259. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
  260. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
  261. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
  262. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
  263. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
  264. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  265. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
  266. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  267. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
  268. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
  269. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
  270. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
  271. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
  272. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
  273. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
  274. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
  275. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
  276. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
  277. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
  278. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  279. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
  280. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
  281. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
  282. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
  283. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
  284. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
  285. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
  286. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
  287. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
  288. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
  289. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  290. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
  291. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
  292. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
  293. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
  294. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
  295. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
  296. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
  297. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
  298. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  299. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
  300. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
  301. package/es/components/shared/file-icon/FileIcon.js +15 -17
  302. package/es/components/shared/file-tabs/FileTab.js +22 -24
  303. package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
  304. package/es/components/shared/file-tabs/FileTabs.js +35 -55
  305. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  306. package/es/components/shared/file-tabs/util.js +14 -27
  307. package/es/components/shared/file-tree/FileTree.js +3 -3
  308. package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
  309. package/es/components/shared/file-tree/FileTreeList.js +33 -29
  310. package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
  311. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
  312. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
  313. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  314. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
  315. package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
  316. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  317. package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
  318. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  319. package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
  320. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
  321. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
  322. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  323. package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
  324. package/es/components/shared/file-viewer/FileViewer.js +21 -38
  325. package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
  326. package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
  327. package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
  328. package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
  329. package/es/components/shared/file-viewer/FileViewerText.js +9 -17
  330. package/es/components/shared/material-modal/MaterialModal.js +8 -7
  331. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  332. package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
  333. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
  334. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
  335. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
  336. package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
  337. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
  338. package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
  339. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
  340. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
  341. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  342. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
  343. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
  344. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
  345. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
  346. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
  347. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  348. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
  349. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
  350. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
  351. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
  352. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
  353. package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
  354. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
  355. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
  356. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
  357. package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
  358. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
  359. package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
  360. package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
  361. package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
  362. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
  363. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
  364. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
  365. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
  366. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
  367. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  368. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
  369. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
  370. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
  371. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
  372. package/es/components/shared/no-vnc/NoVnc.js +42 -59
  373. package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
  374. package/es/components/shared/preview-container/PreviewContainer.js +8 -7
  375. package/es/components/shared/web-browser/WebBrowser.js +29 -40
  376. package/es/components/shared/xterm/Xterm.js +51 -69
  377. package/es/components/shared/xterm/XtermLazy.js +2 -4
  378. package/es/constants/arduino.js +10 -10
  379. package/es/constants/shortcutKeyMap.js +1 -3
  380. package/es/constants/stylesheets.js +5 -7
  381. package/es/hooks/useArduino.js +141 -278
  382. package/es/hooks/useExerciseFile.js +22 -24
  383. package/es/hooks/useExericseShortcut.js +4 -6
  384. package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
  385. package/es/hooks/useRunnerRoomWebSocket.js +27 -51
  386. package/es/hooks/useStdioTextConcator.js +10 -16
  387. package/es/hooks/useStdioWebSocket.js +28 -32
  388. package/es/hooks/useUsercodeEditWebSocket.js +157 -232
  389. package/es/hooks/useUsercodeHistory.js +63 -115
  390. package/es/utils/arduino.js +11 -23
  391. package/es/utils/exerciseFile.js +10 -8
  392. package/es/utils/runner.js +15 -29
  393. package/package.json +11 -7
  394. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
  395. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
@@ -1,8 +1,5 @@
1
1
  'use strict';
2
2
 
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
6
3
  var React = require('react');
7
4
  var reactUse = require('react-use');
8
5
  var apiClient = require('@elice/api-client');
@@ -14,108 +11,77 @@ var otTextUnicode = require('ot-text-unicode');
14
11
  var randomWords = require('random-words');
15
12
  var unicount = require('unicount');
16
13
 
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
20
- var randomWords__default = /*#__PURE__*/_interopDefaultLegacy(randomWords);
21
-
22
14
  //
23
15
  //
24
16
  //
25
- var MAX_WRITE_FAIL_COUNT = 5;
17
+ const MAX_WRITE_FAIL_COUNT = 5;
26
18
  /**
27
19
  *
28
20
  */
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];
21
+ const useUsercodeEditWebSocket = ({
22
+ exerciseRoomId,
23
+ filename,
24
+ onInit,
25
+ onWriteNoti
26
+ }) => {
27
+ const _return = React.useRef({});
28
+ const {
29
+ apiWsOriginUrl
30
+ } = materialSharedUtils.useMaterialConfig();
31
+ const isReady = materialSharedUtils.useMaterialConfigApiClientUpdate(apiClient.config.init);
32
+ const websocket$1 = React.useRef(null);
33
+ const [websocketReadyState, setWebSocketReadyState] = React.useState(websocket.EliceWebSocket.CLOSED);
34
+ const [doc, setDoc] = React.useState('');
35
+ const [docEditable, setDocEditable] = React.useState(true);
36
+ const _doc = React.useRef('');
37
+ const [clients, setClients] = React.useState({});
38
+ const [cursors, setCursors] = React.useState({});
39
+ const myself = React.useRef(null);
40
+ const version = React.useRef(-1);
41
+ const otsBuffer = React.useRef([]);
42
+ const writeIndex = React.useRef(0);
43
+ const writeFailCount = React.useRef(0);
44
+ const [_monkeyAgent, _setMonkeyAgent] = React.useState(0);
45
+ const [_numMonkeyJumped, setNumMonkeyJumped] = React.useState(0);
73
46
  //
74
47
  // =============== clients and markers ===============
75
48
  //
76
49
  /**
77
50
  * Markers.
78
51
  */
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
- });
52
+ const markers = React.useMemo(() => Object.entries(cursors).filter(([userAccesskey]) => Boolean(clients[userAccesskey])).map(([userAccesskey, cursor]) => {
53
+ const client = clients[userAccesskey];
54
+ return Object.assign(Object.assign(Object.assign({}, client), cursor), {
55
+ fullname: client.fullname || `User ${client.id}`,
56
+ email: client.email || 'none'
93
57
  });
94
- }, [clients, cursors]);
58
+ }), [clients, cursors]);
95
59
  /**
96
60
  * Update client to list.
97
61
  */
98
- var updateClient = function updateClient(userAccesskey, userId) {
62
+ const updateClient = (userAccesskey, userId) => {
99
63
  var _a;
100
64
  if (userAccesskey === ((_a = myself.current) === null || _a === void 0 ? void 0 : _a.accesskey)) {
101
65
  return;
102
66
  }
103
- setClients(function (prev) {
67
+ setClients(prev => {
104
68
  if (prev[userAccesskey]) {
105
69
  return prev;
106
70
  }
107
- return Object.assign(Object.assign({}, prev), _rollupPluginBabelHelpers.defineProperty({}, userAccesskey, {
108
- id: userId,
109
- accesskey: userAccesskey
110
- }));
71
+ return Object.assign(Object.assign({}, prev), {
72
+ [userAccesskey]: {
73
+ id: userId,
74
+ accesskey: userAccesskey
75
+ }
76
+ });
111
77
  });
112
78
  };
113
79
  /**
114
80
  * Remove client from list.
115
81
  */
116
- var removeClient = function removeClient(userAccesskey) {
117
- setClients(function (prev) {
118
- var next = Object.assign({}, prev);
82
+ const removeClient = userAccesskey => {
83
+ setClients(prev => {
84
+ const next = Object.assign({}, prev);
119
85
  delete next[userAccesskey];
120
86
  return next;
121
87
  });
@@ -123,37 +89,32 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
123
89
  /**
124
90
  *
125
91
  */
126
- var updateCursor = function updateCursor(userAccesskey, cursor) {
92
+ const updateCursor = (userAccesskey, cursor) => {
127
93
  var _a;
128
94
  if (userAccesskey === ((_a = myself.current) === null || _a === void 0 ? void 0 : _a.accesskey)) {
129
95
  return;
130
96
  }
131
- setCursors(function (prev) {
132
- return Object.assign(Object.assign({}, prev), _rollupPluginBabelHelpers.defineProperty({}, userAccesskey, cursor));
133
- });
97
+ setCursors(prev => Object.assign(Object.assign({}, prev), {
98
+ [userAccesskey]: cursor
99
+ }));
134
100
  };
135
101
  /**
136
102
  *
137
103
  */
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, {
104
+ const updateCursorFromOts = ots => {
105
+ setCursors(Object.entries(cursors).map(([userAccesskey, cursor]) => ({
106
+ [userAccesskey]: {
144
107
  from: otTextUnicode.type.transformSelection(cursor.from, ots),
145
108
  to: otTextUnicode.type.transformSelection(cursor.to, ots)
146
- });
147
- }).reduce(function (prev, next) {
148
- return Object.assign(Object.assign({}, prev), next);
149
- }, {}));
109
+ }
110
+ })).reduce((prev, next) => Object.assign(Object.assign({}, prev), next), {}));
150
111
  };
151
112
  /**
152
113
  *
153
114
  */
154
- var removeCursor = function removeCursor(userAccesskey) {
155
- setCursors(function (prev) {
156
- var next = Object.assign({}, prev);
115
+ const removeCursor = userAccesskey => {
116
+ setCursors(prev => {
117
+ const next = Object.assign({}, prev);
157
118
  delete next[userAccesskey];
158
119
  return next;
159
120
  });
@@ -161,39 +122,22 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
161
122
  //
162
123
  // Fetch client user info, whenever client list changed.
163
124
  //
164
- reactUse.useDeepCompareEffect(function () {
125
+ reactUse.useDeepCompareEffect(() => {
165
126
  void Promise.all(Object.entries(Object.assign({}, clients))
166
127
  // 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
- });
128
+ .filter(([, client]) => !client.fullname).map(([userAccesskey, client]) => apiClient.getOrgUserGet({
129
+ userId: client.id
130
+ }).then(res => res.user).then(user => ({
131
+ [userAccesskey]: Object.assign(Object.assign({}, client), {
132
+ fullname: user.fullname,
133
+ email: user.displayEmail
134
+ })
135
+ })).catch(() => ({
136
+ [userAccesskey]: Object.assign(Object.assign({}, client), {
137
+ fullname: `User ${client.id}`
138
+ })
139
+ })))).then(nextClientArr => nextClientArr.reduce((nextClients, client) => Object.assign(Object.assign({}, nextClients), client), {})).then(nextClients => {
140
+ setClients(prev => Object.assign(Object.assign({}, prev), nextClients));
197
141
  });
198
142
  }, [clients]);
199
143
  //
@@ -202,7 +146,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
202
146
  /**
203
147
  * Send `RESET`.
204
148
  */
205
- var sendReset = function sendReset() {
149
+ const sendReset = () => {
206
150
  var _a;
207
151
  (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
208
152
  type: 'RESET'
@@ -211,55 +155,50 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
211
155
  /**
212
156
  * Send `FETCH`.
213
157
  */
214
- var sendFetch = React.useMemo(function () {
215
- return debounce__default["default"](function () {
216
- var _a;
217
- (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
218
- type: 'FETCH',
219
- from: version.current
220
- });
221
- }, 1000);
222
- }, []);
158
+ const sendFetch = React.useMemo(() => debounce(() => {
159
+ var _a;
160
+ (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
161
+ type: 'FETCH',
162
+ from: version.current
163
+ });
164
+ }, 1000), []);
223
165
  /**
224
166
  * Send `WRITE`.
225
167
  */
226
- var sendWrite = React.useMemo(function () {
227
- return debounce__default["default"](function () {
228
- var _a;
229
- if (otsBuffer.current.length === 0 || writeIndex.current !== 0) {
230
- return;
231
- }
232
- writeIndex.current = otsBuffer.current.length;
233
- var ots = otsBuffer.current[0];
234
- for (var i = 1; i < writeIndex.current; i++) {
235
- ots = otTextUnicode.type.compose(ots, otsBuffer.current[i]);
236
- }
237
- (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
238
- type: 'WRITE',
239
- to: version.current + 1,
240
- ots: ots
241
- });
242
- }, 100);
243
- }, []);
168
+ const sendWrite = React.useMemo(() => debounce(() => {
169
+ var _a;
170
+ if (otsBuffer.current.length === 0 || writeIndex.current !== 0) {
171
+ return;
172
+ }
173
+ writeIndex.current = otsBuffer.current.length;
174
+ let ots = otsBuffer.current[0];
175
+ for (let i = 1; i < writeIndex.current; i++) {
176
+ ots = otTextUnicode.type.compose(ots, otsBuffer.current[i]);
177
+ }
178
+ (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
179
+ type: 'WRITE',
180
+ to: version.current + 1,
181
+ ots: ots
182
+ });
183
+ }, 100), []);
244
184
  /**
245
185
  * Send `CURSOR`.
246
186
  */
247
- var sendCursor = React.useMemo(function () {
248
- return debounce__default["default"](function (_ref15) {
249
- var from = _ref15.from,
250
- to = _ref15.to;
251
- var _a;
252
- (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
253
- type: 'CURSOR',
254
- cursor_start: from,
255
- cursor_end: to
256
- });
257
- }, 500);
258
- }, []);
187
+ const sendCursor = React.useMemo(() => debounce(({
188
+ from,
189
+ to
190
+ }) => {
191
+ var _a;
192
+ (_a = websocket$1.current) === null || _a === void 0 ? void 0 : _a.sendJson({
193
+ type: 'CURSOR',
194
+ cursor_start: from,
195
+ cursor_end: to
196
+ });
197
+ }, 500), []);
259
198
  /**
260
199
  * Send OTs.
261
200
  */
262
- var sendOTs = React.useCallback(function (ots) {
201
+ const sendOTs = React.useCallback(ots => {
263
202
  setDoc(otTextUnicode.type.apply(_doc.current, ots));
264
203
  _doc.current = otTextUnicode.type.apply(_doc.current, ots);
265
204
  otsBuffer.current.push(ots);
@@ -271,20 +210,20 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
271
210
  /**
272
211
  *
273
212
  */
274
- var usercodeApply = function usercodeApply(newVersion, ots) {
213
+ const usercodeApply = (newVersion, ots) => {
275
214
  version.current = newVersion;
276
- var conflictOts = [];
277
- for (var i = 0; i < otsBuffer.current.length; i++) {
215
+ let conflictOts = [];
216
+ for (let i = 0; i < otsBuffer.current.length; i++) {
278
217
  conflictOts = otTextUnicode.type.compose(conflictOts, otsBuffer.current[i]);
279
218
  }
280
- var localOts = conflictOts.length > 0 ? otTextUnicode.type.transform(ots, conflictOts, 'left') : ots;
219
+ const localOts = conflictOts.length > 0 ? otTextUnicode.type.transform(ots, conflictOts, 'left') : ots;
281
220
  onWriteNoti(localOts, false);
282
221
  setDoc(otTextUnicode.type.apply(_doc.current, localOts));
283
222
  _doc.current = otTextUnicode.type.apply(_doc.current, localOts);
284
223
  if (conflictOts.length > 0) {
285
224
  // update ots buffer
286
- for (var _i = 0; _i < otsBuffer.current.length - 1; _i++) {
287
- otsBuffer.current[_i] = [];
225
+ for (let i = 0; i < otsBuffer.current.length - 1; i++) {
226
+ otsBuffer.current[i] = [];
288
227
  }
289
228
  otsBuffer.current[otsBuffer.current.length - 1] = otTextUnicode.type.transform(conflictOts, ots, 'right');
290
229
  }
@@ -298,7 +237,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
298
237
  /**
299
238
  * Websocket on open.
300
239
  */
301
- var wsOpen = function wsOpen() {
240
+ const wsOpen = () => {
302
241
  if (websocket$1.current) {
303
242
  setWebSocketReadyState(websocket$1.current.readyState);
304
243
  }
@@ -306,7 +245,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
306
245
  /**
307
246
  * Websocket on close.
308
247
  */
309
- var wsClose = function wsClose() {
248
+ const wsClose = () => {
310
249
  _stopMonkey();
311
250
  if (websocket$1.current) {
312
251
  setWebSocketReadyState(websocket$1.current.readyState);
@@ -315,7 +254,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
315
254
  /**
316
255
  * Websocket on error.
317
256
  */
318
- var wsError = function wsError() {
257
+ const wsError = () => {
319
258
  if (websocket$1.current) {
320
259
  setWebSocketReadyState(websocket$1.current.readyState);
321
260
  }
@@ -323,8 +262,8 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
323
262
  /**
324
263
  * Websocket on message.
325
264
  */
326
- var wsMessage = function wsMessage(e) {
327
- var msg = humps.camelizeKeys(e.data);
265
+ const wsMessage = e => {
266
+ const msg = humps.camelizeKeys(e.data);
328
267
  switch (msg.type) {
329
268
  case 'INIT':
330
269
  wsMessageInit(msg);
@@ -355,7 +294,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
355
294
  /**
356
295
  * Websocket on `INIT` message.
357
296
  */
358
- var wsMessageInit = function wsMessageInit(msg) {
297
+ const wsMessageInit = msg => {
359
298
  setDocEditable(true);
360
299
  myself.current = {
361
300
  userId: msg.userId,
@@ -367,7 +306,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
367
306
  writeFailCount.current = 0;
368
307
  // TODO: set unix mode on both editors.
369
308
  // editor.getSession().getDocument().setNewLineMode('unix');
370
- var convertedContent = msg.content.replace(/\r\n/g, '\n');
309
+ const convertedContent = msg.content.replace(/\r\n/g, '\n');
371
310
  setDoc(convertedContent);
372
311
  _doc.current = convertedContent;
373
312
  onInit(convertedContent);
@@ -382,25 +321,22 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
382
321
  /**
383
322
  * Websocket on `ENTER` message.
384
323
  */
385
- var wsMessageEnter = function wsMessageEnter(msg) {
386
- var _msg$client = _rollupPluginBabelHelpers.slicedToArray(msg.client, 2),
387
- userId = _msg$client[0],
388
- userAccesskey = _msg$client[1];
324
+ const wsMessageEnter = msg => {
325
+ const [userId, userAccesskey] = msg.client;
389
326
  updateClient(userAccesskey, userId);
390
327
  };
391
328
  /**
392
329
  * Websocket on `LEAVE` message.
393
330
  */
394
- var wsMessageLeave = function wsMessageLeave(msg) {
395
- var _msg$client2 = _rollupPluginBabelHelpers.slicedToArray(msg.client, 2),
396
- userAccesskey = _msg$client2[1];
331
+ const wsMessageLeave = msg => {
332
+ const [, userAccesskey] = msg.client;
397
333
  removeClient(userAccesskey);
398
334
  removeCursor(userAccesskey);
399
335
  };
400
336
  /**
401
337
  * Websocket on `UPDATE` message.
402
338
  */
403
- var wsMessageUpdate = function wsMessageUpdate(msg) {
339
+ const wsMessageUpdate = msg => {
404
340
  if (msg.from === version.current) {
405
341
  usercodeApply(msg.version, msg.ots);
406
342
  } else if (msg.from < version.current) {
@@ -410,7 +346,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
410
346
  /**
411
347
  * Websocket on `WRITE_FAILED` message.
412
348
  */
413
- var wsMessageWriteFailed = function wsMessageWriteFailed(msg) {
349
+ const wsMessageWriteFailed = msg => {
414
350
  writeIndex.current = 0;
415
351
  writeFailCount.current += 1;
416
352
  if (MAX_WRITE_FAIL_COUNT < writeFailCount.current) {
@@ -422,7 +358,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
422
358
  /**
423
359
  * Websocket on `WRITE_SUCCEED` message.
424
360
  */
425
- var wsMessageWriteSucceed = function wsMessageWriteSucceed(msg) {
361
+ const wsMessageWriteSucceed = msg => {
426
362
  version.current = msg.version;
427
363
  otsBuffer.current.splice(0, writeIndex.current);
428
364
  writeIndex.current = 0;
@@ -432,7 +368,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
432
368
  /**
433
369
  * Websocket on `WRITE_NOTI` message.
434
370
  */
435
- var wsMessageWriteNoti = function wsMessageWriteNoti(msg) {
371
+ const wsMessageWriteNoti = msg => {
436
372
  if (version.current + 1 === msg.version) {
437
373
  usercodeApply(msg.version, msg.ots);
438
374
  } else if (version.current < msg.version) {
@@ -442,10 +378,8 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
442
378
  /**
443
379
  * Websocket on `CURSOR_NOTI` message.
444
380
  */
445
- var wsMessageCursorNoti = function wsMessageCursorNoti(msg) {
446
- var _msg$client3 = _rollupPluginBabelHelpers.slicedToArray(msg.client, 2),
447
- userId = _msg$client3[0],
448
- userAccesskey = _msg$client3[1];
381
+ const wsMessageCursorNoti = msg => {
382
+ const [userId, userAccesskey] = msg.client;
449
383
  updateClient(userAccesskey, userId);
450
384
  updateCursor(userAccesskey, {
451
385
  from: msg.cursorStart,
@@ -455,40 +389,26 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
455
389
  /**
456
390
  * Create usercode websocket url.
457
391
  */
458
- var createUsercodeUrl = React.useCallback( /*#__PURE__*/_rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
459
- var url;
460
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
461
- while (1) switch (_context.prev = _context.next) {
462
- case 0:
463
- if (filename) {
464
- _context.next = 2;
465
- break;
466
- }
467
- throw new Error('filename is not defined');
468
- case 2:
469
- url = "".concat(apiWsOriginUrl, "/usercode_edit");
470
- return _context.abrupt("return", apiClient.postOrgMaterialExerciseUsercodeEdit({
471
- exerciseRoomId: exerciseRoomId,
472
- filename: filename
473
- }).then(function (data) {
474
- return "".concat(url, "/").concat(data.accesskey);
475
- }).catch(function (err) {
476
- var _a, _b;
477
- if (((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) === 'non_editable_file') {
478
- setDocEditable(false);
479
- }
480
- throw new Error(((_b = err.detail) === null || _b === void 0 ? void 0 : _b.failMessage) || err.message);
481
- }));
482
- case 4:
483
- case "end":
484
- return _context.stop();
392
+ const createUsercodeUrl = React.useCallback(async () => {
393
+ if (!filename) {
394
+ throw new Error('filename is not defined');
395
+ }
396
+ const url = `${apiWsOriginUrl}/usercode_edit`;
397
+ return apiClient.postOrgMaterialExerciseUsercodeEdit({
398
+ exerciseRoomId,
399
+ filename
400
+ }).then(data => `${url}/${data.accesskey}`).catch(err => {
401
+ var _a, _b;
402
+ if (((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) === 'non_editable_file') {
403
+ setDocEditable(false);
485
404
  }
486
- }, _callee);
487
- })), [apiWsOriginUrl, exerciseRoomId, filename]);
405
+ throw new Error(((_b = err.detail) === null || _b === void 0 ? void 0 : _b.failMessage) || err.message);
406
+ });
407
+ }, [apiWsOriginUrl, exerciseRoomId, filename]);
488
408
  //
489
409
  // Initialize websocket.
490
410
  //
491
- React.useEffect(function () {
411
+ React.useEffect(() => {
492
412
  if (!isReady) {
493
413
  return;
494
414
  }
@@ -497,7 +417,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
497
417
  websocket$1.current.onclose = wsClose;
498
418
  websocket$1.current.onmessage = wsMessage;
499
419
  websocket$1.current.onerror = wsError;
500
- return function () {
420
+ return () => {
501
421
  if (websocket$1.current) {
502
422
  websocket$1.current.close();
503
423
  }
@@ -512,24 +432,24 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
512
432
  * Make monkey jump.
513
433
  * @note only for testing
514
434
  */
515
- var _monkeyAgentDoJump = React.useCallback(function () {
516
- var getRandomInt = function getRandomInt(max) {
435
+ const _monkeyAgentDoJump = React.useCallback(() => {
436
+ const getRandomInt = function (max) {
517
437
  return Math.floor(Math.random() * max);
518
438
  };
519
- var emojis = ['๐Ÿฆ', '๐Ÿ™ˆ', '๐Ÿ™‰', '๐Ÿ™Š', '๐Ÿต', '๐Ÿ’', '๐Ÿฆน๐Ÿผ', '๐Ÿง›๐Ÿพ', '๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'];
520
- var getRandomEmoji = function getRandomEmoji() {
439
+ const emojis = ['๐Ÿฆ', '๐Ÿ™ˆ', '๐Ÿ™‰', '๐Ÿ™Š', '๐Ÿต', '๐Ÿ’', '๐Ÿฆน๐Ÿผ', '๐Ÿง›๐Ÿพ', '๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ'];
440
+ const getRandomEmoji = () => {
521
441
  return emojis[getRandomInt(emojis.length)];
522
442
  };
523
- var uniTextLength = unicount.uniCount(_doc.current);
524
- var uniPos = Math.floor(Math.random() * uniTextLength);
443
+ const uniTextLength = unicount.uniCount(_doc.current);
444
+ const uniPos = Math.floor(Math.random() * uniTextLength);
525
445
  // add text
526
446
  if (Math.random() < 0.5) {
527
- var randomNumber = Math.random();
528
- var text = '';
447
+ const randomNumber = Math.random();
448
+ let text = '';
529
449
  if (randomNumber < 1 / 3) {
530
450
  text = getRandomEmoji();
531
451
  } else if (randomNumber < 2 / 3) {
532
- text = randomWords__default["default"](2).join(' ');
452
+ text = randomWords(2).join(' ');
533
453
  } else {
534
454
  text = '\n';
535
455
  }
@@ -537,7 +457,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
537
457
  }
538
458
  // delete text
539
459
  else {
540
- var uniTextTo = uniPos + getRandomInt(10);
460
+ let uniTextTo = uniPos + getRandomInt(10);
541
461
  if (uniTextTo >= uniTextLength) {
542
462
  uniTextTo = uniTextLength - 1;
543
463
  }
@@ -545,9 +465,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
545
465
  d: _doc.current.slice(unicount.uniToStrPos(_doc.current, uniPos), unicount.uniToStrPos(_doc.current, uniTextTo))
546
466
  }], true);
547
467
  }
548
- setNumMonkeyJumped(function (mj) {
549
- return mj + 1;
550
- });
468
+ setNumMonkeyJumped(mj => mj + 1);
551
469
  },
552
470
  // eslint-disable-next-line react-hooks/exhaustive-deps
553
471
  []);
@@ -555,7 +473,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
555
473
  * Make monkey jump.
556
474
  * @note only for testing
557
475
  */
558
- var _startMonkey = React.useCallback(function () {
476
+ const _startMonkey = React.useCallback(() => {
559
477
  setNumMonkeyJumped(0);
560
478
  _setMonkeyAgent(window.setInterval(_monkeyAgentDoJump, 500));
561
479
  },
@@ -565,7 +483,7 @@ var useUsercodeEditWebSocket = function useUsercodeEditWebSocket(_ref) {
565
483
  * Stop monkey jump.
566
484
  * @note only for testing
567
485
  */
568
- var _stopMonkey = React.useCallback(function () {
486
+ const _stopMonkey = React.useCallback(() => {
569
487
  if (_monkeyAgent) {
570
488
  window.clearInterval(_monkeyAgent);
571
489
  _setMonkeyAgent(0);