@elice/material-exercise 1.240718.0-trasncript.2 → 1.240718.1

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