@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
@@ -2,8 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
- var jsxRuntime = require('react/jsx-runtime');
7
5
  var React = require('react');
8
6
  var reactUse = require('react-use');
9
7
  var apiClient = require('@elice/api-client');
@@ -35,63 +33,45 @@ require('ot-text-unicode');
35
33
  var useUsercodeEditWebSocket = require('../../../hooks/useUsercodeEditWebSocket.js');
36
34
  var ExerciseFileReadOnlyBanner = require('./ExerciseFileReadOnlyBanner.js');
37
35
 
38
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
39
-
40
- var React__default = /*#__PURE__*/_interopDefaultCompat(React);
41
-
42
36
  //
43
37
  //
44
38
  //
45
39
  /**
46
40
  * Exercise file (code) editor for editable files
47
41
  */
48
- var ExerciseFileEditor = function ExerciseFileEditor() {
49
- var _React$useContext = React__default.default.useContext(context.ExerciseContext),
50
- materialExerciseId = _React$useContext.materialExerciseId,
51
- exerciseRoomId = _React$useContext.exerciseRoomId,
52
- readOnlyEditor = _React$useContext.readOnlyEditor,
53
- readOnlyActiveFile = _React$useContext.readOnlyActiveFile,
54
- locale = _React$useContext.locale,
55
- onCodeEditorChange = _React$useContext.onCodeEditorChange;
56
- var exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
57
- var exerciseRoom = recoil.useRecoilValue(recoil$1.exerciseRoomState(exerciseRoomId));
58
- var lecture = recoil.useRecoilValue(recoil$1.exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
59
- var preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
60
- var activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
61
- var readOnly = readOnlyEditor || readOnlyActiveFile;
62
- var setUsercodeWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('usercodeEdit'));
63
- var _React$useState = React__default.default.useState(null),
64
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
65
- fileEditorContent = _React$useState2[0],
66
- setFileEditorContent = _React$useState2[1];
67
- var setFileEditorCursorState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorState);
68
- var _useRecoilState = recoil.useRecoilState(recoil$1.exerciseFileEditorCursorSelectionValueState),
69
- _useRecoilState2 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState, 2),
70
- fileEditorCursorSelectionValue = _useRecoilState2[0],
71
- setFileEditorCursorSelectionValue = _useRecoilState2[1];
42
+ const ExerciseFileEditor = () => {
43
+ const {
44
+ materialExerciseId,
45
+ exerciseRoomId,
46
+ readOnlyEditor,
47
+ readOnlyActiveFile,
48
+ locale,
49
+ onCodeEditorChange
50
+ } = React.useContext(context.ExerciseContext);
51
+ const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
52
+ const exerciseRoom = recoil.useRecoilValue(recoil$1.exerciseRoomState(exerciseRoomId));
53
+ const lecture = recoil.useRecoilValue(recoil$1.exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
54
+ const preference = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
55
+ const activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
56
+ const readOnly = readOnlyEditor || readOnlyActiveFile;
57
+ const setUsercodeWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('usercodeEdit'));
58
+ const [fileEditorContent, setFileEditorContent] = React.useState(null);
59
+ const setFileEditorCursorState = recoil.useSetRecoilState(recoil$1.exerciseFileEditorCursorState);
60
+ const [fileEditorCursorSelectionValue, setFileEditorCursorSelectionValue] = recoil.useRecoilState(recoil$1.exerciseFileEditorCursorSelectionValueState);
72
61
  // editor
73
- var editorApis = React__default.default.useRef(null);
74
- var editorDocHistories = React__default.default.useRef({});
75
- var serverInitiatedVersions = React__default.default.useRef([]);
62
+ const editorApis = React.useRef(null);
63
+ const editorDocHistories = React.useRef({});
64
+ const serverInitiatedVersions = React.useRef([]);
76
65
  // ready state
77
- var _React$useState3 = React__default.default.useState(false),
78
- _React$useState4 = _rollupPluginBabelHelpers.slicedToArray(_React$useState3, 2),
79
- isEditorReady = _React$useState4[0],
80
- setEditorReady = _React$useState4[1];
81
- var _React$useState5 = React__default.default.useState(false),
82
- _React$useState6 = _rollupPluginBabelHelpers.slicedToArray(_React$useState5, 2),
83
- isWebSocketReady = _React$useState6[0],
84
- setWebSocketReady = _React$useState6[1];
85
- var isReady = isEditorReady && isWebSocketReady;
86
- var _React$useState7 = React__default.default.useState(exerciseFile.checkExerciseFileResettable(activeFilename, {
87
- exercise: exercise,
88
- exerciseRoom: exerciseRoom
89
- })),
90
- _React$useState8 = _rollupPluginBabelHelpers.slicedToArray(_React$useState7, 2),
91
- isFileResettable = _React$useState8[0],
92
- setFileResettable = _React$useState8[1];
93
- var setExerciseMonacoEditorApisState = recoil.useSetRecoilState(recoil$1.exerciseMonacoEditorApisState);
94
- React__default.default.useEffect(function () {
66
+ const [isEditorReady, setEditorReady] = React.useState(false);
67
+ const [isWebSocketReady, setWebSocketReady] = React.useState(false);
68
+ const isReady = isEditorReady && isWebSocketReady;
69
+ const [isFileResettable, setFileResettable] = React.useState(exerciseFile.checkExerciseFileResettable(activeFilename, {
70
+ exercise,
71
+ exerciseRoom
72
+ }));
73
+ const setExerciseMonacoEditorApisState = recoil.useSetRecoilState(recoil$1.exerciseMonacoEditorApisState);
74
+ React.useEffect(() => {
95
75
  if (editorApis.current) {
96
76
  setExerciseMonacoEditorApisState(editorApis.current);
97
77
  }
@@ -100,78 +80,48 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
100
80
  /**
101
81
  * Set value of current file.
102
82
  */
103
- var setValue = /*#__PURE__*/function () {
104
- var _ref = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee(content) {
105
- var _a, readyExerciseImage;
106
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
107
- while (1) switch (_context.prev = _context.next) {
108
- case 0:
109
- if (isFileResettable) {
110
- _context.next = 3;
111
- break;
112
- }
113
- console.warn('Cannot reset file since not resettable.');
114
- return _context.abrupt("return");
115
- case 3:
116
- if (activeFilename) {
117
- _context.next = 6;
118
- break;
119
- }
120
- console.warn('Cannot reset file since no file selected.');
121
- return _context.abrupt("return");
122
- case 6:
123
- if (!content) {
124
- _context.next = 10;
125
- break;
126
- }
127
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
128
- _context.next = 15;
129
- break;
130
- case 10:
131
- if (!(content === null)) {
132
- _context.next = 15;
133
- break;
134
- }
135
- readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
136
- if (!(!editorApis.current || !readyExerciseImage)) {
137
- _context.next = 14;
138
- break;
139
- }
140
- return _context.abrupt("return");
141
- case 14:
142
- return _context.abrupt("return", apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
143
- exerciseImageId: readyExerciseImage.id,
144
- filename: activeFilename
145
- }).then(function (res) {
146
- return res.exerciseFile.content;
147
- }).then(function (content) {
148
- var _a;
149
- if (typeof content === 'string') {
150
- (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
151
- } else {
152
- setFileResettable(false);
153
- }
154
- }));
155
- case 15:
156
- case "end":
157
- return _context.stop();
83
+ const setValue = async content => {
84
+ var _a;
85
+ if (!isFileResettable) {
86
+ console.warn('Cannot reset file since not resettable.');
87
+ return;
88
+ }
89
+ if (!activeFilename) {
90
+ console.warn('Cannot reset file since no file selected.');
91
+ return;
92
+ }
93
+ if (content) {
94
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
95
+ }
96
+ // reset as initial value on `null` received.
97
+ else if (content === null) {
98
+ const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
99
+ if (!editorApis.current || !readyExerciseImage) {
100
+ return;
101
+ }
102
+ return apiClient.getOrgMaterialExerciseExerciseImageExerciseFileGet({
103
+ exerciseImageId: readyExerciseImage.id,
104
+ filename: activeFilename
105
+ }).then(res => res.exerciseFile.content).then(content => {
106
+ var _a;
107
+ if (typeof content === 'string') {
108
+ (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.setValue(content);
109
+ } else {
110
+ setFileResettable(false);
158
111
  }
159
- }, _callee);
160
- }));
161
- return function setValue(_x) {
162
- return _ref.apply(this, arguments);
163
- };
164
- }();
112
+ });
113
+ }
114
+ };
165
115
  /**
166
116
  * Update editor document history.
167
117
  */
168
- var pushEditorDocHistories = function pushEditorDocHistories() {
169
- var _editorApis = editorApis.current;
118
+ const pushEditorDocHistories = () => {
119
+ const _editorApis = editorApis.current;
170
120
  if (!_editorApis) {
171
121
  return;
172
122
  }
173
123
  if (typeof _editorApis.getMonacoModel === 'function') {
174
- var model = _editorApis.getMonacoModel();
124
+ const model = _editorApis.getMonacoModel();
175
125
  if (model) {
176
126
  editorDocHistories.current[model.getVersionId()] = model.getValue();
177
127
  }
@@ -181,105 +131,85 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
181
131
  * Handle usercode edit websocket received `WRITE_NOTI` message,
182
132
  * move cursor or insert / delete content.
183
133
  */
184
- var handleWebsocketUsercodeWriteNoti = function handleWebsocketUsercodeWriteNoti(ots) {
134
+ const handleWebsocketUsercodeWriteNoti = ots => {
185
135
  var _a, _b, _c;
186
- var cursor = 0;
187
- var _iterator = _rollupPluginBabelHelpers.createForOfIteratorHelper(ots),
188
- _step;
189
- try {
190
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
191
- var ot = _step.value;
192
- var model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
193
- if (!model) {
194
- continue;
195
- }
196
- // remove previous versions.
197
- if (serverInitiatedVersions.current.length > 100) {
198
- serverInitiatedVersions.current.splice(0, 50);
199
- }
200
- switch (_rollupPluginBabelHelpers.typeof(ot)) {
201
- // cursor changed...
202
- case 'number':
203
- cursor += ot;
204
- break;
205
- // insertion
206
- case 'string':
207
- serverInitiatedVersions.current.push(model.getVersionId());
208
- (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
209
- cursor += ot.length;
210
- break;
211
- // deletion
212
- default:
213
- serverInitiatedVersions.current.push(model.getVersionId());
214
- (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
215
- break;
216
- }
136
+ let cursor = 0;
137
+ for (const ot of ots) {
138
+ const model = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getMonacoModel();
139
+ if (!model) {
140
+ continue;
141
+ }
142
+ // remove previous versions.
143
+ if (serverInitiatedVersions.current.length > 100) {
144
+ serverInitiatedVersions.current.splice(0, 50);
145
+ }
146
+ switch (typeof ot) {
147
+ // cursor changed...
148
+ case 'number':
149
+ cursor += ot;
150
+ break;
151
+ // insertion
152
+ case 'string':
153
+ serverInitiatedVersions.current.push(model.getVersionId());
154
+ (_b = editorApis.current) === null || _b === void 0 ? void 0 : _b.insertValue(cursor, ot);
155
+ cursor += ot.length;
156
+ break;
157
+ // deletion
158
+ default:
159
+ serverInitiatedVersions.current.push(model.getVersionId());
160
+ (_c = editorApis.current) === null || _c === void 0 ? void 0 : _c.removeValue(cursor, cursor + (typeof ot.d === 'number' ? ot.d : ot.d.length));
161
+ break;
217
162
  }
218
- } catch (err) {
219
- _iterator.e(err);
220
- } finally {
221
- _iterator.f();
222
163
  }
223
164
  };
224
165
  /**
225
166
  * Usercode edit web socket.
226
167
  */
227
- var wsUsercode = useUsercodeEditWebSocket.useUsercodeEditWebSocket({
228
- exerciseRoomId: exerciseRoomId,
168
+ const wsUsercode = useUsercodeEditWebSocket.useUsercodeEditWebSocket({
169
+ exerciseRoomId,
229
170
  filename: activeFilename,
230
- onInit: function onInit() {
231
- return setWebSocketReady(true);
232
- },
171
+ onInit: () => setWebSocketReady(true),
233
172
  onWriteNoti: handleWebsocketUsercodeWriteNoti
234
173
  });
235
174
  /**
236
175
  *
237
176
  */
238
- var handleChange = function handleChange(e) {
177
+ const handleChange = e => {
239
178
  var _a, _b;
240
179
  setFileEditorContent((_b = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getValue()) !== null && _b !== void 0 ? _b : '');
241
180
  // === server initiated ===
242
- var index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
181
+ const index = serverInitiatedVersions.current.indexOf(e.versionId - 1);
243
182
  if (index !== -1) {
244
183
  serverInitiatedVersions.current.splice(index, 1);
245
184
  return;
246
185
  }
247
186
  // get previous model doc
248
- var prevDoc = editorDocHistories.current[e.versionId - 1];
187
+ const prevDoc = editorDocHistories.current[e.versionId - 1];
249
188
  // send OTs to server
250
- var _iterator2 = _rollupPluginBabelHelpers.createForOfIteratorHelper(e.changes),
251
- _step2;
252
- try {
253
- for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
254
- var change = _step2.value;
255
- // insertion
256
- if (change.rangeLength === 0 && !readOnly) {
257
- wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
189
+ for (const change of e.changes) {
190
+ // insertion
191
+ if (change.rangeLength === 0 && !readOnly) {
192
+ wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
193
+ }
194
+ // deletion
195
+ else {
196
+ if (prevDoc && !readOnly) {
197
+ wsUsercode.sendOTs([change.rangeOffset || null, {
198
+ d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
199
+ }].filter(Boolean));
258
200
  }
259
- // deletion
260
- else {
261
- if (prevDoc && !readOnly) {
262
- wsUsercode.sendOTs([change.rangeOffset || null, {
263
- d: prevDoc.slice(change.rangeOffset, change.rangeOffset + change.rangeLength)
264
- }].filter(Boolean));
265
- }
266
- // replace
267
- if (change.text.length > 0 && !readOnly) {
268
- wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
269
- }
201
+ // replace
202
+ if (change.text.length > 0 && !readOnly) {
203
+ wsUsercode.sendOTs(change.rangeOffset > 0 ? [change.rangeOffset, change.text] : [change.text]);
270
204
  }
271
205
  }
272
- } catch (err) {
273
- _iterator2.e(err);
274
- } finally {
275
- _iterator2.f();
276
206
  }
277
207
  delete editorDocHistories.current[e.versionId - 1];
278
208
  };
279
209
  /**
280
210
  * Handle editor cursor change.
281
211
  */
282
- var handleEditorCursor = function handleEditorCursor(range) {
212
+ const handleEditorCursor = range => {
283
213
  var _a, _b;
284
214
  if (!readOnly) {
285
215
  wsUsercode.sendCursor(range);
@@ -290,34 +220,34 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
290
220
  /**
291
221
  * Handle editor save shortcut emitted.
292
222
  */
293
- var handleSave = function handleSave() {
223
+ const handleSave = () => {
294
224
  subjects.exerciseFileEditorSaveAction$.next();
295
225
  };
296
226
  //
297
227
  // Handle editor content change.
298
228
  //
299
- React__default.default.useEffect(function () {
229
+ React.useEffect(() => {
300
230
  var _a, _b;
301
- var _editorApis = editorApis.current;
231
+ const _editorApis = editorApis.current;
302
232
  if (!_editorApis || !isReady) {
303
233
  return;
304
234
  }
305
235
  _editorApis.setValue(wsUsercode.doc);
306
236
  pushEditorDocHistories();
307
- var subscription = undefined;
237
+ let subscription = undefined;
308
238
  if (utils.FlutterApp.checkWebview()) {
309
- subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(function (e) {
239
+ subscription = (_a = _editorApis.editor) === null || _a === void 0 ? void 0 : _a.onDidChangeModelContent(e => {
310
240
  pushEditorDocHistories();
311
241
  handleChange(e);
312
242
  utils.FlutterApp.onDidChangeContent();
313
243
  });
314
244
  } else {
315
- subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(function (e) {
245
+ subscription = (_b = _editorApis.editor) === null || _b === void 0 ? void 0 : _b.onDidChangeModelContent(e => {
316
246
  pushEditorDocHistories();
317
247
  handleChange(e);
318
248
  });
319
249
  }
320
- return function () {
250
+ return () => {
321
251
  if (subscription) {
322
252
  subscription.dispose();
323
253
  }
@@ -328,21 +258,17 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
328
258
  //
329
259
  // Handle websocket status change.
330
260
  //
331
- React__default.default.useEffect(function () {
332
- return setUsercodeWebSocketState(wsUsercode.readyState);
333
- },
261
+ React.useEffect(() => setUsercodeWebSocketState(wsUsercode.readyState),
334
262
  // eslint-disable-next-line react-hooks/exhaustive-deps
335
263
  [wsUsercode.readyState]);
336
264
  //
337
265
  // handle content change request to code editor.
338
266
  //
339
- React__default.default.useEffect(function () {
340
- var contentChangeSub = subjects.exerciseFileEditorContentChange$.subscribe(function (v) {
341
- setValue(v).catch(function () {
342
- return void 0;
343
- });
267
+ React.useEffect(() => {
268
+ const contentChangeSub = subjects.exerciseFileEditorContentChange$.subscribe(v => {
269
+ setValue(v).catch(() => void 0);
344
270
  });
345
- return function () {
271
+ return () => {
346
272
  contentChangeSub.unsubscribe();
347
273
  };
348
274
  },
@@ -351,7 +277,7 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
351
277
  //
352
278
  // Emit editor change event to parent component.
353
279
  //
354
- reactUse.useDebounce(function () {
280
+ reactUse.useDebounce(() => {
355
281
  if (!isReady) {
356
282
  return;
357
283
  }
@@ -369,7 +295,7 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
369
295
  //
370
296
  // Update file content on active file change.
371
297
  //
372
- React.useEffect(function () {
298
+ React.useEffect(() => {
373
299
  var _a, _b;
374
300
  if (activeFilename && isReady) {
375
301
  setFileEditorContent((_b = (_a = editorApis.current) === null || _a === void 0 ? void 0 : _a.getValue()) !== null && _b !== void 0 ? _b : '');
@@ -380,42 +306,40 @@ var ExerciseFileEditor = function ExerciseFileEditor() {
380
306
  //
381
307
  // empty file
382
308
  if (!activeFilename) {
383
- return jsxRuntime.jsx(ExerciseFileShimmer.default, {});
309
+ return React.createElement(ExerciseFileShimmer.default, null);
384
310
  }
385
311
  // non-editable file
386
312
  if (!wsUsercode.docEditable) {
387
- return jsxRuntime.jsx(FileViewerNonViewable.default, {
313
+ return React.createElement(FileViewerNonViewable.default, {
388
314
  filename: activeFilename,
389
315
  locale: locale
390
316
  });
391
317
  }
392
318
  // websocket not ready
393
319
  if (!isWebSocketReady) {
394
- return jsxRuntime.jsx(ExerciseFileShimmer.default, {});
320
+ return React.createElement(ExerciseFileShimmer.default, null);
395
321
  }
396
- var uniqueFilePath = "code/".concat(exerciseRoomId);
397
- var editorFilename = "".concat(uniqueFilePath, "/").concat(activeFilename);
398
- return jsxRuntime.jsxs(blocks.Flex, {
322
+ const uniqueFilePath = `code/${exerciseRoomId}`;
323
+ const editorFilename = `${uniqueFilePath}/${activeFilename}`;
324
+ return React.createElement(blocks.Flex, {
399
325
  column: true,
400
326
  width: "100%",
401
- height: "100%",
402
- children: [jsxRuntime.jsx(ExerciseFileReadOnlyBanner.default, {}), jsxRuntime.jsx(MonacoEditorLazy.default, {
403
- defaultValue: "",
404
- filename: editorFilename,
405
- markers: wsUsercode.markers,
406
- preference: Object.assign(Object.assign({}, preference), {
407
- readOnly: readOnly
408
- }),
409
- noLanguageIntellisense: (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === types.enums.LectureType.Test,
410
- locale: locale,
411
- onLoad: function onLoad() {
412
- return setEditorReady(true);
413
- },
414
- onCursor: handleEditorCursor,
415
- onSave: handleSave,
416
- ref: editorApis
417
- }, editorFilename)]
418
- });
327
+ height: "100%"
328
+ }, React.createElement(ExerciseFileReadOnlyBanner.default, null), React.createElement(MonacoEditorLazy.default, {
329
+ key: editorFilename,
330
+ defaultValue: "",
331
+ filename: editorFilename,
332
+ markers: wsUsercode.markers,
333
+ preference: Object.assign(Object.assign({}, preference), {
334
+ readOnly
335
+ }),
336
+ noLanguageIntellisense: (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === types.enums.LectureType.Test,
337
+ locale: locale,
338
+ onLoad: () => setEditorReady(true),
339
+ onCursor: handleEditorCursor,
340
+ onSave: handleSave,
341
+ ref: editorApis
342
+ }));
419
343
  };
420
344
 
421
345
  exports.default = ExerciseFileEditor;
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var jsxRuntime = require('react/jsx-runtime');
6
5
  var React = require('react');
7
6
  var blocks = require('@elice/blocks');
8
7
  var designTokens = require('@elice/design-tokens');
@@ -16,33 +15,27 @@ require('../context/ExerciseProvider.js');
16
15
  var en = require('./locales/en.json.js');
17
16
  var ko = require('./locales/ko.json.js');
18
17
 
19
- function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
20
-
21
- var React__default = /*#__PURE__*/_interopDefaultCompat(React);
22
- var styled__default = /*#__PURE__*/_interopDefaultCompat(styled);
23
-
24
- var StyledEditorReadOnlyBanner = styled__default.default.div.withConfig({
18
+ const StyledEditorReadOnlyBanner = styled.div.withConfig({
25
19
  componentId: "sc-kh9iw2-0"
26
20
  })(["flex:0 0 auto;display:flex;align-items:center;margin:0.75rem;padding:0 1rem;height:2rem;border:1px solid ", ";border-radius:2px;"], designTokens.base.color.navy5);
27
21
  /**
28
22
  * Banner for readonly exercise file.
29
23
  */
30
- var ExerciseFileReadOnlyBanner = function ExerciseFileReadOnlyBanner(_ref) {
31
- var __intl = _ref.__intl;
32
- var _React$useContext = React__default.default.useContext(context.ExerciseContext),
33
- readOnlyActiveFile = _React$useContext.readOnlyActiveFile;
24
+ const ExerciseFileReadOnlyBanner = ({
25
+ __intl
26
+ }) => {
27
+ const {
28
+ readOnlyActiveFile
29
+ } = React.useContext(context.ExerciseContext);
34
30
  if (!readOnlyActiveFile) {
35
31
  return null;
36
32
  }
37
- return jsxRuntime.jsx(StyledEditorReadOnlyBanner, {
38
- children: jsxRuntime.jsx(blocks.Text, {
39
- size: "tiny",
40
- role: "gray3",
41
- children: __intl.formatMessage({
42
- id: 'materialExercise.text.readOnlyBanner'
43
- })
44
- })
45
- });
33
+ return React.createElement(StyledEditorReadOnlyBanner, null, React.createElement(blocks.Text, {
34
+ size: "tiny",
35
+ role: "gray3"
36
+ }, __intl.formatMessage({
37
+ id: 'materialExercise.text.readOnlyBanner'
38
+ })));
46
39
  };
47
40
  //
48
41
  //