@elice/material-exercise 1.231212.0 → 1.231228.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
  2. package/cjs/components/material-exercise/MaterialExercise.js +54 -59
  3. package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
  4. package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
  5. package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
  6. package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
  7. package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
  8. package/cjs/components/material-exercise/context/context.js +1 -7
  9. package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
  10. package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
  11. package/cjs/components/material-exercise/context/recoil.js +293 -544
  12. package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
  13. package/cjs/components/material-exercise/context/subjects.js +3 -5
  14. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
  15. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
  16. package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
  17. package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
  18. package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
  19. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
  20. package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
  21. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
  22. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
  23. package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
  24. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
  25. package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
  26. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
  27. package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
  28. package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
  29. package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
  30. package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
  31. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
  32. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
  33. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
  34. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
  35. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
  36. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
  37. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
  38. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  39. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  40. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
  41. package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
  42. package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
  43. package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
  44. package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
  45. package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
  46. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
  47. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
  48. package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
  49. package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
  50. package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
  51. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
  52. package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
  53. package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
  54. package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
  55. package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
  56. package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
  57. package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
  58. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
  59. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
  60. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
  61. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
  62. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
  63. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
  64. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
  65. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
  66. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
  67. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
  68. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
  69. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  70. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  71. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
  72. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
  73. package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
  74. package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
  76. package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
  77. package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
  78. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
  79. package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
  80. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
  81. package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
  82. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
  83. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
  84. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
  85. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
  86. package/cjs/components/shared/file-icon/FileIcon.js +17 -23
  87. package/cjs/components/shared/file-tabs/FileTab.js +30 -36
  88. package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
  89. package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
  90. package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
  91. package/cjs/components/shared/file-tabs/util.js +14 -29
  92. package/cjs/components/shared/file-tree/FileTree.js +12 -17
  93. package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
  94. package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
  95. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
  96. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
  97. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
  98. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
  99. package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
  100. package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
  101. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
  102. package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
  103. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
  104. package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
  105. package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
  106. package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
  107. package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
  108. package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
  109. package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
  110. package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
  111. package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
  112. package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
  113. package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
  114. package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
  115. package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
  116. package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
  117. package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
  118. package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
  119. package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
  120. package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
  121. package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
  122. package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
  123. package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
  124. package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
  125. package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
  126. package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
  127. package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
  128. package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
  129. package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
  130. package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
  131. package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
  132. package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
  133. package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
  134. package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
  135. package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
  136. package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
  137. package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
  138. package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
  139. package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
  140. package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
  141. package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
  142. package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
  143. package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
  144. package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
  145. package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
  146. package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
  147. package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
  148. package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
  149. package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
  150. package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
  151. package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
  152. package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
  153. package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
  154. package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
  155. package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
  156. package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
  157. package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
  158. package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
  159. package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
  160. package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
  161. package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
  162. package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
  163. package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
  164. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
  165. package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
  166. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
  167. package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
  168. package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
  169. package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
  170. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
  171. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
  172. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
  173. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
  174. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
  175. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
  176. package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
  177. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
  178. package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
  179. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
  180. package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
  181. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
  182. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
  183. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
  184. package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
  185. package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
  186. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
  187. package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
  188. package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
  189. package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
  190. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
  191. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
  192. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
  193. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
  194. package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
  195. package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
  196. package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
  197. package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
  198. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
  199. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
  200. package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
  201. package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
  202. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
  203. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
  204. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
  205. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
  206. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
  207. package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
  208. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
  209. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
  210. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
  211. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
  212. package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
  213. package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
  214. package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
  215. package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
  216. package/cjs/components/shared/xterm/Xterm.js +58 -81
  217. package/cjs/components/shared/xterm/XtermLazy.js +5 -11
  218. package/cjs/components/shared/xterm/locales/en.json.js +1 -1
  219. package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
  220. package/cjs/components/shared/xterm/utils/index.js +0 -2
  221. package/cjs/constants/arduino.js +10 -12
  222. package/cjs/constants/shortcutKeyMap.js +2 -4
  223. package/cjs/constants/stylesheets.js +5 -9
  224. package/cjs/hooks/useArduino.js +141 -284
  225. package/cjs/hooks/useExerciseFile.js +22 -26
  226. package/cjs/hooks/useExericseShortcut.js +4 -8
  227. package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
  228. package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
  229. package/cjs/hooks/useStdioTextConcator.js +10 -22
  230. package/cjs/hooks/useStdioWebSocket.js +28 -34
  231. package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
  232. package/cjs/hooks/useUsercodeHistory.js +63 -117
  233. package/cjs/index.js +4 -6
  234. package/cjs/utils/arduino.js +11 -25
  235. package/cjs/utils/exerciseFile.js +10 -10
  236. package/cjs/utils/runner.js +15 -31
  237. package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
  238. package/es/components/material-exercise/MaterialExercise.js +34 -35
  239. package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
  240. package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
  241. package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
  242. package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
  243. package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
  244. package/es/components/material-exercise/context/context.js +1 -1
  245. package/es/components/material-exercise/context/recoil.js +290 -535
  246. package/es/components/material-exercise/context/subjects.js +3 -3
  247. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
  248. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
  249. package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
  250. package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
  251. package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
  252. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
  253. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
  254. package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
  255. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
  256. package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
  257. package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
  258. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
  259. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
  260. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
  261. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
  262. package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
  263. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
  264. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
  265. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
  266. package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
  267. package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
  268. package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
  269. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
  270. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
  271. package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
  272. package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
  273. package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
  274. package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
  275. package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
  276. package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
  277. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
  278. package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
  279. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
  280. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
  281. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
  282. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
  283. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
  284. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
  285. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
  286. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
  287. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
  288. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
  289. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
  290. package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
  291. package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
  292. package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
  293. package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
  294. package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
  295. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
  296. package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
  297. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
  298. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
  299. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
  300. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
  301. package/es/components/shared/file-icon/FileIcon.js +15 -17
  302. package/es/components/shared/file-tabs/FileTab.js +22 -24
  303. package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
  304. package/es/components/shared/file-tabs/FileTabs.js +35 -55
  305. package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
  306. package/es/components/shared/file-tabs/util.js +14 -27
  307. package/es/components/shared/file-tree/FileTree.js +3 -3
  308. package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
  309. package/es/components/shared/file-tree/FileTreeList.js +33 -29
  310. package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
  311. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
  312. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
  313. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
  314. package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
  315. package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
  316. package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
  317. package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
  318. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
  319. package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
  320. package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
  321. package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
  322. package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
  323. package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
  324. package/es/components/shared/file-viewer/FileViewer.js +21 -38
  325. package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
  326. package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
  327. package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
  328. package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
  329. package/es/components/shared/file-viewer/FileViewerText.js +9 -17
  330. package/es/components/shared/material-modal/MaterialModal.js +8 -7
  331. package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
  332. package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
  333. package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
  334. package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
  335. package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
  336. package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
  337. package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
  338. package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
  339. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
  340. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
  341. package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
  342. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
  343. package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
  344. package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
  345. package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
  346. package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
  347. package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
  348. package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
  349. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
  350. package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
  351. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
  352. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
  353. package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
  354. package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
  355. package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
  356. package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
  357. package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
  358. package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
  359. package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
  360. package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
  361. package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
  362. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
  363. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
  364. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
  365. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
  366. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
  367. package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
  368. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
  369. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
  370. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
  371. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
  372. package/es/components/shared/no-vnc/NoVnc.js +42 -59
  373. package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
  374. package/es/components/shared/preview-container/PreviewContainer.js +8 -7
  375. package/es/components/shared/web-browser/WebBrowser.js +29 -40
  376. package/es/components/shared/xterm/Xterm.js +51 -69
  377. package/es/components/shared/xterm/XtermLazy.js +2 -4
  378. package/es/constants/arduino.js +10 -10
  379. package/es/constants/shortcutKeyMap.js +1 -3
  380. package/es/constants/stylesheets.js +5 -7
  381. package/es/hooks/useArduino.js +141 -278
  382. package/es/hooks/useExerciseFile.js +22 -24
  383. package/es/hooks/useExericseShortcut.js +4 -6
  384. package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
  385. package/es/hooks/useRunnerRoomWebSocket.js +27 -51
  386. package/es/hooks/useStdioTextConcator.js +10 -16
  387. package/es/hooks/useStdioWebSocket.js +28 -32
  388. package/es/hooks/useUsercodeEditWebSocket.js +157 -232
  389. package/es/hooks/useUsercodeHistory.js +63 -115
  390. package/es/utils/arduino.js +11 -23
  391. package/es/utils/exerciseFile.js +10 -8
  392. package/es/utils/runner.js +15 -29
  393. package/package.json +11 -7
  394. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
  395. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
@@ -7,25 +7,24 @@ import styled from 'styled-components';
7
7
  //
8
8
  //
9
9
  //
10
- var StyledMenuButtonWrap = styled.span.withConfig({
10
+ const StyledMenuButtonWrap = styled.span.withConfig({
11
11
  componentId: "sc-48m0vh-0"
12
12
  })(["position:relative;"]);
13
- var StyledMenuButton = styled(IconButton).withConfig({
13
+ const StyledMenuButton = styled(IconButton).withConfig({
14
14
  componentId: "sc-48m0vh-1"
15
- })(["", ""], function (_ref) {
16
- var active = _ref.active;
17
- return active && "background: ".concat(base.color.navy6, " !important;");
18
- });
15
+ })(["", ""], ({
16
+ active
17
+ }) => active && `background: ${base.color.navy6} !important;`);
19
18
  //
20
19
  //
21
20
  //
22
- var ExerciseMenuButton = forwardRef(function (_a, ref) {
23
- var children = _a.children,
24
- _a$active = _a.active,
25
- active = _a$active === void 0 ? false : _a$active,
26
- title = _a.title,
27
- _a$placement = _a.placement,
28
- placement = _a$placement === void 0 ? 'bottom-end' : _a$placement,
21
+ const ExerciseMenuButton = forwardRef((_a, ref) => {
22
+ var {
23
+ children,
24
+ active = false,
25
+ title,
26
+ placement = 'bottom-end'
27
+ } = _a,
29
28
  props = __rest(_a, ["children", "active", "title", "placement"]);
30
29
  return React.createElement(Tooltip, {
31
30
  title: title,
@@ -3,10 +3,10 @@ import { Shimmer, Vspace } from '@elice/blocks';
3
3
  import { base } from '@elice/design-tokens';
4
4
  import styled from 'styled-components';
5
5
 
6
- var StyledFileShimmerWrap = styled.div.withConfig({
6
+ const StyledFileShimmerWrap = styled.div.withConfig({
7
7
  componentId: "sc-mf825x-0"
8
8
  })(["padding:1rem;width:100%;height:100%;background:", ";overflow:hidden;"], base.color.navy9);
9
- var ExerciseFileShimmer = function ExerciseFileShimmer() {
9
+ const ExerciseFileShimmer = () => {
10
10
  return React.createElement(StyledFileShimmerWrap, null, React.createElement(Shimmer, {
11
11
  width: "150px",
12
12
  height: "1rem",
@@ -3,25 +3,25 @@ import { Shimmer, Hspace } from '@elice/blocks';
3
3
  import { base } from '@elice/design-tokens';
4
4
  import styled from 'styled-components';
5
5
 
6
- var TAB_HEIGHT = 36;
7
- var TAB_CONTENT_GAP = 8;
8
- var TAB_CONTENT_FILENAME_HEIGHT = 16;
9
- var TAB_CONTENT_CLOSE_BUTTON_SIZE = 14;
10
- var StyledDummyFileTab = styled.div.withConfig({
6
+ const TAB_HEIGHT = 36;
7
+ const TAB_CONTENT_GAP = 8;
8
+ const TAB_CONTENT_FILENAME_HEIGHT = 16;
9
+ const TAB_CONTENT_CLOSE_BUTTON_SIZE = 14;
10
+ const StyledDummyFileTab = styled.div.withConfig({
11
11
  componentId: "sc-q9m9qo-0"
12
12
  })(["display:flex;align-items:center;padding:0 0.5rem;height:", "px;border-right:1px solid ", ";background-color:", ";overflow:hidden;"], TAB_HEIGHT, base.color.navy9, base.color.navy8);
13
- var ExerciseFileTabShimmer = function ExerciseFileTabShimmer(_ref) {
14
- var _ref$width = _ref.width,
15
- width = _ref$width === void 0 ? 150 : _ref$width;
13
+ const ExerciseFileTabShimmer = ({
14
+ width = 150
15
+ }) => {
16
16
  return React.createElement(StyledDummyFileTab, null, React.createElement(Shimmer, {
17
- width: "".concat(width, "px"),
18
- height: "".concat(TAB_CONTENT_FILENAME_HEIGHT, "px"),
17
+ width: `${width}px`,
18
+ height: `${TAB_CONTENT_FILENAME_HEIGHT}px`,
19
19
  dark: true
20
20
  }), React.createElement(Hspace, {
21
21
  width: TAB_CONTENT_GAP / 16
22
22
  }), React.createElement(Shimmer, {
23
- width: "".concat(TAB_CONTENT_CLOSE_BUTTON_SIZE, "px"),
24
- height: "".concat(TAB_CONTENT_CLOSE_BUTTON_SIZE, "px"),
23
+ width: `${TAB_CONTENT_CLOSE_BUTTON_SIZE}px`,
24
+ height: `${TAB_CONTENT_CLOSE_BUTTON_SIZE}px`,
25
25
  dark: true
26
26
  }));
27
27
  };
@@ -3,10 +3,10 @@ import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
  import ExerciseFileTabShimmer from './ExerciseFileTabShimmer.js';
5
5
 
6
- var StyledShimmerWrapper = styled.div.withConfig({
6
+ const StyledShimmerWrapper = styled.div.withConfig({
7
7
  componentId: "sc-107bpmt-0"
8
8
  })(["display:flex;width:100%;height:100%;background-color:", ";overflow:hidden;"], base.color.navy9);
9
- var ExerciseFileTabsShimmer = function ExerciseFileTabsShimmer() {
9
+ const ExerciseFileTabsShimmer = () => {
10
10
  return React.createElement(StyledShimmerWrapper, null, React.createElement(ExerciseFileTabShimmer, {
11
11
  width: 120
12
12
  }), React.createElement(ExerciseFileTabShimmer, {
@@ -2,29 +2,29 @@ import React from 'react';
2
2
  import { Shimmer, Hspace } from '@elice/blocks';
3
3
  import styled from 'styled-components';
4
4
 
5
- var FILE_TREE_LIST_ITEM_HORIZONTAL_PADDING = 14;
6
- var FILE_TREE_LIST_ITEM_HEIGHT = 28;
7
- var FILE_TREE_LIST_ITEM_ICON_SIZE = 16;
8
- var FILE_TREE_LIST_ITEM_GAP = 8;
9
- var FILE_TREE_LIST_ITEM_FILENAME_HEIGHT = 14;
10
- var StyledDummyListItemIconShimmer = styled(Shimmer).withConfig({
5
+ const FILE_TREE_LIST_ITEM_HORIZONTAL_PADDING = 14;
6
+ const FILE_TREE_LIST_ITEM_HEIGHT = 28;
7
+ const FILE_TREE_LIST_ITEM_ICON_SIZE = 16;
8
+ const FILE_TREE_LIST_ITEM_GAP = 8;
9
+ const FILE_TREE_LIST_ITEM_FILENAME_HEIGHT = 14;
10
+ const StyledDummyListItemIconShimmer = styled(Shimmer).withConfig({
11
11
  componentId: "sc-x7bcnn-0"
12
12
  })(["flex:0 0 ", "px;"], FILE_TREE_LIST_ITEM_ICON_SIZE);
13
- var StyledDummyListItem = styled.li.withConfig({
13
+ const StyledDummyListItem = styled.li.withConfig({
14
14
  componentId: "sc-x7bcnn-1"
15
15
  })(["display:flex;align-items:center;margin:0;padding:0 ", "px;width:100%;height:", "px;list-style:none;"], FILE_TREE_LIST_ITEM_HORIZONTAL_PADDING, FILE_TREE_LIST_ITEM_HEIGHT);
16
- var ExerciseFileTreeListItemShimmer = function ExerciseFileTreeListItemShimmer(_ref) {
17
- var _ref$width = _ref.width,
18
- width = _ref$width === void 0 ? 100 : _ref$width;
16
+ const ExerciseFileTreeListItemShimmer = ({
17
+ width = 100
18
+ }) => {
19
19
  return React.createElement(StyledDummyListItem, null, React.createElement(StyledDummyListItemIconShimmer, {
20
- width: "".concat(FILE_TREE_LIST_ITEM_ICON_SIZE, "px"),
21
- height: "".concat(FILE_TREE_LIST_ITEM_ICON_SIZE, "px"),
20
+ width: `${FILE_TREE_LIST_ITEM_ICON_SIZE}px`,
21
+ height: `${FILE_TREE_LIST_ITEM_ICON_SIZE}px`,
22
22
  dark: true
23
23
  }), React.createElement(Hspace, {
24
24
  width: FILE_TREE_LIST_ITEM_GAP / 16
25
25
  }), React.createElement(Shimmer, {
26
- width: "".concat(width, "px"),
27
- height: "".concat(FILE_TREE_LIST_ITEM_FILENAME_HEIGHT, "px"),
26
+ width: `${width}px`,
27
+ height: `${FILE_TREE_LIST_ITEM_FILENAME_HEIGHT}px`,
28
28
  dark: true
29
29
  }));
30
30
  };
@@ -3,27 +3,21 @@ import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
  import ExerciseFileTreeListItemShimmer from './ExerciseFileTreeListItemShimmer.js';
5
5
 
6
- var StyledShimmerWrapper = styled.div.withConfig({
6
+ const StyledShimmerWrapper = styled.div.withConfig({
7
7
  componentId: "sc-ol0qbo-0"
8
8
  })(["display:flex;flex-direction:column;width:100%;height:100%;background:", ";overflow:hidden;"], base.color.navy9);
9
- var StyledDummyToolbar = styled.div.withConfig({
9
+ const StyledDummyToolbar = styled.div.withConfig({
10
10
  componentId: "sc-ol0qbo-1"
11
11
  })(["flex:0 0 2.25rem;background-color:", ";"], base.color.navy8);
12
- var StyledDummyList = styled.div.withConfig({
12
+ const StyledDummyList = styled.div.withConfig({
13
13
  componentId: "sc-ol0qbo-2"
14
14
  })(["flex:1;display:flex;flex-direction:column;width:100%;overflow:hidden;"]);
15
- var ExerciseFileTreeListShimmer = function ExerciseFileTreeListShimmer() {
16
- var widths = React.useMemo(function () {
17
- return new Array(Math.round(Math.random() * 5) + 5).fill(0).map(function () {
18
- return Math.round(Math.random() * 200) + 50;
19
- });
20
- }, []);
21
- return React.createElement(StyledShimmerWrapper, null, React.createElement(StyledDummyToolbar, null), React.createElement(StyledDummyList, null, widths.map(function (width, index) {
22
- return React.createElement(ExerciseFileTreeListItemShimmer, {
23
- key: index,
24
- width: width
25
- });
26
- })));
15
+ const ExerciseFileTreeListShimmer = () => {
16
+ const widths = React.useMemo(() => new Array(Math.round(Math.random() * 5) + 5).fill(0).map(() => Math.round(Math.random() * 200) + 50), []);
17
+ return React.createElement(StyledShimmerWrapper, null, React.createElement(StyledDummyToolbar, null), React.createElement(StyledDummyList, null, widths.map((width, index) => React.createElement(ExerciseFileTreeListItemShimmer, {
18
+ key: index,
19
+ width: width
20
+ }))));
27
21
  };
28
22
 
29
23
  export { ExerciseFileTreeListShimmer as default };
@@ -1,8 +1,9 @@
1
1
  import React from 'react';
2
2
  import { StyledVersionList } from './ExerciseVersionList.styled.js';
3
3
 
4
- var ExerciseVersionList = function ExerciseVersionList(_ref) {
5
- var children = _ref.children;
4
+ const ExerciseVersionList = ({
5
+ children
6
+ }) => {
6
7
  return React.createElement(StyledVersionList, null, children);
7
8
  };
8
9
 
@@ -1,7 +1,7 @@
1
1
  import { List } from '@elice/blocks';
2
2
  import styled from 'styled-components';
3
3
 
4
- var StyledVersionList = styled(List).withConfig({
4
+ const StyledVersionList = styled(List).withConfig({
5
5
  componentId: "sc-wqxvzc-0"
6
6
  })(["height:100%;padding:0;overflow:scroll;background-color:transparent;& > last-of-type{border:none;}"]);
7
7
 
@@ -1,11 +1,12 @@
1
1
  import React from 'react';
2
2
  import { StyledExerciseVersionItem } from './ExerciseVersionListItem.styled.js';
3
3
 
4
- var ExerciseVersionListItem = function ExerciseVersionListItem(_ref) {
5
- var children = _ref.children,
6
- selected = _ref.selected,
7
- style = _ref.style,
8
- onClick = _ref.onClick;
4
+ const ExerciseVersionListItem = ({
5
+ children,
6
+ selected,
7
+ style,
8
+ onClick
9
+ }) => {
9
10
  return React.createElement(StyledExerciseVersionItem, {
10
11
  selected: selected,
11
12
  style: style,
@@ -2,20 +2,16 @@ import { List, Text } from '@elice/blocks';
2
2
  import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
 
5
- var StyledExerciseVersionItem = styled(List.Item).withConfig({
5
+ const StyledExerciseVersionItem = styled(List.Item).withConfig({
6
6
  componentId: "sc-8jsi1o-0"
7
- })(["display:flex;width:100%;height:3.25rem;padding:1rem 1.5rem;border-bottom:1px solid ", ";border-left:0.25rem solid transparent;background-color:transparent;align-items:baseline;& > div:not(:last-child){margin-right:0.5rem;}&:hover{background-color:", ";}border-left:0.25rem solid ", ";background-color:", ";"], base.color.navy9, base.color.gray6, function (props) {
8
- return props.selected ? base.color.primary6 : 'transparent';
9
- }, function (props) {
10
- return props.selected ? base.color.gray6 : 'initial';
11
- });
12
- var StyledExerciseVersionRunType = styled(Text).withConfig({
7
+ })(["display:flex;width:100%;height:3.25rem;padding:1rem 1.5rem;border-bottom:1px solid ", ";border-left:0.25rem solid transparent;background-color:transparent;align-items:baseline;& > div:not(:last-child){margin-right:0.5rem;}&:hover{background-color:", ";}border-left:0.25rem solid ", ";background-color:", ";"], base.color.navy9, base.color.gray6, props => props.selected ? base.color.primary6 : 'transparent', props => props.selected ? base.color.gray6 : 'initial');
8
+ const StyledExerciseVersionRunType = styled(Text).withConfig({
13
9
  componentId: "sc-8jsi1o-1"
14
10
  })(["flex:0 1 auto;min-width:fit-content;"]);
15
- var StyledExerciseVersionDatetime = styled(Text).withConfig({
11
+ const StyledExerciseVersionDatetime = styled(Text).withConfig({
16
12
  componentId: "sc-8jsi1o-2"
17
13
  })(["flex:none;"]);
18
- var StyledExerciseVersionScore = styled(Text).withConfig({
14
+ const StyledExerciseVersionScore = styled(Text).withConfig({
19
15
  componentId: "sc-8jsi1o-3"
20
16
  })(["flex:auto;text-align:right;"]);
21
17
 
@@ -3,25 +3,23 @@ import React from 'react';
3
3
  import { Image } from '@elice/blocks';
4
4
  import { getIconForFile } from 'vscode-icons-js';
5
5
 
6
- var ICON_ASSET_BASE_URL = 'https://static.elice.io/code-editor/icons';
7
- var createIconUrl = function createIconUrl(svgFilename) {
8
- return "".concat(ICON_ASSET_BASE_URL, "/").concat(svgFilename.toLowerCase());
6
+ const ICON_ASSET_BASE_URL = 'https://static.elice.io/code-editor/icons';
7
+ const createIconUrl = svgFilename => {
8
+ return `${ICON_ASSET_BASE_URL}/${svgFilename.toLowerCase()}`;
9
9
  };
10
- var FileIcon = function FileIcon(_a) {
11
- var filename = _a.filename,
12
- _a$directory = _a.directory,
13
- directory = _a$directory === void 0 ? false : _a$directory,
14
- _a$expanded = _a.expanded,
15
- expanded = _a$expanded === void 0 ? false : _a$expanded,
16
- _a$width = _a.width,
17
- width = _a$width === void 0 ? '1rem' : _a$width,
18
- _a$height = _a.height,
19
- height = _a$height === void 0 ? '1rem' : _a$height,
10
+ const FileIcon = _a => {
11
+ var {
12
+ filename,
13
+ directory = false,
14
+ expanded = false,
15
+ width = '1rem',
16
+ height = '1rem'
17
+ } = _a,
20
18
  props = __rest(_a, ["filename", "directory", "expanded", "width", "height"]);
21
- var src = React.useMemo(function () {
19
+ const src = React.useMemo(() => {
22
20
  if (directory) {
23
- var suffix = expanded ? '_opened' : '';
24
- return createIconUrl("default_folder".concat(suffix, ".svg"));
21
+ const suffix = expanded ? '_opened' : '';
22
+ return createIconUrl(`default_folder${suffix}.svg`);
25
23
  }
26
24
  return createIconUrl(getIconForFile(filename) || 'default_file.svg');
27
25
  }, [filename, directory, expanded]);
@@ -30,7 +28,7 @@ var FileIcon = function FileIcon(_a) {
30
28
  //
31
29
  return React.createElement(Image, Object.assign({}, props, {
32
30
  src: src,
33
- alt: "icon for ".concat(filename),
31
+ alt: `icon for ${filename}`,
34
32
  width: width,
35
33
  height: height
36
34
  }));
@@ -4,25 +4,23 @@ import { eilMathsignMultiplyBasic } from '@elice/icons';
4
4
  import FileIcon from '../file-icon/FileIcon.js';
5
5
  import { StyledTab, StyledTabContent, StyledTabActiveBorder, StyledTabLabel, StyledTabCloseButton, StyledTabLabelFilename, StyledTabLabelDirname } from './FileTab.styled.js';
6
6
 
7
- var EMPTY_CHUNKS = [];
8
- var FileTab = function FileTab(_a) {
9
- var fullname = _a.fullname,
10
- _a$chunks = _a.chunks,
11
- chunks = _a$chunks === void 0 ? EMPTY_CHUNKS : _a$chunks,
12
- filename = _a.filename,
13
- _a$isFilenameDuplicat = _a.isFilenameDuplicated,
14
- isFilenameDuplicated = _a$isFilenameDuplicat === void 0 ? false : _a$isFilenameDuplicat,
15
- _a$active = _a.active,
16
- active = _a$active === void 0 ? false : _a$active,
17
- _a$hovered = _a.hovered,
18
- hovered = _a$hovered === void 0 ? false : _a$hovered,
19
- onClose = _a.onClose,
7
+ const EMPTY_CHUNKS = [];
8
+ const FileTab = _a => {
9
+ var {
10
+ fullname,
11
+ chunks = EMPTY_CHUNKS,
12
+ filename,
13
+ isFilenameDuplicated = false,
14
+ active = false,
15
+ hovered = false,
16
+ onClose
17
+ } = _a,
20
18
  eventListeners = __rest(_a, ["fullname", "chunks", "filename", "isFilenameDuplicated", "active", "hovered", "onClose"]);
21
- var tabElRef = React.useRef(null);
19
+ const tabElRef = React.useRef(null);
22
20
  //
23
21
  // Scroll into view.
24
22
  //
25
- React.useEffect(function () {
23
+ React.useEffect(() => {
26
24
  var _a;
27
25
  if (active) {
28
26
  (_a = tabElRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
@@ -33,7 +31,7 @@ var FileTab = function FileTab(_a) {
33
31
  /**
34
32
  * File icon
35
33
  */
36
- var renderTabFileIcon = function renderTabFileIcon() {
34
+ const renderTabFileIcon = () => {
37
35
  return React.createElement(FileIcon, {
38
36
  filename: filename,
39
37
  width: "1rem",
@@ -43,7 +41,7 @@ var FileTab = function FileTab(_a) {
43
41
  /**
44
42
  * File name
45
43
  */
46
- var renderTabFileName = function renderTabFileName() {
44
+ const renderTabFileName = () => {
47
45
  return React.createElement(StyledTabLabelFilename, {
48
46
  size: "tiny",
49
47
  noWrap: true
@@ -52,34 +50,34 @@ var FileTab = function FileTab(_a) {
52
50
  /**
53
51
  * File directory name
54
52
  */
55
- var renderTabFileDirName = function renderTabFileDirName() {
53
+ const renderTabFileDirName = () => {
56
54
  if (!isFilenameDuplicated) {
57
55
  return null;
58
56
  }
59
- var parentDir = chunks.slice().pop();
57
+ const parentDir = chunks.slice().pop();
60
58
  return React.createElement(StyledTabLabelDirname, {
61
59
  role: "gray5",
62
60
  size: "tiny",
63
61
  noWrap: true
64
- }, parentDir ? ".../".concat(parentDir) : '/');
62
+ }, parentDir ? `.../${parentDir}` : '/');
65
63
  };
66
64
  /**
67
65
  * File
68
66
  */
69
- var renderTabFile = function renderTabFile() {
67
+ const renderTabFile = () => {
70
68
  return React.createElement(StyledTabLabel, null, renderTabFileIcon(), renderTabFileName(), renderTabFileDirName());
71
69
  };
72
70
  /**
73
71
  * Tab close icon
74
72
  */
75
- var renderTabCloseButton = function renderTabCloseButton() {
73
+ const renderTabCloseButton = () => {
76
74
  return React.createElement(StyledTabCloseButton, {
77
75
  icon: eilMathsignMultiplyBasic,
78
76
  role: "gray5",
79
77
  size: "nano",
80
78
  transparent: true,
81
79
  border: false,
82
- onClick: function onClick(e) {
80
+ onClick: e => {
83
81
  e.stopPropagation();
84
82
  if (typeof onClose === 'function') {
85
83
  onClose();
@@ -97,7 +95,7 @@ var FileTab = function FileTab(_a) {
97
95
  role: "tab",
98
96
  "aria-label": filename,
99
97
  "aria-selected": active,
100
- title: "~/".concat(fullname),
98
+ title: `~/${fullname}`,
101
99
  tabIndex: -1,
102
100
  ref: tabElRef
103
101
  }), React.createElement(StyledTabContent, null, renderTabFile(), renderTabCloseButton()), React.createElement(StyledTabActiveBorder, null));
@@ -2,41 +2,37 @@ import { Text, IconButton } from '@elice/blocks';
2
2
  import { base } from '@elice/design-tokens';
3
3
  import styled, { css } from 'styled-components';
4
4
 
5
- var TAB_MIN_WIDTH = '7rem';
6
- var TAB_VERTICAL_BORDER_WIDTH = '1.5px';
7
- var TAB_BACKGROUND_COLOR = base.color.navy8;
8
- var TAB_ACTIVE_BACKGROUND_COLOR = base.color.navy9;
9
- var TAB_HOVERED_BACKGROUND_COLOR = base.color.navy7;
5
+ const TAB_MIN_WIDTH = '7rem';
6
+ const TAB_VERTICAL_BORDER_WIDTH = '1.5px';
7
+ const TAB_BACKGROUND_COLOR = base.color.navy8;
8
+ const TAB_ACTIVE_BACKGROUND_COLOR = base.color.navy9;
9
+ const TAB_HOVERED_BACKGROUND_COLOR = base.color.navy7;
10
10
  // ========== Tab label ==========
11
- var StyledTabLabel = styled.div.withConfig({
11
+ const StyledTabLabel = styled.div.withConfig({
12
12
  componentId: "sc-1pe3776-0"
13
13
  })(["flex:1;display:flex;align-items:center;overflow:hidden;pointer-events:none;user-select:none;& > *{margin-right:0.5rem;}"]);
14
- var StyledTabLabelFilename = styled(Text).withConfig({
14
+ const StyledTabLabelFilename = styled(Text).withConfig({
15
15
  componentId: "sc-1pe3776-1"
16
16
  })(["color:", ";font-weight:500;"], base.color.gray4);
17
- var StyledTabLabelDirname = styled(Text).withConfig({
17
+ const StyledTabLabelDirname = styled(Text).withConfig({
18
18
  componentId: "sc-1pe3776-2"
19
19
  })(["font-weight:500;"]);
20
- var StyledTabCloseButton = styled(IconButton).withConfig({
20
+ const StyledTabCloseButton = styled(IconButton).withConfig({
21
21
  componentId: "sc-1pe3776-3"
22
22
  })(["flex:0 0 auto;margin-right:0.25rem !important;opacity:0;transition:opacity 150ms ease-in-out;"]);
23
23
  // ========== Tab content ==========
24
- var StyledTabContent = styled.div.withConfig({
24
+ const StyledTabContent = styled.div.withConfig({
25
25
  componentId: "sc-1pe3776-4"
26
26
  })(["display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding-left:0.5rem;height:calc(100% - ", ");&:hover{", "{color:", ";}", "{opacity:1;}}"], TAB_VERTICAL_BORDER_WIDTH, StyledTabLabelFilename, base.color.gray3, StyledTabCloseButton);
27
27
  // ========== Tab active border ==========
28
- var StyledTabActiveBorder = styled.div.withConfig({
28
+ const StyledTabActiveBorder = styled.div.withConfig({
29
29
  componentId: "sc-1pe3776-5"
30
30
  })(["height:", ";background-color:", ";opacity:0;"], TAB_VERTICAL_BORDER_WIDTH, base.color.primary5);
31
31
  // ========== Tab ==========
32
- var cssTabActive = css(["background-color:", ";", "{color:", ";}", "{opacity:1;}", "{opacity:1;}"], TAB_ACTIVE_BACKGROUND_COLOR, StyledTabLabelFilename, base.color.gray3, StyledTabCloseButton, StyledTabActiveBorder);
33
- var cssTabHovered = css(["background-color:", ";", "{color:", ";}"], TAB_HOVERED_BACKGROUND_COLOR, StyledTabLabelFilename, base.color.gray3);
34
- var StyledTab = styled.div.withConfig({
32
+ const cssTabActive = css(["background-color:", ";", "{color:", ";}", "{opacity:1;}", "{opacity:1;}"], TAB_ACTIVE_BACKGROUND_COLOR, StyledTabLabelFilename, base.color.gray3, StyledTabCloseButton, StyledTabActiveBorder);
33
+ const cssTabHovered = css(["background-color:", ";", "{color:", ";}"], TAB_HOVERED_BACKGROUND_COLOR, StyledTabLabelFilename, base.color.gray3);
34
+ const StyledTab = styled.div.withConfig({
35
35
  componentId: "sc-1pe3776-6"
36
- })(["padding-top:", ";width:", ";min-width:fit-content;height:100%;background-color:", ";border-right:1px solid ", ";cursor:pointer;", " ", ""], TAB_VERTICAL_BORDER_WIDTH, TAB_MIN_WIDTH, TAB_BACKGROUND_COLOR, base.color.navy7, function (props) {
37
- return props.active && cssTabActive;
38
- }, function (props) {
39
- return props.hovered && cssTabHovered;
40
- });
36
+ })(["padding-top:", ";width:", ";min-width:fit-content;height:100%;background-color:", ";border-right:1px solid ", ";cursor:pointer;", " ", ""], TAB_VERTICAL_BORDER_WIDTH, TAB_MIN_WIDTH, TAB_BACKGROUND_COLOR, base.color.navy7, props => props.active && cssTabActive, props => props.hovered && cssTabHovered);
41
37
 
42
38
  export { StyledTab, StyledTabActiveBorder, StyledTabCloseButton, StyledTabContent, StyledTabLabel, StyledTabLabelDirname, StyledTabLabelFilename };
@@ -1,68 +1,54 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React from 'react';
3
2
  import throttle from 'lodash/throttle';
4
3
  import FileTab from './FileTab.js';
5
4
  import { getTabProps } from './util.js';
6
5
  import { StyledTabs, StyledTabsDropZone } from './FileTabs.styled.js';
7
6
 
8
- var FileTabs = function FileTabs(_ref) {
9
- var openedTabs = _ref.openedTabs,
10
- activeTab = _ref.activeTab,
11
- onSelectTab = _ref.onSelectTab,
12
- onCloseTab = _ref.onCloseTab,
13
- onTabOrderChange = _ref.onTabOrderChange;
14
- var _React$useState = React.useState(null),
15
- _React$useState2 = _slicedToArray(_React$useState, 2),
16
- curDraggingTabIndex = _React$useState2[0],
17
- setCurDraggingTabIndex = _React$useState2[1];
18
- var _React$useState3 = React.useState(null),
19
- _React$useState4 = _slicedToArray(_React$useState3, 2),
20
- curHoveredTabIndex = _React$useState4[0],
21
- setCurHoveredTabIndex = _React$useState4[1];
7
+ const FileTabs = ({
8
+ openedTabs,
9
+ activeTab,
10
+ onSelectTab,
11
+ onCloseTab,
12
+ onTabOrderChange
13
+ }) => {
14
+ const [curDraggingTabIndex, setCurDraggingTabIndex] = React.useState(null);
15
+ const [curHoveredTabIndex, setCurHoveredTabIndex] = React.useState(null);
22
16
  /**
23
17
  * Tab props.
24
18
  */
25
- var tabs = React.useMemo(function () {
26
- return getTabProps(openedTabs);
27
- }, [openedTabs]);
19
+ const tabs = React.useMemo(() => getTabProps(openedTabs), [openedTabs]);
28
20
  /**
29
21
  * Reset state.
30
22
  */
31
- var reset = function reset() {
23
+ const reset = () => {
32
24
  setCurDraggingTabIndex(null);
33
25
  setCurHoveredTabIndex(null);
34
26
  };
35
27
  /**
36
28
  * Throttled `setCurHoveredTabIndex`.
37
29
  */
38
- var setThrottledCurHoveredTabIndex = React.useMemo(function () {
39
- return throttle(setCurHoveredTabIndex, 100, {
40
- leading: true,
41
- trailing: false
42
- });
43
- }, []);
30
+ const setThrottledCurHoveredTabIndex = React.useMemo(() => throttle(setCurHoveredTabIndex, 100, {
31
+ leading: true,
32
+ trailing: false
33
+ }), []);
44
34
  /**
45
35
  * Handle tab drag start.
46
36
  */
47
- var getTabDragStartHandler = React.useCallback(function (index) {
48
- return function (_) {
49
- setCurDraggingTabIndex(index);
50
- };
37
+ const getTabDragStartHandler = React.useCallback(index => _ => {
38
+ setCurDraggingTabIndex(index);
51
39
  }, []);
52
40
  /**
53
41
  * Handle tab drag over.
54
42
  */
55
- var getTabDragOverHandler = React.useCallback(function (index) {
56
- return function (e) {
57
- e.preventDefault();
58
- e.stopPropagation();
59
- setThrottledCurHoveredTabIndex(index);
60
- };
43
+ const getTabDragOverHandler = React.useCallback(index => e => {
44
+ e.preventDefault();
45
+ e.stopPropagation();
46
+ setThrottledCurHoveredTabIndex(index);
61
47
  }, [setThrottledCurHoveredTabIndex]);
62
48
  /**
63
49
  * Handle tab drop.
64
50
  */
65
- var handleTabDrop = function handleTabDrop(e) {
51
+ const handleTabDrop = e => {
66
52
  e.preventDefault();
67
53
  e.stopPropagation();
68
54
  if (curDraggingTabIndex !== null && curHoveredTabIndex !== null && typeof onTabOrderChange === 'function') {
@@ -73,29 +59,23 @@ var FileTabs = function FileTabs(_ref) {
73
59
  /**
74
60
  * Tabs.
75
61
  */
76
- var renderTabs = function renderTabs() {
77
- return tabs.map(function (tab, index) {
78
- return React.createElement(FileTab, Object.assign({}, tab, {
79
- key: tab.fullname,
80
- active: activeTab === tab.fullname,
81
- hovered: curHoveredTabIndex === index,
82
- onClick: function onClick() {
83
- return onSelectTab(tab.fullname);
84
- },
85
- onClose: function onClose() {
86
- return onCloseTab(tab.fullname);
87
- },
88
- onDragStart: getTabDragStartHandler(index),
89
- onDragOver: getTabDragOverHandler(index),
90
- onDragEnd: reset,
91
- onDrop: handleTabDrop
92
- }));
93
- });
62
+ const renderTabs = () => {
63
+ return tabs.map((tab, index) => React.createElement(FileTab, Object.assign({}, tab, {
64
+ key: tab.fullname,
65
+ active: activeTab === tab.fullname,
66
+ hovered: curHoveredTabIndex === index,
67
+ onClick: () => onSelectTab(tab.fullname),
68
+ onClose: () => onCloseTab(tab.fullname),
69
+ onDragStart: getTabDragStartHandler(index),
70
+ onDragOver: getTabDragOverHandler(index),
71
+ onDragEnd: reset,
72
+ onDrop: handleTabDrop
73
+ })));
94
74
  };
95
75
  /**
96
76
  * Tab drop zone.
97
77
  */
98
- var renderTabsDropZone = function renderTabsDropZone() {
78
+ const renderTabsDropZone = () => {
99
79
  return React.createElement(StyledTabsDropZone, {
100
80
  onDragOver: getTabDragOverHandler(tabs.length - 1),
101
81
  onDrop: handleTabDrop
@@ -2,14 +2,14 @@ import { base } from '@elice/design-tokens';
2
2
  import styled from 'styled-components';
3
3
  import { getMaterialScrollBarCss } from '../../../constants/stylesheets.js';
4
4
 
5
- var StyledTabs = styled.div.withConfig({
5
+ const StyledTabs = styled.div.withConfig({
6
6
  componentId: "sc-ifwvzh-0"
7
7
  })(["display:flex;align-items:flex-end;box-sizing:border-box;flex-direction:row;height:2.25rem;font-family:inherit;background:", ";overflow-x:overlay;overflow-y:hidden;scrollbar-width:none;", ""], base.color.navy8, getMaterialScrollBarCss({
8
8
  height: '2px',
9
9
  borderRadius: '2px',
10
10
  hideable: true
11
11
  }));
12
- var StyledTabsDropZone = styled.div.withConfig({
12
+ const StyledTabsDropZone = styled.div.withConfig({
13
13
  componentId: "sc-ifwvzh-1"
14
14
  })(["flex:1;height:100%;background-color:transparent;"]);
15
15