@elice/material-exercise 1.231212.0 → 1.231228.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 apiClient = require('@elice/api-client');
7
4
  var types = require('@elice/types');
8
5
  var websocket = require('@elice/websocket');
@@ -16,218 +13,109 @@ var monacoPreference = require('../../shared/monaco-editor/utils/monacoPreferenc
16
13
  var preferences = require('../../shared/monaco-editor/constants/monaco/preferences.js');
17
14
  var recoilTypes = require('./recoilTypes.js');
18
15
 
19
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
20
-
21
- var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
22
-
23
16
  //
24
17
  //
25
18
  //
26
- var KEY_PREFIX = 'MaterialExercise/Exercise/Global';
19
+ const KEY_PREFIX = 'MaterialExercise/Exercise/Global';
27
20
  //
28
21
  // =============== entities ===============
29
22
  //
30
23
  /**
31
24
  * Lecture.
32
25
  */
33
- var exerciseLectureState = recoil.atomFamily({
34
- key: "".concat(KEY_PREFIX, "/Lecture"),
26
+ const exerciseLectureState = recoil.atomFamily({
27
+ key: `${KEY_PREFIX}/Lecture`,
35
28
  default: null,
36
- effects: function effects(lectureId) {
37
- return [function (_ref) {
38
- var setSelf = _ref.setSelf,
39
- trigger = _ref.trigger,
40
- onSet = _ref.onSet;
41
- var get = /*#__PURE__*/function () {
42
- var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
43
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
44
- while (1) switch (_context.prev = _context.next) {
45
- case 0:
46
- if (lectureId) {
47
- _context.next = 3;
48
- break;
49
- }
50
- setSelf(null);
51
- return _context.abrupt("return");
52
- case 3:
53
- _context.t0 = setSelf;
54
- _context.next = 6;
55
- return apiClient.getOrgLectureGet({
56
- lectureId: lectureId
57
- }).then(function (res) {
58
- return res.lecture;
59
- }).catch(function () {
60
- return null;
61
- });
62
- case 6:
63
- _context.t1 = _context.sent;
64
- (0, _context.t0)(_context.t1);
65
- case 8:
66
- case "end":
67
- return _context.stop();
68
- }
69
- }, _callee);
70
- }));
71
- return function get() {
72
- return _ref2.apply(this, arguments);
73
- };
74
- }();
75
- if (trigger === 'get') {
29
+ effects: lectureId => [({
30
+ setSelf,
31
+ trigger,
32
+ onSet
33
+ }) => {
34
+ const get = async () => {
35
+ if (!lectureId) {
36
+ setSelf(null);
37
+ return;
38
+ }
39
+ setSelf(await apiClient.getOrgLectureGet({
40
+ lectureId: lectureId
41
+ }).then(res => res.lecture).catch(() => null));
42
+ };
43
+ if (trigger === 'get') {
44
+ void get();
45
+ }
46
+ onSet((_prevValue, _newValue, isReset) => {
47
+ if (isReset) {
76
48
  void get();
77
49
  }
78
- onSet(function (_prevValue, _newValue, isReset) {
79
- if (isReset) {
80
- void get();
81
- }
82
- });
83
- }];
84
- }
50
+ });
51
+ }]
85
52
  });
86
53
  /**
87
54
  * Material exercise.
88
55
  */
89
- var exerciseState = recoil.atomFamily({
90
- key: "".concat(KEY_PREFIX, "/Exercise"),
56
+ const exerciseState = recoil.atomFamily({
57
+ key: `${KEY_PREFIX}/Exercise`,
91
58
  default: null,
92
- effects: function effects(materialExerciseId) {
93
- return [function (_ref3) {
94
- var setSelf = _ref3.setSelf,
95
- trigger = _ref3.trigger;
96
- var get = /*#__PURE__*/function () {
97
- var _ref4 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee2() {
98
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee2$(_context2) {
99
- while (1) switch (_context2.prev = _context2.next) {
100
- case 0:
101
- _context2.t0 = setSelf;
102
- _context2.next = 3;
103
- return apiClient.getOrgMaterialExerciseGet({
104
- materialExerciseId: materialExerciseId
105
- }).then(function (res) {
106
- return res.materialExercise;
107
- }).then(function (materialExercise) {
108
- return Promise.all([materialExercise, apiClient.getOrgLecturePageResolve({
109
- materialId: materialExercise.id,
110
- materialType: types.enums.LectureMaterialType.Exercise
111
- }).then(function (res) {
112
- return {
113
- _courseId: res.courseId,
114
- _lectureId: res.lectureId,
115
- _lecturePageId: res.lecturePageId,
116
- _orderNo: res.orderNo
117
- };
118
- }).catch(function (err) {
119
- throw err;
120
- })]);
121
- }).then(function (_ref5) {
122
- var _ref6 = _rollupPluginBabelHelpers.slicedToArray(_ref5, 2),
123
- materialExercise = _ref6[0],
124
- lecturePageResolve = _ref6[1];
125
- return Object.assign(Object.assign({}, materialExercise), lecturePageResolve);
126
- }).catch(function () {
127
- return null;
128
- });
129
- case 3:
130
- _context2.t1 = _context2.sent;
131
- (0, _context2.t0)(_context2.t1);
132
- case 5:
133
- case "end":
134
- return _context2.stop();
135
- }
136
- }, _callee2);
137
- }));
138
- return function get() {
139
- return _ref4.apply(this, arguments);
140
- };
141
- }();
142
- if (trigger === 'get') {
143
- void get();
144
- }
145
- }];
146
- }
59
+ effects: materialExerciseId => [({
60
+ setSelf,
61
+ trigger
62
+ }) => {
63
+ const get = async () => {
64
+ setSelf(await apiClient.getOrgMaterialExerciseGet({
65
+ materialExerciseId
66
+ }).then(res => res.materialExercise).then(materialExercise => Promise.all([materialExercise, apiClient.getOrgLecturePageResolve({
67
+ materialId: materialExercise.id,
68
+ materialType: types.enums.LectureMaterialType.Exercise
69
+ }).then(res => ({
70
+ _courseId: res.courseId,
71
+ _lectureId: res.lectureId,
72
+ _lecturePageId: res.lecturePageId,
73
+ _orderNo: res.orderNo
74
+ })).catch(err => {
75
+ throw err;
76
+ })])).then(([materialExercise, lecturePageResolve]) => Object.assign(Object.assign({}, materialExercise), lecturePageResolve)).catch(() => null));
77
+ };
78
+ if (trigger === 'get') {
79
+ void get();
80
+ }
81
+ }]
147
82
  });
148
83
  /**
149
84
  * Material exercise room.
150
85
  */
151
- var exerciseRoomState = recoil.atomFamily({
152
- key: "".concat(KEY_PREFIX, "/ExerciseRoom"),
86
+ const exerciseRoomState = recoil.atomFamily({
87
+ key: `${KEY_PREFIX}/ExerciseRoom`,
153
88
  default: null,
154
- effects: function effects(exerciseRoomId) {
155
- return [function (_ref7) {
156
- var setSelf = _ref7.setSelf,
157
- trigger = _ref7.trigger;
158
- var get = /*#__PURE__*/function () {
159
- var _ref8 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee3() {
160
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee3$(_context3) {
161
- while (1) switch (_context3.prev = _context3.next) {
162
- case 0:
163
- if (exerciseRoomId) {
164
- _context3.next = 2;
165
- break;
166
- }
167
- return _context3.abrupt("return", null);
168
- case 2:
169
- _context3.t0 = setSelf;
170
- _context3.next = 5;
171
- return apiClient.getOrgMaterialExerciseExerciseRoomGet({
172
- exerciseRoomId: exerciseRoomId
173
- }).then(function (res) {
174
- return res.exerciseRoom;
175
- }).catch(function () {
176
- return null;
177
- });
178
- case 5:
179
- _context3.t1 = _context3.sent;
180
- (0, _context3.t0)(_context3.t1);
181
- case 7:
182
- case "end":
183
- return _context3.stop();
184
- }
185
- }, _callee3);
186
- }));
187
- return function get() {
188
- return _ref8.apply(this, arguments);
189
- };
190
- }();
191
- if (trigger === 'get') {
192
- void get();
89
+ effects: exerciseRoomId => [({
90
+ setSelf,
91
+ trigger
92
+ }) => {
93
+ const get = async () => {
94
+ if (!exerciseRoomId) {
95
+ return null;
193
96
  }
194
- }];
195
- }
97
+ setSelf(await apiClient.getOrgMaterialExerciseExerciseRoomGet({
98
+ exerciseRoomId
99
+ }).then(res => res.exerciseRoom).catch(() => null));
100
+ };
101
+ if (trigger === 'get') {
102
+ void get();
103
+ }
104
+ }]
196
105
  });
197
106
  /**
198
107
  * User.
199
108
  */
200
- var exerciseUserState = recoil.atom({
201
- key: "".concat(KEY_PREFIX, "/User"),
109
+ const exerciseUserState = recoil.atom({
110
+ key: `${KEY_PREFIX}/User`,
202
111
  default: null,
203
- effects: [function (_ref9) {
204
- var setSelf = _ref9.setSelf,
205
- trigger = _ref9.trigger;
206
- var get = /*#__PURE__*/function () {
207
- var _ref10 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee4() {
208
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee4$(_context4) {
209
- while (1) switch (_context4.prev = _context4.next) {
210
- case 0:
211
- _context4.t0 = setSelf;
212
- _context4.next = 3;
213
- return apiClient.getOrgUserGet().then(function (res) {
214
- return res.user;
215
- }).catch(function () {
216
- return null;
217
- });
218
- case 3:
219
- _context4.t1 = _context4.sent;
220
- (0, _context4.t0)(_context4.t1);
221
- case 5:
222
- case "end":
223
- return _context4.stop();
224
- }
225
- }, _callee4);
226
- }));
227
- return function get() {
228
- return _ref10.apply(this, arguments);
229
- };
230
- }();
112
+ effects: [({
113
+ setSelf,
114
+ trigger
115
+ }) => {
116
+ const get = async () => {
117
+ setSelf(await apiClient.getOrgUserGet().then(res => res.user).catch(() => null));
118
+ };
231
119
  if (trigger === 'get') {
232
120
  void get();
233
121
  }
@@ -239,44 +127,29 @@ var exerciseUserState = recoil.atom({
239
127
  /**
240
128
  *
241
129
  */
242
- var exerciseFileTabsOpenedState = recoil.atomFamily({
243
- key: "".concat(KEY_PREFIX, "/FileTabs/Opened"),
130
+ const exerciseFileTabsOpenedState = recoil.atomFamily({
131
+ key: `${KEY_PREFIX}/FileTabs/Opened`,
244
132
  default: recoil.selectorFamily({
245
- key: "".concat(KEY_PREFIX, "}/FileTabs/Opened/Default"),
246
- get: function get(_ref11) {
247
- var materialExerciseId = _ref11.materialExerciseId,
248
- exerciseRoomId = _ref11.exerciseRoomId;
249
- return /*#__PURE__*/function () {
250
- var _ref13 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee5(_ref12) {
251
- var get, _a, _b, _c, _d, exercise, mulLang, mulEnv, openFilelist;
252
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee5$(_context5) {
253
- while (1) switch (_context5.prev = _context5.next) {
254
- case 0:
255
- get = _ref12.get;
256
- exercise = get(exerciseState(materialExerciseId));
257
- mulLang = get(exerciseMultilangLanguagesState(materialExerciseId));
258
- mulEnv = get(exerciseMultilangEnvironmentState({
259
- materialExerciseId: materialExerciseId,
260
- exerciseRoomId: exerciseRoomId
261
- }));
262
- if (!((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.MultiLanguage && mulLang && mulEnv)) {
263
- _context5.next = 9;
264
- break;
265
- }
266
- openFilelist = (_b = (_a = mulLang === null || mulLang === void 0 ? void 0 : mulLang[mulEnv === null || mulEnv === void 0 ? void 0 : mulEnv.language]) === null || _a === void 0 ? void 0 : _a.initialOpenFilelist) !== null && _b !== void 0 ? _b : [];
267
- return _context5.abrupt("return", openFilelist);
268
- case 9:
269
- return _context5.abrupt("return", (_d = (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.initialOpenFilelist) !== null && _d !== void 0 ? _d : []);
270
- case 10:
271
- case "end":
272
- return _context5.stop();
273
- }
274
- }, _callee5);
275
- }));
276
- return function (_x) {
277
- return _ref13.apply(this, arguments);
278
- };
279
- }();
133
+ key: `${KEY_PREFIX}}/FileTabs/Opened/Default`,
134
+ get: ({
135
+ materialExerciseId,
136
+ exerciseRoomId
137
+ }) => async ({
138
+ get
139
+ }) => {
140
+ var _a, _b, _c, _d;
141
+ const exercise = get(exerciseState(materialExerciseId));
142
+ const mulLang = get(exerciseMultilangLanguagesState(materialExerciseId));
143
+ const mulEnv = get(exerciseMultilangEnvironmentState({
144
+ materialExerciseId,
145
+ exerciseRoomId
146
+ }));
147
+ if ((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.MultiLanguage && mulLang && mulEnv) {
148
+ const openFilelist = (_b = (_a = mulLang === null || mulLang === void 0 ? void 0 : mulLang[mulEnv === null || mulEnv === void 0 ? void 0 : mulEnv.language]) === null || _a === void 0 ? void 0 : _a.initialOpenFilelist) !== null && _b !== void 0 ? _b : [];
149
+ return openFilelist;
150
+ } else {
151
+ return (_d = (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.initialOpenFilelist) !== null && _d !== void 0 ? _d : [];
152
+ }
280
153
  }
281
154
  })
282
155
  });
@@ -286,56 +159,35 @@ var exerciseFileTabsOpenedState = recoil.atomFamily({
286
159
  /**
287
160
  *
288
161
  */
289
- var exerciseFileTreeOpenedState = recoil.atom({
290
- key: "".concat(KEY_PREFIX, "/FileTree/Opened"),
162
+ const exerciseFileTreeOpenedState = recoil.atom({
163
+ key: `${KEY_PREFIX}/FileTree/Opened`,
291
164
  default: false
292
165
  });
293
166
  //
294
167
  // =============== preference ===============
295
168
  //
296
- var EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO = 'material.exercise.editor.preference';
169
+ const EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO = 'material.exercise.editor.preference';
297
170
  /**
298
171
  * Editor preference.
299
172
  */
300
- var exerciseEditorPreferenceState = recoil.atom({
301
- key: "".concat(KEY_PREFIX, "/EditorPreference"),
173
+ const exerciseEditorPreferenceState = recoil.atom({
174
+ key: `${KEY_PREFIX}/EditorPreference`,
302
175
  default: preferences.DEFAULT_MONACO_EDITOR_PREFERENCE,
303
- effects: [function (_ref14) {
304
- var setSelf = _ref14.setSelf,
305
- trigger = _ref14.trigger,
306
- onSet = _ref14.onSet;
307
- var get = /*#__PURE__*/function () {
308
- var _ref15 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee6() {
309
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee6$(_context6) {
310
- while (1) switch (_context6.prev = _context6.next) {
311
- case 0:
312
- _context6.t0 = setSelf;
313
- _context6.next = 3;
314
- return apiClient.getGlobalAccountPreferenceGet({
315
- pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO
316
- }).then(function (res) {
317
- return monacoPreference.normalizeMonacoPreference(res.pvalue);
318
- }).catch(function () {
319
- return preferences.DEFAULT_MONACO_EDITOR_PREFERENCE;
320
- });
321
- case 3:
322
- _context6.t1 = _context6.sent;
323
- (0, _context6.t0)(_context6.t1);
324
- case 5:
325
- case "end":
326
- return _context6.stop();
327
- }
328
- }, _callee6);
329
- }));
330
- return function get() {
331
- return _ref15.apply(this, arguments);
332
- };
333
- }();
176
+ effects: [({
177
+ setSelf,
178
+ trigger,
179
+ onSet
180
+ }) => {
181
+ const get = async () => {
182
+ setSelf(await apiClient.getGlobalAccountPreferenceGet({
183
+ pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO
184
+ }).then(res => monacoPreference.normalizeMonacoPreference(res.pvalue)).catch(() => preferences.DEFAULT_MONACO_EDITOR_PREFERENCE));
185
+ };
334
186
  if (trigger === 'get') {
335
187
  void get();
336
188
  }
337
- onSet(function (newPreference, prevPreference, isReset) {
338
- if (!isEqual__default["default"](newPreference, prevPreference) && !isReset) {
189
+ onSet((newPreference, prevPreference, isReset) => {
190
+ if (!isEqual(newPreference, prevPreference) && !isReset) {
339
191
  void apiClient.postGlobalAccountPreferenceEdit({
340
192
  pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO,
341
193
  pvalue: monacoPreference.normalizeMonacoPreference(newPreference)
@@ -347,70 +199,48 @@ var exerciseEditorPreferenceState = recoil.atom({
347
199
  //
348
200
  // =============== preview ===============
349
201
  //
350
- var EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE = 'material.exercise.preview.mode';
202
+ const EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE = 'material.exercise.preview.mode';
351
203
  /**
352
204
  *
353
205
  */
354
- var exercisePreviewTypeState = recoil.selectorFamily({
355
- key: "".concat(KEY_PREFIX, "/Preview/Type"),
356
- get: function get(materialExerciseId) {
357
- return function (_ref16) {
358
- var get = _ref16.get;
359
- var exercise = get(exerciseState(materialExerciseId));
360
- var readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
361
- switch (true) {
362
- case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.isVnc):
363
- return recoilTypes.ExercisePreviewType.NoVnc;
364
- case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.httpPort):
365
- return recoilTypes.ExercisePreviewType.WebBrowser;
366
- default:
367
- return recoilTypes.ExercisePreviewType.None;
368
- }
369
- };
206
+ const exercisePreviewTypeState = recoil.selectorFamily({
207
+ key: `${KEY_PREFIX}/Preview/Type`,
208
+ get: materialExerciseId => ({
209
+ get
210
+ }) => {
211
+ const exercise = get(exerciseState(materialExerciseId));
212
+ const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
213
+ switch (true) {
214
+ case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.isVnc):
215
+ return recoilTypes.ExercisePreviewType.NoVnc;
216
+ case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.httpPort):
217
+ return recoilTypes.ExercisePreviewType.WebBrowser;
218
+ default:
219
+ return recoilTypes.ExercisePreviewType.None;
220
+ }
370
221
  }
371
222
  });
372
223
  /**
373
224
  *
374
225
  */
375
- var exercisePreviewDisplayModeState = recoil.atom({
376
- key: "".concat(KEY_PREFIX, "/Preview/DisplayMode"),
226
+ const exercisePreviewDisplayModeState = recoil.atom({
227
+ key: `${KEY_PREFIX}/Preview/DisplayMode`,
377
228
  default: recoilTypes.ExercisePreviewDisplayMode.Mini,
378
- effects: [function (_ref17) {
379
- var trigger = _ref17.trigger,
380
- setSelf = _ref17.setSelf,
381
- onSet = _ref17.onSet;
382
- var get = /*#__PURE__*/function () {
383
- var _ref18 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee7() {
384
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee7$(_context7) {
385
- while (1) switch (_context7.prev = _context7.next) {
386
- case 0:
387
- _context7.t0 = setSelf;
388
- _context7.next = 3;
389
- return apiClient.getGlobalAccountPreferenceGet({
390
- pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE
391
- }).then(function (res) {
392
- return Number(res.pvalue) || recoilTypes.ExercisePreviewDisplayMode.Mini;
393
- }).catch(function () {
394
- return recoilTypes.ExercisePreviewDisplayMode.Mini;
395
- });
396
- case 3:
397
- _context7.t1 = _context7.sent;
398
- (0, _context7.t0)(_context7.t1);
399
- case 5:
400
- case "end":
401
- return _context7.stop();
402
- }
403
- }, _callee7);
404
- }));
405
- return function get() {
406
- return _ref18.apply(this, arguments);
407
- };
408
- }();
229
+ effects: [({
230
+ trigger,
231
+ setSelf,
232
+ onSet
233
+ }) => {
234
+ const get = async () => {
235
+ setSelf(await apiClient.getGlobalAccountPreferenceGet({
236
+ pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE
237
+ }).then(res => Number(res.pvalue) || recoilTypes.ExercisePreviewDisplayMode.Mini).catch(() => recoilTypes.ExercisePreviewDisplayMode.Mini));
238
+ };
409
239
  if (trigger === 'get') {
410
240
  void get();
411
241
  }
412
- onSet(function (newDisplayMode, prevDisplayMode, isReset) {
413
- if (!isEqual__default["default"](newDisplayMode, prevDisplayMode) && !isReset) {
242
+ onSet((newDisplayMode, prevDisplayMode, isReset) => {
243
+ if (!isEqual(newDisplayMode, prevDisplayMode) && !isReset) {
414
244
  void apiClient.postGlobalAccountPreferenceEdit({
415
245
  pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE,
416
246
  pvalue: newDisplayMode
@@ -425,54 +255,53 @@ var exercisePreviewDisplayModeState = recoil.atom({
425
255
  /**
426
256
  *
427
257
  */
428
- var exerciseRunnerSubmittingState = recoil.atom({
429
- key: "".concat(KEY_PREFIX, "/Runner/Submitting"),
258
+ const exerciseRunnerSubmittingState = recoil.atom({
259
+ key: `${KEY_PREFIX}/Runner/Submitting`,
430
260
  default: false
431
261
  });
432
262
  /**
433
263
  *
434
264
  */
435
- var exerciseRunnerRunningState = recoil.atom({
436
- key: "".concat(KEY_PREFIX, "/Runner/Running"),
265
+ const exerciseRunnerRunningState = recoil.atom({
266
+ key: `${KEY_PREFIX}/Runner/Running`,
437
267
  default: false
438
268
  });
439
269
  /**
440
270
  *
441
271
  */
442
- var exerciseRunnerRunTypeState = recoil.atom({
443
- key: "".concat(KEY_PREFIX, "/Runner/RunType"),
272
+ const exerciseRunnerRunTypeState = recoil.atom({
273
+ key: `${KEY_PREFIX}/Runner/RunType`,
444
274
  default: null
445
275
  });
446
276
  /**
447
277
  *
448
278
  */
449
- var exerciseRunnerRoomConnectionInfoState = recoil.atom({
450
- key: "".concat(KEY_PREFIX, "/Runner/RoomConnectionInfoState"),
279
+ const exerciseRunnerRoomConnectionInfoState = recoil.atom({
280
+ key: `${KEY_PREFIX}/Runner/RoomConnectionInfoState`,
451
281
  default: null
452
282
  });
453
283
  /**
454
284
  *
455
285
  */
456
- var exerciseRunnerStdioFilesState = recoil.atom({
457
- key: "".concat(KEY_PREFIX, "/Runner/StdioFiles"),
286
+ const exerciseRunnerStdioFilesState = recoil.atom({
287
+ key: `${KEY_PREFIX}/Runner/StdioFiles`,
458
288
  default: []
459
289
  });
460
290
  /**
461
291
  *
462
292
  */
463
- var exerciseRunnerWebSocketStatusQuery = recoil.selector({
464
- key: "".concat(KEY_PREFIX, "/Runner/WebsocketState"),
465
- get: function get(_ref19) {
466
- var _get = _ref19.get;
467
- var states = Object.freeze([_get(exerciseWebsocketStates).runnerRoom, _get(exerciseWebsocketStates).stdio]);
293
+ const exerciseRunnerWebSocketStatusQuery = recoil.selector({
294
+ key: `${KEY_PREFIX}/Runner/WebsocketState`,
295
+ get: ({
296
+ get
297
+ }) => {
298
+ const states = Object.freeze([get(exerciseWebsocketStates).runnerRoom, get(exerciseWebsocketStates).stdio]);
468
299
  // connecting
469
300
  if (states.includes(websocket.EliceWebSocket.CLOSED) || states.includes(websocket.EliceWebSocket.CONNECTING)) {
470
301
  return websocket.EliceWebSocket.CONNECTING;
471
302
  }
472
303
  // connected
473
- else if (states.every(function (state) {
474
- return state === WebSocket.OPEN;
475
- })) {
304
+ else if (states.every(state => state === WebSocket.OPEN)) {
476
305
  return websocket.EliceWebSocket.OPEN;
477
306
  }
478
307
  // reconnecting
@@ -487,8 +316,8 @@ var exerciseRunnerWebSocketStatusQuery = recoil.selector({
487
316
  /**
488
317
  *
489
318
  */
490
- var exerciseWebsocketStates = recoil.atom({
491
- key: "".concat(KEY_PREFIX, "/Websocket/States"),
319
+ const exerciseWebsocketStates = recoil.atom({
320
+ key: `${KEY_PREFIX}/Websocket/States`,
492
321
  default: {
493
322
  runnerRoom: websocket.EliceWebSocket.CLOSED,
494
323
  stdio: websocket.EliceWebSocket.CLOSED,
@@ -498,223 +327,143 @@ var exerciseWebsocketStates = recoil.atom({
498
327
  /**
499
328
  *
500
329
  */
501
- var exerciseWebsocketQuery = recoil.selectorFamily({
502
- key: "".concat(KEY_PREFIX, "/Websocket/State"),
503
- get: function get(key) {
504
- return function (_ref20) {
505
- var get = _ref20.get;
506
- return get(exerciseWebsocketStates)[key];
507
- };
330
+ const exerciseWebsocketQuery = recoil.selectorFamily({
331
+ key: `${KEY_PREFIX}/Websocket/State`,
332
+ get: key => ({
333
+ get
334
+ }) => {
335
+ return get(exerciseWebsocketStates)[key];
508
336
  },
509
- set: function set(key) {
510
- return function (_ref21, newWebSocketState) {
511
- var get = _ref21.get,
512
- set = _ref21.set;
513
- set(exerciseWebsocketStates, Object.assign(Object.assign({}, get(exerciseWebsocketStates)), _rollupPluginBabelHelpers.defineProperty({}, key, newWebSocketState)));
514
- };
337
+ set: key => ({
338
+ get,
339
+ set
340
+ }, newWebSocketState) => {
341
+ set(exerciseWebsocketStates, Object.assign(Object.assign({}, get(exerciseWebsocketStates)), {
342
+ [key]: newWebSocketState
343
+ }));
515
344
  }
516
345
  });
517
346
  //
518
347
  // =============== multi language ===============
519
348
  //
520
- var MULTILANG_ENVIRONMENT_FILENAME = '.environment.json';
521
- var MULTILANG_LANGUAGES_FILENAME = '.languages.json';
349
+ const MULTILANG_ENVIRONMENT_FILENAME = '.environment.json';
350
+ const MULTILANG_LANGUAGES_FILENAME = '.languages.json';
522
351
  /**
523
352
  *
524
353
  */
525
- var exerciseMultilangLanguagesState = recoil.atomFamily({
526
- key: "".concat(KEY_PREFIX, "/Multilang/Languages"),
354
+ const exerciseMultilangLanguagesState = recoil.atomFamily({
355
+ key: `${KEY_PREFIX}/Multilang/Languages`,
527
356
  default: undefined,
528
- effects: function effects(materialExerciseId) {
529
- return [function (_ref22) {
530
- var getPromise = _ref22.getPromise,
531
- trigger = _ref22.trigger,
532
- setSelf = _ref22.setSelf,
533
- onSet = _ref22.onSet;
534
- var get = /*#__PURE__*/function () {
535
- var _ref23 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee8() {
536
- var _a, _b, exercise;
537
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee8$(_context8) {
538
- while (1) switch (_context8.prev = _context8.next) {
539
- case 0:
540
- if (materialExerciseId) {
541
- _context8.next = 3;
542
- break;
543
- }
544
- setSelf(undefined);
545
- return _context8.abrupt("return");
546
- case 3:
547
- _context8.next = 5;
548
- return getPromise(exerciseState(materialExerciseId));
549
- case 5:
550
- exercise = _context8.sent;
551
- if (exercise) {
552
- _context8.next = 9;
553
- break;
554
- }
555
- setSelf(undefined);
556
- return _context8.abrupt("return");
557
- case 9:
558
- _context8.t0 = setSelf;
559
- _context8.next = 12;
560
- return apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
561
- exerciseImageId: (_b = (_a = exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 0,
562
- filename: MULTILANG_LANGUAGES_FILENAME
563
- }).then(function (res) {
564
- return res.exerciseFile.content;
565
- }).then(function (content) {
566
- return humps.camelizeKeys(JSON.parse(content));
567
- }).catch(function () {
568
- return null;
569
- });
570
- case 12:
571
- _context8.t1 = _context8.sent;
572
- (0, _context8.t0)(_context8.t1);
573
- case 14:
574
- case "end":
575
- return _context8.stop();
576
- }
577
- }, _callee8);
578
- }));
579
- return function get() {
580
- return _ref23.apply(this, arguments);
581
- };
582
- }();
583
- if (trigger === 'get') {
357
+ effects: materialExerciseId => [({
358
+ getPromise,
359
+ trigger,
360
+ setSelf,
361
+ onSet
362
+ }) => {
363
+ const get = async () => {
364
+ var _a, _b;
365
+ if (!materialExerciseId) {
366
+ setSelf(undefined);
367
+ return;
368
+ }
369
+ const exercise = await getPromise(exerciseState(materialExerciseId));
370
+ if (!exercise) {
371
+ setSelf(undefined);
372
+ return;
373
+ }
374
+ setSelf(await apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
375
+ exerciseImageId: (_b = (_a = exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 0,
376
+ filename: MULTILANG_LANGUAGES_FILENAME
377
+ }).then(res => res.exerciseFile.content).then(content => humps.camelizeKeys(JSON.parse(content))).catch(() => null));
378
+ };
379
+ if (trigger === 'get') {
380
+ void get();
381
+ }
382
+ onSet((_prevValue, _newValue, isReset) => {
383
+ if (isReset) {
584
384
  void get();
585
385
  }
586
- onSet(function (_prevValue, _newValue, isReset) {
587
- if (isReset) {
588
- void get();
589
- }
590
- });
591
- }];
592
- }
386
+ });
387
+ }]
593
388
  });
594
389
  /**
595
390
  *
596
391
  */
597
- var exerciseMultilangEnvironmentState = recoil.atomFamily({
598
- key: "".concat(KEY_PREFIX, "/Multilang/Environment"),
392
+ const exerciseMultilangEnvironmentState = recoil.atomFamily({
393
+ key: `${KEY_PREFIX}/Multilang/Environment`,
599
394
  default: null,
600
- effects: function effects(_ref24) {
601
- var materialExerciseId = _ref24.materialExerciseId,
602
- exerciseRoomId = _ref24.exerciseRoomId;
603
- return [function (_ref25) {
604
- var trigger = _ref25.trigger,
605
- getPromise = _ref25.getPromise,
606
- setSelf = _ref25.setSelf,
607
- onSet = _ref25.onSet;
608
- var get = /*#__PURE__*/function () {
609
- var _ref26 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee10() {
610
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee10$(_context10) {
611
- while (1) switch (_context10.prev = _context10.next) {
612
- case 0:
613
- setSelf(apiClient.getOrgMaterialExerciseExerciseRoomUserFileGet({
614
- exerciseRoomId: exerciseRoomId,
615
- filename: MULTILANG_ENVIRONMENT_FILENAME
616
- }).then(function (res) {
617
- return humps.camelizeKeys(JSON.parse(res.userFile.content));
618
- }).catch( /*#__PURE__*/_rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee9() {
619
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee9$(_context9) {
620
- while (1) switch (_context9.prev = _context9.next) {
621
- case 0:
622
- return _context9.abrupt("return", getPromise(exerciseMultilangLanguagesState(materialExerciseId)).then(function (languages) {
623
- if (!languages) {
624
- throw new Error('err_no_languages');
625
- }
626
- var language = Object.keys(languages)[0];
627
- return {
628
- language: language
629
- };
630
- }).catch(function () {
631
- return null;
632
- }));
633
- case 1:
634
- case "end":
635
- return _context9.stop();
636
- }
637
- }, _callee9);
638
- }))));
639
- case 1:
640
- case "end":
641
- return _context10.stop();
642
- }
643
- }, _callee10);
644
- }));
645
- return function get() {
646
- return _ref26.apply(this, arguments);
395
+ effects: ({
396
+ materialExerciseId,
397
+ exerciseRoomId
398
+ }) => [({
399
+ trigger,
400
+ getPromise,
401
+ setSelf,
402
+ onSet
403
+ }) => {
404
+ const get = async () => {
405
+ setSelf(apiClient.getOrgMaterialExerciseExerciseRoomUserFileGet({
406
+ exerciseRoomId,
407
+ filename: MULTILANG_ENVIRONMENT_FILENAME
408
+ }).then(res => humps.camelizeKeys(JSON.parse(res.userFile.content))).catch(async () => getPromise(exerciseMultilangLanguagesState(materialExerciseId)).then(languages => {
409
+ if (!languages) {
410
+ throw new Error('err_no_languages');
411
+ }
412
+ const language = Object.keys(languages)[0];
413
+ return {
414
+ language
647
415
  };
648
- }();
649
- if (trigger === 'get') {
650
- void get();
416
+ }).catch(() => null)));
417
+ };
418
+ if (trigger === 'get') {
419
+ void get();
420
+ }
421
+ onSet((newEnvJson, _, isReset) => {
422
+ if (isReset) {
423
+ return;
651
424
  }
652
- onSet(function (newEnvJson, _, isReset) {
653
- if (isReset) {
654
- return;
655
- }
656
- void apiClient.postOrgMaterialExerciseExerciseRoomUserFileAdd({
657
- exerciseRoomId: exerciseRoomId,
658
- userFile: new File([JSON.stringify(newEnvJson)], MULTILANG_ENVIRONMENT_FILENAME, {
659
- type: 'application/json'
660
- }),
661
- path: '',
662
- overwrite: true
663
- });
425
+ void apiClient.postOrgMaterialExerciseExerciseRoomUserFileAdd({
426
+ exerciseRoomId,
427
+ userFile: new File([JSON.stringify(newEnvJson)], MULTILANG_ENVIRONMENT_FILENAME, {
428
+ type: 'application/json'
429
+ }),
430
+ path: '',
431
+ overwrite: true
664
432
  });
665
- }];
666
- }
433
+ });
434
+ }]
667
435
  });
668
436
  //
669
437
  // =============== arduino ===============
670
438
  //
671
- var ARDUINO_ACCOUNT_PREFERENCE_KEY = 'material.exercise.arduino.preference';
672
- var DEFAULT_ARDUINO_PREFERENCE = {
439
+ const ARDUINO_ACCOUNT_PREFERENCE_KEY = 'material.exercise.arduino.preference';
440
+ const DEFAULT_ARDUINO_PREFERENCE = {
673
441
  baudRate: 9600,
674
442
  port: ''
675
443
  };
676
444
  /**
677
445
  * Arduino preference.
678
446
  */
679
- var exerciseArduinoPreferenceState = recoil.atom({
680
- key: "".concat(KEY_PREFIX, "/Arduino/Preference"),
447
+ const exerciseArduinoPreferenceState = recoil.atom({
448
+ key: `${KEY_PREFIX}/Arduino/Preference`,
681
449
  default: DEFAULT_ARDUINO_PREFERENCE,
682
- effects: [function (_ref28) {
683
- var trigger = _ref28.trigger,
684
- setSelf = _ref28.setSelf,
685
- onSet = _ref28.onSet;
686
- var get = /*#__PURE__*/function () {
687
- var _ref29 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee11() {
688
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee11$(_context11) {
689
- while (1) switch (_context11.prev = _context11.next) {
690
- case 0:
691
- _context11.t0 = setSelf;
692
- _context11.next = 3;
693
- return apiClient.getGlobalAccountPreferenceGet({
694
- pkey: ARDUINO_ACCOUNT_PREFERENCE_KEY
695
- }).then(function (res) {
696
- return Object.assign(Object.assign({}, DEFAULT_ARDUINO_PREFERENCE), res.pvalue);
697
- }).catch(function () {
698
- return DEFAULT_ARDUINO_PREFERENCE;
699
- });
700
- case 3:
701
- _context11.t1 = _context11.sent;
702
- (0, _context11.t0)(_context11.t1);
703
- case 5:
704
- case "end":
705
- return _context11.stop();
706
- }
707
- }, _callee11);
708
- }));
709
- return function get() {
710
- return _ref29.apply(this, arguments);
711
- };
712
- }();
450
+ effects: [({
451
+ trigger,
452
+ setSelf,
453
+ onSet
454
+ }) => {
455
+ const get = async () => {
456
+ setSelf(await apiClient.getGlobalAccountPreferenceGet({
457
+ pkey: ARDUINO_ACCOUNT_PREFERENCE_KEY
458
+ }).then(res => {
459
+ return Object.assign(Object.assign({}, DEFAULT_ARDUINO_PREFERENCE), res.pvalue);
460
+ }).catch(() => DEFAULT_ARDUINO_PREFERENCE));
461
+ };
713
462
  if (trigger === 'get') {
714
463
  void get();
715
464
  }
716
- onSet(function (newPreference, prevPreference, isReset) {
717
- if (!isEqual__default["default"](newPreference, prevPreference) && !isReset) {
465
+ onSet((newPreference, prevPreference, isReset) => {
466
+ if (!isEqual(newPreference, prevPreference) && !isReset) {
718
467
  void apiClient.postGlobalAccountPreferenceEdit({
719
468
  pkey: ARDUINO_ACCOUNT_PREFERENCE_KEY,
720
469
  pvalue: Object.assign(Object.assign({}, DEFAULT_ARDUINO_PREFERENCE), newPreference)
@@ -726,45 +475,45 @@ var exerciseArduinoPreferenceState = recoil.atom({
726
475
  /**
727
476
  * Arduino ports.
728
477
  */
729
- var exerciseArduinoPortsState = recoil.atom({
730
- key: "".concat(KEY_PREFIX, "/Arduino/Ports"),
478
+ const exerciseArduinoPortsState = recoil.atom({
479
+ key: `${KEY_PREFIX}/Arduino/Ports`,
731
480
  default: []
732
481
  });
733
482
  /**
734
483
  * Opened arduino port.
735
484
  */
736
- var exerciseArduinoOpenedPortNameState = recoil.atom({
737
- key: "".concat(KEY_PREFIX, "/Arduino/OpenedPortName"),
485
+ const exerciseArduinoOpenedPortNameState = recoil.atom({
486
+ key: `${KEY_PREFIX}/Arduino/OpenedPortName`,
738
487
  default: null
739
488
  });
740
489
  /**
741
490
  * Arduino port open handler.
742
491
  */
743
- var exerciseArduinoOnSelectPortState = recoil.atom({
744
- key: "".concat(KEY_PREFIX, "/Arduino/OnSelectPort"),
745
- default: function _default(name) {
492
+ const exerciseArduinoOnSelectPortState = recoil.atom({
493
+ key: `${KEY_PREFIX}/Arduino/OnSelectPort`,
494
+ default: name => {
746
495
  // do nothing.
747
496
  }
748
497
  });
749
498
  /**
750
499
  * Arduino agent connection status.
751
500
  */
752
- var exerciseArduinoAgentConnectionState = recoil.atom({
753
- key: "".concat(KEY_PREFIX, "/Arduino/AgentConnection"),
501
+ const exerciseArduinoAgentConnectionState = recoil.atom({
502
+ key: `${KEY_PREFIX}/Arduino/AgentConnection`,
754
503
  default: 'disconnected'
755
504
  });
756
505
  /**
757
506
  * Arduino upload progress.
758
507
  */
759
- var exerciseArduinoUploadProgressState = recoil.atom({
760
- key: "".concat(KEY_PREFIX, "/Arduino/UploadProgressState"),
508
+ const exerciseArduinoUploadProgressState = recoil.atom({
509
+ key: `${KEY_PREFIX}/Arduino/UploadProgressState`,
761
510
  default: 'ready'
762
511
  });
763
512
  /**
764
513
  * Arduino agent modal open status.
765
514
  */
766
- var exerciseArduinoAgentModalState = recoil.atom({
767
- key: "".concat(KEY_PREFIX, "/Arduino/AgentModalState"),
515
+ const exerciseArduinoAgentModalState = recoil.atom({
516
+ key: `${KEY_PREFIX}/Arduino/AgentModalState`,
768
517
  default: false
769
518
  });
770
519
  //
@@ -773,22 +522,22 @@ var exerciseArduinoAgentModalState = recoil.atom({
773
522
  /**
774
523
  *
775
524
  */
776
- var exerciseActiveFilenameState = recoil.atom({
777
- key: "".concat(KEY_PREFIX, "/ActiveFilename"),
525
+ const exerciseActiveFilenameState = recoil.atom({
526
+ key: `${KEY_PREFIX}/ActiveFilename`,
778
527
  default: null
779
528
  });
780
529
  /**
781
530
  *
782
531
  */
783
- var exerciseRightpaneActiveState = recoil.atom({
784
- key: "".concat(KEY_PREFIX, "/RightpaneActive"),
532
+ const exerciseRightpaneActiveState = recoil.atom({
533
+ key: `${KEY_PREFIX}/RightpaneActive`,
785
534
  default: null
786
535
  });
787
536
  /**
788
537
  *
789
538
  */
790
- var exerciseContainerSizeState = recoil.atom({
791
- key: "".concat(KEY_PREFIX, "/ContainerSize"),
539
+ const exerciseContainerSizeState = recoil.atom({
540
+ key: `${KEY_PREFIX}/ContainerSize`,
792
541
  default: {
793
542
  width: 0,
794
543
  height: 0
@@ -797,15 +546,15 @@ var exerciseContainerSizeState = recoil.atom({
797
546
  /**
798
547
  *
799
548
  */
800
- var exerciseAibotInfoEnableState = recoil.atom({
801
- key: "".concat(KEY_PREFIX, "/AibotInfoEnable"),
549
+ const exerciseAibotInfoEnableState = recoil.atom({
550
+ key: `${KEY_PREFIX}/AibotInfoEnable`,
802
551
  default: false
803
552
  });
804
553
  /**
805
554
  *
806
555
  */
807
- var exerciseFileEditorCursorState = recoil.atom({
808
- key: "".concat(KEY_PREFIX, "/FileEditorCursor"),
556
+ const exerciseFileEditorCursorState = recoil.atom({
557
+ key: `${KEY_PREFIX}/FileEditorCursor`,
809
558
  default: {
810
559
  from: 0,
811
560
  to: 0
@@ -814,15 +563,15 @@ var exerciseFileEditorCursorState = recoil.atom({
814
563
  /**
815
564
  *
816
565
  */
817
- var exerciseFileEditorCursorSelectionValueState = recoil.atom({
818
- key: "".concat(KEY_PREFIX, "/FileEditorCursorSelectionValue"),
566
+ const exerciseFileEditorCursorSelectionValueState = recoil.atom({
567
+ key: `${KEY_PREFIX}/FileEditorCursorSelectionValue`,
819
568
  default: null
820
569
  });
821
570
  /**
822
571
  *
823
572
  */
824
- var exerciseMonacoEditorApisState = recoil.atom({
825
- key: "".concat(KEY_PREFIX, "/MonacoEditorApisState"),
573
+ const exerciseMonacoEditorApisState = recoil.atom({
574
+ key: `${KEY_PREFIX}/MonacoEditorApisState`,
826
575
  default: null,
827
576
  dangerouslyAllowMutability: true
828
577
  });