@elice/material-exercise 1.231227.0 → 1.240112.0-cloud.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
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Default emmet configuration.
4
4
  */
5
- var DEFAULT_CONFIG = {
5
+ const DEFAULT_CONFIG = {
6
6
  showExpandedAbbreviation: 'always',
7
7
  showAbbreviationSuggestions: true,
8
8
  showSuggestionsAsSnippets: false
@@ -11,7 +11,7 @@ var DEFAULT_CONFIG = {
11
11
  * Mapping between languages that support Emmet and completion trigger characters.
12
12
  * - ref: https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/util.ts#L86
13
13
  */
14
- var LANGUAGE_MODES = {
14
+ const LANGUAGE_MODES = {
15
15
  html: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
16
16
  jade: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
17
17
  slim: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
@@ -30,7 +30,7 @@ var LANGUAGE_MODES = {
30
30
  * Language specific extensions can provide emmet completion support.
31
31
  * - ref: https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/util.ts#L124
32
32
  */
33
- var MAPPED_MODES = {
33
+ const MAPPED_MODES = {
34
34
  handlebars: 'html',
35
35
  php: 'html',
36
36
  twig: 'html'
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React, { forwardRef } from 'react';
3
2
  import { useMeasure, useMount, useUnmount, useUpdateEffect } from 'react-use';
4
3
  import { Text } from '@elice/blocks';
@@ -19,51 +18,45 @@ import PreviewContainer from '../preview-container/PreviewContainer.js';
19
18
  //
20
19
  //
21
20
  //
22
- var VNC_BACKGROUND_COLOR = base.color.navy7;
23
- var StyledHeaderTitle = styled.div.withConfig({
21
+ const VNC_BACKGROUND_COLOR = base.color.navy7;
22
+ const StyledHeaderTitle = styled.div.withConfig({
24
23
  componentId: "sc-1duy62f-0"
25
24
  })(["flex:1;"]);
26
- var StyledHeaderButtonGroup = styled.div.withConfig({
25
+ const StyledHeaderButtonGroup = styled.div.withConfig({
27
26
  componentId: "sc-1duy62f-1"
28
27
  })(["flex:0 0 auto;display:flex;align-items:center;"]);
29
- var StyledVncWrap = styled.div.withConfig({
28
+ const StyledVncWrap = styled.div.withConfig({
30
29
  componentId: "sc-1duy62f-2"
31
30
  })(["display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:", ";overflow:hidden;"], VNC_BACKGROUND_COLOR);
32
- var StyledNoVncContainer = styled.div.withConfig({
31
+ const StyledNoVncContainer = styled.div.withConfig({
33
32
  componentId: "sc-1duy62f-3"
34
33
  })([""]);
35
- var StyledNoVnc = styled.div.withConfig({
34
+ const StyledNoVnc = styled.div.withConfig({
36
35
  componentId: "sc-1duy62f-4"
37
36
  })(["position:relative;left:50%;top:50%;transform-origin:center center;transform:translate(-50%,-50%);"]);
38
37
  //
39
38
  //
40
39
  //
41
- var NoVnc = forwardRef(function (_ref, ref) {
42
- var _ref$isRunning = _ref.isRunning,
43
- isRunning = _ref$isRunning === void 0 ? false : _ref$isRunning,
44
- wsUri = _ref.wsUri,
45
- roomToken = _ref.roomToken,
46
- readyExerciseImage = _ref.readyExerciseImage,
47
- _ref$exercisePreviewD = _ref.exercisePreviewDisplayModeButton,
48
- exercisePreviewDisplayModeButton = _ref$exercisePreviewD === void 0 ? null : _ref$exercisePreviewD,
49
- onConnect = _ref.onConnect,
50
- onDisconnect = _ref.onDisconnect;
51
- var vncRfb = React.useRef(null);
52
- var vncElRef = React.useRef(null);
53
- var _useMeasure = useMeasure(),
54
- _useMeasure2 = _slicedToArray(_useMeasure, 2),
55
- vncWrapRef = _useMeasure2[0],
56
- _useMeasure2$ = _useMeasure2[1],
57
- width = _useMeasure2$.width,
58
- height = _useMeasure2$.height;
59
- var _React$useState = React.useState(true),
60
- _React$useState2 = _slicedToArray(_React$useState, 2),
61
- isVncScaledFromLocal = _React$useState2[0],
62
- setVncScaledFromLocal = _React$useState2[1];
40
+ const NoVnc = forwardRef(({
41
+ isRunning = false,
42
+ wsUri,
43
+ roomToken,
44
+ readyExerciseImage,
45
+ exercisePreviewDisplayModeButton = null,
46
+ onConnect,
47
+ onDisconnect
48
+ }, ref) => {
49
+ const vncRfb = React.useRef(null);
50
+ const vncElRef = React.useRef(null);
51
+ const [vncWrapRef, {
52
+ width,
53
+ height
54
+ }] = useMeasure();
55
+ const [isVncScaledFromLocal, setVncScaledFromLocal] = React.useState(true);
63
56
  /**
64
57
  * Default size of VNC from exericse image.
65
58
  */
66
- var vncDefaultSize = React.useMemo(function () {
59
+ const vncDefaultSize = React.useMemo(() => {
67
60
  var _a, _b;
68
61
  return {
69
62
  width: (_a = readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.defaultVncWidth) !== null && _a !== void 0 ? _a : 300,
@@ -73,26 +66,22 @@ var NoVnc = forwardRef(function (_ref, ref) {
73
66
  /**
74
67
  * Transform scale to fit VNC to VNC wrap.
75
68
  */
76
- var vncTransformScale = React.useMemo(function () {
77
- return Math.min(width / vncDefaultSize.width, height / vncDefaultSize.height);
78
- }, [width, height, vncDefaultSize.width, vncDefaultSize.height]);
69
+ const vncTransformScale = React.useMemo(() => Math.min(width / vncDefaultSize.width, height / vncDefaultSize.height), [width, height, vncDefaultSize.width, vncDefaultSize.height]);
79
70
  /**
80
71
  * Element style of VNC and VNC wrap.
81
72
  */
82
- var vncElementStyle = React.useMemo(function () {
83
- return {
84
- width: "".concat((vncDefaultSize.width * vncTransformScale).toFixed(3), "px"),
85
- height: "".concat((vncDefaultSize.height * vncTransformScale).toFixed(3), "px")
86
- };
87
- }, [vncDefaultSize.width, vncDefaultSize.height, vncTransformScale]);
73
+ const vncElementStyle = React.useMemo(() => ({
74
+ width: `${(vncDefaultSize.width * vncTransformScale).toFixed(3)}px`,
75
+ height: `${(vncDefaultSize.height * vncTransformScale).toFixed(3)}px`
76
+ }), [vncDefaultSize.width, vncDefaultSize.height, vncTransformScale]);
88
77
  /**
89
78
  * Connect VNC.
90
79
  */
91
- var connect = React.useCallback(function () {
80
+ const connect = React.useCallback(() => {
92
81
  if (!vncElRef.current || !wsUri || !roomToken) {
93
82
  return;
94
83
  }
95
- var vncUrl = "".concat(wsUri, "/client/vnc/").concat(roomToken);
84
+ const vncUrl = `${wsUri}/client/vnc/${roomToken}`;
96
85
  // The RFB object represents a single connection to a VNC server.
97
86
  // It communicates using a WebSocket that must provide a standard RFB protocol stream.
98
87
  // -ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#rfb-1
@@ -125,14 +114,14 @@ var NoVnc = forwardRef(function (_ref, ref) {
125
114
  // ==============================
126
115
  // The connect event is fired when the RFB object has completed the connection and handshaking with the server.
127
116
  // - ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#connect
128
- vncRfb.current.addEventListener('connect', function () {
117
+ vncRfb.current.addEventListener('connect', () => {
129
118
  if (typeof onConnect === 'function') {
130
119
  onConnect();
131
120
  }
132
121
  });
133
122
  // The disconnect event is fired when the RFB object disconnects.
134
123
  // - ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#disconnect
135
- vncRfb.current.addEventListener('disconnect', function () {
124
+ vncRfb.current.addEventListener('disconnect', () => {
136
125
  if (typeof onDisconnect === 'function') {
137
126
  onDisconnect();
138
127
  }
@@ -143,7 +132,7 @@ var NoVnc = forwardRef(function (_ref, ref) {
143
132
  /**
144
133
  * Disconnect VNC.
145
134
  */
146
- var disconnect = React.useCallback(function () {
135
+ const disconnect = React.useCallback(() => {
147
136
  var _a;
148
137
  if (typeof ((_a = vncRfb.current) === null || _a === void 0 ? void 0 : _a.disconnect) === 'function') {
149
138
  vncRfb.current.disconnect();
@@ -157,7 +146,7 @@ var NoVnc = forwardRef(function (_ref, ref) {
157
146
  * Reset VNC.
158
147
  * - note: https://www.notion.so/elice/elice-runner-v3-forwarder-4907ba8546274956b2f55c586df1641a#d61df659d91644db85a52fc148a69e13
159
148
  */
160
- var reset = React.useCallback(function () {
149
+ const reset = React.useCallback(() => {
161
150
  if (!vncRfb.current) {
162
151
  return;
163
152
  }
@@ -209,7 +198,7 @@ var NoVnc = forwardRef(function (_ref, ref) {
209
198
  //
210
199
  // Update VNC scale config.
211
200
  //
212
- useUpdateEffect(function () {
201
+ useUpdateEffect(() => {
213
202
  if (!vncRfb.current) {
214
203
  return;
215
204
  }
@@ -221,17 +210,15 @@ var NoVnc = forwardRef(function (_ref, ref) {
221
210
  //
222
211
  //
223
212
  //
224
- React.useImperativeHandle(ref, function () {
225
- return {
226
- connect: connect,
227
- disconnect: disconnect,
228
- reset: reset
229
- };
230
- }, [connect, disconnect, reset]);
213
+ React.useImperativeHandle(ref, () => ({
214
+ connect,
215
+ disconnect,
216
+ reset
217
+ }), [connect, disconnect, reset]);
231
218
  /**
232
219
  * Header.
233
220
  */
234
- var renderVncHeader = function renderVncHeader() {
221
+ const renderVncHeader = () => {
235
222
  return React.createElement(React.Fragment, null, React.createElement(StyledHeaderTitle, null, React.createElement(Text, {
236
223
  role: "white",
237
224
  size: "tiny"
@@ -239,11 +226,7 @@ var NoVnc = forwardRef(function (_ref, ref) {
239
226
  icon: isVncScaledFromLocal ? eilViewMaximize : eilViewMinimize,
240
227
  title: isRunning ? '실행 중에는 비율을 변경할 수 없습니다' : isVncScaledFromLocal ? '확대하여 보기' : '원본 비율로 보기',
241
228
  disabled: isRunning,
242
- onClick: function onClick() {
243
- return setVncScaledFromLocal(function (prev) {
244
- return !prev;
245
- });
246
- }
229
+ onClick: () => setVncScaledFromLocal(prev => !prev)
247
230
  }), React.isValidElement(exercisePreviewDisplayModeButton) ? React.cloneElement(exercisePreviewDisplayModeButton, {
248
231
  disabled: isRunning
249
232
  }) : null));
@@ -1,9 +1,7 @@
1
1
  import React, { forwardRef } from 'react';
2
2
 
3
- var AsyncNoVnc = React.lazy(function () {
4
- return import('./NoVnc.js');
5
- });
6
- var NoVncLazy = forwardRef(function (props, ref) {
3
+ const AsyncNoVnc = React.lazy(() => import('./NoVnc.js'));
4
+ const NoVncLazy = forwardRef((props, ref) => {
7
5
  return React.createElement(React.Suspense, {
8
6
  fallback: null
9
7
  }, React.createElement(AsyncNoVnc, Object.assign({}, props, {
@@ -2,17 +2,18 @@ import React, { forwardRef } from 'react';
2
2
  import { base } from '@elice/design-tokens';
3
3
  import styled from 'styled-components';
4
4
 
5
- var PREVIEW_CONTAINER_HEADER_HEIGHT = 36; // 2.25rem
6
- var PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM = 4; // 0.25rem
7
- var StyledPreviewContainer = styled.div.withConfig({
5
+ const PREVIEW_CONTAINER_HEADER_HEIGHT = 36; // 2.25rem
6
+ const PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM = 4; // 0.25rem
7
+ const StyledPreviewContainer = styled.div.withConfig({
8
8
  componentId: "sc-1oi07w2-0"
9
9
  })(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";overflow:hidden;"], base.color.white);
10
- var StyledPreviewHeader = styled.div.withConfig({
10
+ const StyledPreviewHeader = styled.div.withConfig({
11
11
  componentId: "sc-1oi07w2-1"
12
12
  })(["flex:0 0 ", "px;display:flex;align-items:center;padding:", "px 0.5rem;border-bottom:1px solid ", ";background-color:", ";"], PREVIEW_CONTAINER_HEADER_HEIGHT, PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM, base.color.navy7, base.color.navy8);
13
- var PreviewContainer = forwardRef(function (_ref, ref) {
14
- var children = _ref.children,
15
- header = _ref.header;
13
+ const PreviewContainer = forwardRef(({
14
+ children,
15
+ header
16
+ }, ref) => {
16
17
  return React.createElement(StyledPreviewContainer, {
17
18
  ref: ref
18
19
  }, React.createElement(StyledPreviewHeader, {
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React, { forwardRef } from 'react';
3
2
  import { Flex } from '@elice/blocks';
4
3
  import { base } from '@elice/design-tokens';
@@ -7,45 +6,37 @@ import styled from 'styled-components';
7
6
  import ExerciseMenuButton from '../exercise-menu-button/ExerciseMenuButton.js';
8
7
  import PreviewContainer, { PREVIEW_CONTAINER_HEADER_HEIGHT, PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM } from '../preview-container/PreviewContainer.js';
9
8
 
10
- var WEB_BROWSER_URL_INPUT_HEIGHT = PREVIEW_CONTAINER_HEADER_HEIGHT - PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM * 2;
11
- var StyledHeaderUrlInput = styled.input.withConfig({
9
+ const WEB_BROWSER_URL_INPUT_HEIGHT = PREVIEW_CONTAINER_HEADER_HEIGHT - PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM * 2;
10
+ const StyledHeaderUrlInput = styled.input.withConfig({
12
11
  componentId: "sc-1c55yq-0"
13
12
  })(["flex:1;min-width:0;height:", "px;padding:0.25rem 0.5rem;color:", ";background:", ";border:0;border-radius:0.25rem;&:active,&:focus{outline:none;}"], WEB_BROWSER_URL_INPUT_HEIGHT, base.color.white, base.color.navy6);
14
- var StyledIframe = styled.iframe.withConfig({
13
+ const StyledIframe = styled.iframe.withConfig({
15
14
  componentId: "sc-1c55yq-1"
16
15
  })(["flex:1;width:100%;height:100%;min-height:0;border:0;"]);
17
16
  /**
18
17
  * Attach `_cachebust` search parameter to the URL to prevent caching.
19
18
  */
20
- var createCacheBustedUrl = function createCacheBustedUrl(url) {
19
+ const createCacheBustedUrl = url => {
21
20
  try {
22
- var urlObject = new URL(url);
21
+ const urlObject = new URL(url);
23
22
  urlObject.searchParams.set('_cachebust', Date.now().toString());
24
23
  return urlObject.href;
25
24
  } catch (_) {
26
25
  return url;
27
26
  }
28
27
  };
29
- var WebBrowser = forwardRef(function (_ref, ref) {
30
- var httpUri = _ref.httpUri,
31
- _ref$menuButtons = _ref.menuButtons,
32
- menuButtons = _ref$menuButtons === void 0 ? null : _ref$menuButtons;
33
- var _React$useState = React.useState(''),
34
- _React$useState2 = _slicedToArray(_React$useState, 2),
35
- url = _React$useState2[0],
36
- setUrl = _React$useState2[1];
37
- var _React$useState3 = React.useState(''),
38
- _React$useState4 = _slicedToArray(_React$useState3, 2),
39
- inputUrl = _React$useState4[0],
40
- setInputUrl = _React$useState4[1];
41
- var iframeRef = React.useRef(null);
42
- var iframeSrc = React.useMemo(function () {
43
- return createCacheBustedUrl(url);
44
- }, [url]);
28
+ const WebBrowser = forwardRef(({
29
+ httpUri,
30
+ menuButtons = null
31
+ }, ref) => {
32
+ const [url, setUrl] = React.useState('');
33
+ const [inputUrl, setInputUrl] = React.useState('');
34
+ const iframeRef = React.useRef(null);
35
+ const iframeSrc = React.useMemo(() => createCacheBustedUrl(url), [url]);
45
36
  /**
46
37
  * Navigate browser.
47
38
  */
48
- var navigate = React.useCallback(function (newUrl) {
39
+ const navigate = React.useCallback(newUrl => {
49
40
  if (newUrl) {
50
41
  setUrl(newUrl);
51
42
  }
@@ -53,7 +44,7 @@ var WebBrowser = forwardRef(function (_ref, ref) {
53
44
  /**
54
45
  * Reload browser.
55
46
  */
56
- var reload = React.useCallback(function () {
47
+ const reload = React.useCallback(() => {
57
48
  if (iframeRef.current) {
58
49
  iframeRef.current.src = createCacheBustedUrl(iframeRef.current.src);
59
50
  }
@@ -61,8 +52,8 @@ var WebBrowser = forwardRef(function (_ref, ref) {
61
52
  /**
62
53
  * New window open click.
63
54
  */
64
- var handleNewWindowClick = function handleNewWindowClick() {
65
- var win = window.open(url, '_blank');
55
+ const handleNewWindowClick = () => {
56
+ const win = window.open(url, '_blank');
66
57
  if (win) {
67
58
  win.focus();
68
59
  }
@@ -70,15 +61,15 @@ var WebBrowser = forwardRef(function (_ref, ref) {
70
61
  /**
71
62
  * Handle url input change.
72
63
  */
73
- var handleUrlInputChange = function handleUrlInputChange(e) {
74
- var value = e.target.value;
64
+ const handleUrlInputChange = e => {
65
+ const value = e.target.value;
75
66
  // prevent removal of origin url (props.httpUri)
76
67
  setInputUrl(value.startsWith(httpUri) ? value : httpUri);
77
68
  };
78
69
  /**
79
70
  * Handle url input Enter key down.
80
71
  */
81
- var handleUrlInputKeyDown = function handleUrlInputKeyDown(e) {
72
+ const handleUrlInputKeyDown = e => {
82
73
  if (e.key === 'Enter') {
83
74
  e.preventDefault();
84
75
  navigate(inputUrl);
@@ -87,10 +78,10 @@ var WebBrowser = forwardRef(function (_ref, ref) {
87
78
  /**
88
79
  * Handle iframe load.
89
80
  */
90
- var handleIframeLoad = function handleIframeLoad() {
81
+ const handleIframeLoad = () => {
91
82
  var _a, _b, _c;
92
83
  try {
93
- var iframeUrl = (_c = (_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.location) === null || _c === void 0 ? void 0 : _c.href;
84
+ const iframeUrl = (_c = (_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.location) === null || _c === void 0 ? void 0 : _c.href;
94
85
  if (iframeUrl) {
95
86
  setInputUrl(iframeUrl);
96
87
  }
@@ -102,23 +93,21 @@ var WebBrowser = forwardRef(function (_ref, ref) {
102
93
  //
103
94
  // Change url on new httpUri provided.
104
95
  //
105
- React.useEffect(function () {
96
+ React.useEffect(() => {
106
97
  setUrl(httpUri);
107
98
  setInputUrl(httpUri);
108
99
  }, [httpUri]);
109
100
  //
110
101
  //
111
102
  //
112
- React.useImperativeHandle(ref, function () {
113
- return {
114
- navigate: navigate,
115
- reload: reload
116
- };
117
- }, [navigate, reload]);
103
+ React.useImperativeHandle(ref, () => ({
104
+ navigate,
105
+ reload
106
+ }), [navigate, reload]);
118
107
  /**
119
108
  * Browser header.
120
109
  */
121
- var renderBrowserHeader = function renderBrowserHeader() {
110
+ const renderBrowserHeader = () => {
122
111
  return React.createElement(React.Fragment, null, React.createElement(Flex, {
123
112
  marginright: "0.25rem"
124
113
  }, React.createElement(ExerciseMenuButton, {
@@ -142,7 +131,7 @@ var WebBrowser = forwardRef(function (_ref, ref) {
142
131
  /**
143
132
  * Browser content.
144
133
  */
145
- var renderBrowserBody = function renderBrowserBody() {
134
+ const renderBrowserBody = () => {
146
135
  return React.createElement(StyledIframe, {
147
136
  src: iframeSrc,
148
137
  title: url,
@@ -1,4 +1,3 @@
1
- import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import React, { forwardRef } from 'react';
3
2
  import { useIntl } from 'react-intl';
4
3
  import { useMeasure, useDebounce } from 'react-use';
@@ -12,53 +11,45 @@ import phrasesKo from './locales/ko.json.js';
12
11
  import { patchXtermComposedPath } from './utils/index.js';
13
12
  import 'xterm/css/xterm.css';
14
13
 
15
- var XTERM_BACKGROUND_COLOR = base.color.navy9;
16
- var StyledXtermWrapper = styled.div.withConfig({
14
+ const XTERM_BACKGROUND_COLOR = base.color.navy9;
15
+ const StyledXtermWrapper = styled.div.withConfig({
17
16
  componentId: "sc-8sudaf-0"
18
17
  })(["flex:1 1 0%;height:100%;background-color:", ";overflow:hidden;padding:1rem;padding-right:0;.xterm-viewport{overflow-y:auto;overflow-x:hidden;}"], XTERM_BACKGROUND_COLOR);
19
- var Xterm = forwardRef(function (_ref, ref) {
20
- var _ref$isRunning = _ref.isRunning,
21
- isRunning = _ref$isRunning === void 0 ? false : _ref$isRunning,
22
- fontSize = _ref.fontSize,
23
- _ref$suppressSystemMe = _ref.suppressSystemMessage,
24
- suppressSystemMessage = _ref$suppressSystemMe === void 0 ? false : _ref$suppressSystemMe,
25
- onInputRequest = _ref.onInputRequest,
26
- onTtyResizeRequest = _ref.onTtyResizeRequest;
27
- var intl = useIntl();
28
- var xterm = React.useRef(null);
29
- var xtermFitAddon = React.useRef(null);
30
- var _useMeasure = useMeasure(),
31
- _useMeasure2 = _slicedToArray(_useMeasure, 2),
32
- xtermWrapperElRef = _useMeasure2[0],
33
- _useMeasure2$ = _useMeasure2[1],
34
- width = _useMeasure2$.width,
35
- height = _useMeasure2$.height;
36
- var xtermElRef = React.useRef(null);
37
- var ttySize = React.useRef({});
38
- var _React$useState = React.useState(false),
39
- _React$useState2 = _slicedToArray(_React$useState, 2),
40
- isRunBefore = _React$useState2[0],
41
- setIsRunBefore = _React$useState2[1];
18
+ const Xterm = forwardRef(({
19
+ isRunning = false,
20
+ fontSize,
21
+ suppressSystemMessage = false,
22
+ onInputRequest,
23
+ onTtyResizeRequest
24
+ }, ref) => {
25
+ const intl = useIntl();
26
+ const xterm = React.useRef(null);
27
+ const xtermFitAddon = React.useRef(null);
28
+ const [xtermWrapperElRef, {
29
+ width,
30
+ height
31
+ }] = useMeasure();
32
+ const xtermElRef = React.useRef(null);
33
+ const ttySize = React.useRef({});
34
+ const [isRunBefore, setIsRunBefore] = React.useState(false);
42
35
  /**
43
36
  * Unfocus the terminal.
44
37
  */
45
- var blur = React.useCallback(function () {
46
- var _a2;
38
+ const blur = React.useCallback((...args) => {
47
39
  var _a;
48
- return (_a = xterm.current) === null || _a === void 0 ? void 0 : (_a2 = _a).blur.apply(_a2, arguments);
40
+ return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.blur(...args);
49
41
  }, []);
50
42
  /**
51
43
  * Focus the terminal.
52
44
  */
53
- var focus = React.useCallback(function () {
54
- var _a3;
45
+ const focus = React.useCallback((...args) => {
55
46
  var _a;
56
- return (_a = xterm.current) === null || _a === void 0 ? void 0 : (_a3 = _a).focus.apply(_a3, arguments);
47
+ return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus(...args);
57
48
  }, []);
58
49
  /**
59
50
  * Resizes the terminal to the dimensions of its containing element.
60
51
  */
61
- var fit = React.useCallback(function () {
52
+ const fit = React.useCallback(() => {
62
53
  var _a;
63
54
  // wrap `fit()` with try-catch.
64
55
  // - ref: https://github.com/bus-stop/x-terminal/issues/57#issuecomment-666012025
@@ -71,7 +62,7 @@ var Xterm = forwardRef(function (_ref, ref) {
71
62
  /**
72
63
  * Write data to the terminal.
73
64
  */
74
- var write = React.useCallback(function (data, callback) {
65
+ const write = React.useCallback((data, callback) => {
75
66
  var _a;
76
67
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(typeof data === 'string' ? data.replace(/\n/g, '\r\n') : data, callback);
77
68
  }, []);
@@ -79,28 +70,23 @@ var Xterm = forwardRef(function (_ref, ref) {
79
70
  * Write emphasized color (yellow) message to the terminal.
80
71
  * (same with `write` but with specific style)
81
72
  */
82
- var writeEmphasized = React.useCallback(function (mesage) {
83
- return write("\x1B[38;5;221m".concat(mesage, "\x1B[0m"));
84
- }, [write]);
73
+ const writeEmphasized = React.useCallback(mesage => write(`\x1b[38;5;221m${mesage}\x1b[0m`), [write]);
85
74
  /**
86
75
  * Write system message to the terminal.
87
76
  * (same with `write` but with specific style)
88
77
  */
89
- var writeSystem = React.useCallback(function (mesage) {
90
- return write("\x1B[1m\x1B[38;5;183m".concat(mesage, "\x1B[0m\n"));
91
- }, [write]);
78
+ const writeSystem = React.useCallback(mesage => write(`\x1b[1m\x1b[38;5;183m${mesage}\x1b[0m\n`), [write]);
92
79
  /**
93
80
  * Perform a full reset (RIS, aka '\x1bc').
94
81
  */
95
- var reset = React.useCallback(function () {
96
- var _a4;
82
+ const reset = React.useCallback((...args) => {
97
83
  var _a;
98
- return (_a = xterm.current) === null || _a === void 0 ? void 0 : (_a4 = _a).reset.apply(_a4, arguments);
84
+ return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.reset(...args);
99
85
  }, []);
100
86
  //
101
87
  // Init xterm.
102
88
  //
103
- React.useEffect(function () {
89
+ React.useEffect(() => {
104
90
  if (!xtermElRef.current) {
105
91
  return;
106
92
  }
@@ -110,7 +96,7 @@ var Xterm = forwardRef(function (_ref, ref) {
110
96
  xterm.current = new Terminal({
111
97
  cursorBlink: true,
112
98
  fontFamily: 'Elice Digital Coding',
113
- fontSize: fontSize,
99
+ fontSize,
114
100
  theme: {
115
101
  background: XTERM_BACKGROUND_COLOR
116
102
  }
@@ -119,17 +105,17 @@ var Xterm = forwardRef(function (_ref, ref) {
119
105
  xtermFitAddon.current = new FitAddon();
120
106
  xterm.current.loadAddon(xtermFitAddon.current);
121
107
  // create xterm window
122
- var xtermEl = xtermElRef.current;
108
+ const xtermEl = xtermElRef.current;
123
109
  if (xtermEl) {
124
110
  xterm.current.open(xtermEl);
125
111
  }
126
112
  // register event handlers
127
- var subscriptionData = xterm.current.onData(onInputRequest);
128
- var subscriptionResize = xterm.current.onResize(function (size) {
113
+ const subscriptionData = xterm.current.onData(onInputRequest);
114
+ const subscriptionResize = xterm.current.onResize(size => {
129
115
  ttySize.current = size;
130
116
  onTtyResizeRequest(size);
131
117
  });
132
- return function () {
118
+ return () => {
133
119
  var _a, _b;
134
120
  subscriptionData.dispose();
135
121
  subscriptionResize.dispose();
@@ -142,14 +128,14 @@ var Xterm = forwardRef(function (_ref, ref) {
142
128
  //
143
129
  // Update xterm font size.
144
130
  //
145
- React.useEffect(function () {
131
+ React.useEffect(() => {
146
132
  var _a;
147
133
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.setOption('fontSize', fontSize);
148
134
  }, [fontSize]);
149
135
  //
150
136
  // Reset and resize xterm when code is running.
151
137
  //
152
- React.useEffect(function () {
138
+ React.useEffect(() => {
153
139
  if (isRunning) {
154
140
  reset();
155
141
  onTtyResizeRequest(ttySize.current);
@@ -160,7 +146,7 @@ var Xterm = forwardRef(function (_ref, ref) {
160
146
  //
161
147
  // Write system message when code is running.
162
148
  //
163
- React.useEffect(function () {
149
+ React.useEffect(() => {
164
150
  if (suppressSystemMessage) {
165
151
  return;
166
152
  }
@@ -193,23 +179,19 @@ var Xterm = forwardRef(function (_ref, ref) {
193
179
  //
194
180
  // Fit xterm with wrapper resized.
195
181
  //
196
- useDebounce(function () {
197
- return fit();
198
- }, 250, [width, height]);
182
+ useDebounce(() => fit(), 250, [width, height]);
199
183
  //
200
184
  //
201
185
  //
202
- React.useImperativeHandle(ref, function () {
203
- return {
204
- blur: blur,
205
- focus: focus,
206
- fit: fit,
207
- reset: reset,
208
- write: write,
209
- writeEmphasized: writeEmphasized,
210
- writeSystem: writeSystem
211
- };
212
- });
186
+ React.useImperativeHandle(ref, () => ({
187
+ blur,
188
+ focus,
189
+ fit,
190
+ reset,
191
+ write,
192
+ writeEmphasized,
193
+ writeSystem
194
+ }));
213
195
  //
214
196
  //
215
197
  //
@@ -217,8 +199,8 @@ var Xterm = forwardRef(function (_ref, ref) {
217
199
  ref: xtermWrapperElRef
218
200
  }, React.createElement("div", {
219
201
  style: {
220
- width: width,
221
- height: height
202
+ width,
203
+ height
222
204
  },
223
205
  ref: xtermElRef
224
206
  }));
@@ -226,7 +208,7 @@ var Xterm = forwardRef(function (_ref, ref) {
226
208
  //
227
209
  //
228
210
  //
229
- var Xterm$1 = forwardRef(function (props, ref) {
211
+ var Xterm$1 = forwardRef((props, ref) => {
230
212
  return React.createElement(MaterialIntlProvider, {
231
213
  locale: props.locale,
232
214
  phrases: {
@@ -1,9 +1,7 @@
1
1
  import React, { forwardRef } from 'react';
2
2
 
3
- var AsyncXterm = React.lazy(function () {
4
- return import('./Xterm.js');
5
- });
6
- var XtermLazy = forwardRef(function (props, ref) {
3
+ const AsyncXterm = React.lazy(() => import('./Xterm.js'));
4
+ const XtermLazy = forwardRef((props, ref) => {
7
5
  return React.createElement(React.Suspense, {
8
6
  fallback: null
9
7
  }, React.createElement(AsyncXterm, Object.assign({}, props, {