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