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