@elice/material-exercise 1.231227.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.
- package/cjs/components/material-exercise/MaterialExercise.i18n.js +2 -4
- package/cjs/components/material-exercise/MaterialExercise.js +54 -59
- package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -20
- package/cjs/components/material-exercise/MaterialExerciseMobile.js +8 -15
- package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +14 -18
- package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -66
- package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +19 -24
- package/cjs/components/material-exercise/context/context.js +1 -7
- package/cjs/components/material-exercise/context/locales/noImage.en.json.js +1 -1
- package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +1 -1
- package/cjs/components/material-exercise/context/recoil.js +293 -544
- package/cjs/components/material-exercise/context/recoilTypes.js +0 -2
- package/cjs/components/material-exercise/context/subjects.js +3 -5
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +60 -67
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -14
- package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +17 -21
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +133 -203
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -12
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +24 -40
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +38 -52
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +5 -9
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +189 -328
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +5 -9
- package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +14 -17
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +11 -15
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +7 -11
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +44 -65
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +32 -61
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +19 -35
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +48 -62
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -18
- package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +21 -32
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -8
- package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +23 -27
- package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -17
- package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +23 -32
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +7 -15
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +79 -86
- package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +11 -22
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -20
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +180 -288
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +82 -116
- package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -4
- package/cjs/components/material-exercise/exercise-room/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +125 -181
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -7
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -17
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +43 -58
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +15 -27
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +65 -68
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +23 -32
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +58 -92
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +3 -7
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +11 -16
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +18 -29
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +162 -282
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -14
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -54
- package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +1 -1
- package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +15 -21
- package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +14 -19
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +16 -21
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +5 -10
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +18 -23
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +10 -21
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -8
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -7
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -11
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -15
- package/cjs/components/shared/file-icon/FileIcon.js +17 -23
- package/cjs/components/shared/file-tabs/FileTab.js +30 -36
- package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -25
- package/cjs/components/shared/file-tabs/FileTabs.js +38 -63
- package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -8
- package/cjs/components/shared/file-tabs/util.js +14 -29
- package/cjs/components/shared/file-tree/FileTree.js +12 -17
- package/cjs/components/shared/file-tree/FileTreeConfig.js +22 -25
- package/cjs/components/shared/file-tree/FileTreeList.js +37 -39
- package/cjs/components/shared/file-tree/FileTreeListItemContent.js +61 -75
- package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -31
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +64 -72
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -12
- package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +63 -74
- package/cjs/components/shared/file-tree/FileTreeListItems.js +136 -151
- package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -8
- package/cjs/components/shared/file-tree/FileTreeToolbar.js +31 -32
- package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -7
- package/cjs/components/shared/file-tree/context/FileTreeContext.js +76 -97
- package/cjs/components/shared/file-tree/locales/en.json.js +1 -1
- package/cjs/components/shared/file-tree/locales/ko.json.js +1 -1
- package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -26
- package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -195
- package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -2
- package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -3
- package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -7
- package/cjs/components/shared/file-viewer/FileViewer.js +37 -61
- package/cjs/components/shared/file-viewer/FileViewerCsv.js +108 -172
- package/cjs/components/shared/file-viewer/FileViewerImage.js +8 -12
- package/cjs/components/shared/file-viewer/FileViewerIpynb.js +10 -23
- package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +33 -42
- package/cjs/components/shared/file-viewer/FileViewerText.js +12 -24
- package/cjs/components/shared/file-viewer/locales/en.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/ko.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +1 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +1 -1
- package/cjs/components/shared/material-modal/MaterialModal.js +11 -14
- package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -11
- package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -99
- package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +6 -12
- package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +36 -50
- package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +91 -110
- package/cjs/components/shared/monaco-editor/constants/grammars/JSON.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/MagicPython.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/TypeScriptReact.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/asp-vb-net.tmlanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/c.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/cpp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/csharp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/css.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/dart.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/fsharp.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/go.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/html.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -84
- package/cjs/components/shared/monaco-editor/constants/grammars/java.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/lua.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/objective-c.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/php.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/r.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/ruby.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/rust.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/scss.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/sql.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/swift.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/xml.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/grammars/yaml.tmLanguage.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -7
- package/cjs/components/shared/monaco-editor/constants/themes/abyss.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/elice.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -51
- package/cjs/components/shared/monaco-editor/constants/themes/kimbie-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/monokai.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/quietlight.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/red.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/solarized-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/solarized-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/tomorrow-night-blue.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-dark-plus.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-dark.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-black.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-hc-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-light-plus.json.js +1 -1
- package/cjs/components/shared/monaco-editor/constants/themes/vs-light.json.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -17
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -36
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -8
- package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +11 -52
- package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +7 -8
- package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +11 -52
- package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +5 -6
- package/cjs/components/shared/monaco-editor/editor-languages/index.js +4 -4
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -3
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +11 -56
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +17 -18
- package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -13
- package/cjs/components/shared/monaco-editor/locales/en.json.js +1 -1
- package/cjs/components/shared/monaco-editor/locales/ko.json.js +1 -1
- package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -12
- package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -2
- package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -14
- package/cjs/components/shared/monaco-editor/utils/grammar/index.js +25 -69
- package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -27
- package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +38 -73
- package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +8 -11
- package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -8
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -4
- package/cjs/components/shared/monaco-editor/utils/prettier/index.js +8 -46
- package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -26
- package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -24
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -79
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -84
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -122
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +133 -158
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -106
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -4
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -4
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -179
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -5
- package/cjs/components/shared/no-vnc/NoVnc.js +57 -86
- package/cjs/components/shared/no-vnc/NoVncLazy.js +5 -11
- package/cjs/components/shared/preview-container/PreviewContainer.js +11 -15
- package/cjs/components/shared/web-browser/WebBrowser.js +37 -53
- package/cjs/components/shared/xterm/Xterm.js +58 -81
- package/cjs/components/shared/xterm/XtermLazy.js +5 -11
- package/cjs/components/shared/xterm/locales/en.json.js +1 -1
- package/cjs/components/shared/xterm/locales/ko.json.js +1 -1
- package/cjs/components/shared/xterm/utils/index.js +0 -2
- package/cjs/constants/arduino.js +10 -12
- package/cjs/constants/shortcutKeyMap.js +2 -4
- package/cjs/constants/stylesheets.js +5 -9
- package/cjs/hooks/useArduino.js +141 -284
- package/cjs/hooks/useExerciseFile.js +22 -26
- package/cjs/hooks/useExericseShortcut.js +4 -8
- package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -57
- package/cjs/hooks/useRunnerRoomWebSocket.js +27 -53
- package/cjs/hooks/useStdioTextConcator.js +10 -22
- package/cjs/hooks/useStdioWebSocket.js +28 -34
- package/cjs/hooks/useUsercodeEditWebSocket.js +158 -240
- package/cjs/hooks/useUsercodeHistory.js +63 -117
- package/cjs/index.js +4 -6
- package/cjs/utils/arduino.js +11 -25
- package/cjs/utils/exerciseFile.js +10 -10
- package/cjs/utils/runner.js +15 -31
- package/es/components/material-exercise/MaterialExercise.i18n.js +2 -2
- package/es/components/material-exercise/MaterialExercise.js +34 -35
- package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
- package/es/components/material-exercise/MaterialExerciseMobile.js +6 -9
- package/es/components/material-exercise/context/ExerciseIntlProvider.js +10 -8
- package/es/components/material-exercise/context/ExerciseProvider.js +52 -55
- package/es/components/material-exercise/context/ExerciseProviderNoImage.js +10 -10
- package/es/components/material-exercise/context/context.js +1 -1
- package/es/components/material-exercise/context/recoil.js +290 -535
- package/es/components/material-exercise/context/subjects.js +3 -3
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +51 -53
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-file/ExerciseFile.js +9 -8
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +127 -193
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -4
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +20 -31
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +35 -44
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +181 -315
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +11 -10
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -6
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -3
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +25 -42
- package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +26 -51
- package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +11 -23
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +21 -31
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -26
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
- package/es/components/material-exercise/exercise-preview/ExercisePreview.js +15 -14
- package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +5 -11
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +11 -15
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +5 -9
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -80
- package/es/components/material-exercise/exercise-room/ExerciseRoom.js +6 -13
- package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
- package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +134 -236
- package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +65 -94
- package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +116 -167
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +8 -7
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +17 -27
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +11 -18
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +52 -50
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +10 -14
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +46 -75
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +4 -4
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +15 -21
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +138 -253
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +29 -37
- package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +12 -13
- package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -2
- package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -12
- package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -2
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -14
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -15
- package/es/components/shared/exercise-version-list/ExerciseVersionList.js +3 -2
- package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +6 -5
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
- package/es/components/shared/file-icon/FileIcon.js +15 -17
- package/es/components/shared/file-tabs/FileTab.js +22 -24
- package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
- package/es/components/shared/file-tabs/FileTabs.js +35 -55
- package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/es/components/shared/file-tabs/util.js +14 -27
- package/es/components/shared/file-tree/FileTree.js +3 -3
- package/es/components/shared/file-tree/FileTreeConfig.js +18 -15
- package/es/components/shared/file-tree/FileTreeList.js +33 -29
- package/es/components/shared/file-tree/FileTreeListItemContent.js +45 -55
- package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
- package/es/components/shared/file-tree/FileTreeListItemContentInput.js +60 -64
- package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +39 -46
- package/es/components/shared/file-tree/FileTreeListItems.js +134 -145
- package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/es/components/shared/file-tree/FileTreeToolbar.js +25 -22
- package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.js +74 -89
- package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
- package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
- package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
- package/es/components/shared/file-viewer/FileViewer.js +21 -38
- package/es/components/shared/file-viewer/FileViewerCsv.js +70 -129
- package/es/components/shared/file-viewer/FileViewerImage.js +4 -3
- package/es/components/shared/file-viewer/FileViewerIpynb.js +7 -14
- package/es/components/shared/file-viewer/FileViewerNonViewable.js +15 -18
- package/es/components/shared/file-viewer/FileViewerText.js +9 -17
- package/es/components/shared/material-modal/MaterialModal.js +8 -7
- package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/es/components/shared/monaco-editor/MonacoEditor.js +67 -87
- package/es/components/shared/monaco-editor/MonacoEditorLazy.js +2 -4
- package/es/components/shared/monaco-editor/MonacoEditorMobile.js +31 -41
- package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +52 -66
- package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
- package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
- package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
- package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
- package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
- package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
- package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
- package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
- package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -68
- package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
- package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
- package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
- package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
- package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
- package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
- package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
- package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +6 -1
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +157 -172
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
- package/es/components/shared/no-vnc/NoVnc.js +42 -59
- package/es/components/shared/no-vnc/NoVncLazy.js +2 -4
- package/es/components/shared/preview-container/PreviewContainer.js +8 -7
- package/es/components/shared/web-browser/WebBrowser.js +29 -40
- package/es/components/shared/xterm/Xterm.js +51 -69
- package/es/components/shared/xterm/XtermLazy.js +2 -4
- package/es/constants/arduino.js +10 -10
- package/es/constants/shortcutKeyMap.js +1 -3
- package/es/constants/stylesheets.js +5 -7
- package/es/hooks/useArduino.js +141 -278
- package/es/hooks/useExerciseFile.js +22 -24
- package/es/hooks/useExericseShortcut.js +4 -6
- package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
- package/es/hooks/useRunnerRoomWebSocket.js +27 -51
- package/es/hooks/useStdioTextConcator.js +10 -16
- package/es/hooks/useStdioWebSocket.js +28 -32
- package/es/hooks/useUsercodeEditWebSocket.js +157 -232
- package/es/hooks/useUsercodeHistory.js +63 -115
- package/es/utils/arduino.js +11 -23
- package/es/utils/exerciseFile.js +10 -8
- package/es/utils/runner.js +15 -29
- package/package.json +11 -7
- package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -521
- package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
6
5
|
var React = require('react');
|
|
7
6
|
var reactIntl = require('react-intl');
|
|
8
7
|
var reactUse = require('react-use');
|
|
@@ -37,56 +36,52 @@ var ko = require('./locales/ko.json.js');
|
|
|
37
36
|
var ExerciseRunnerContext = require('./ExerciseRunnerContext.js');
|
|
38
37
|
var ExerciseRunnerController = require('./ExerciseRunnerController.js');
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
43
|
-
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
44
|
-
|
|
45
|
-
var EXERCISE_RUNNER_HORIZONTAL_RATIO = {
|
|
39
|
+
const EXERCISE_RUNNER_HORIZONTAL_RATIO = {
|
|
46
40
|
PREVIEW: 0.3,
|
|
47
41
|
XTERM: 0.7
|
|
48
42
|
};
|
|
49
|
-
|
|
43
|
+
const StyledExerciseRunner = styled.div.withConfig({
|
|
50
44
|
componentId: "sc-mp78g-0"
|
|
51
45
|
})(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";min-height:0;"], designTokens.base.color.navy8);
|
|
52
46
|
/**
|
|
53
47
|
*
|
|
54
48
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
const ExerciseRunner = ({
|
|
50
|
+
exercisePreview
|
|
51
|
+
}) => {
|
|
57
52
|
var _a, _b, _c;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
onCodeHelpRequest
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
53
|
+
const intl = reactIntl.useIntl();
|
|
54
|
+
const {
|
|
55
|
+
onCodeHelpRequest
|
|
56
|
+
} = React.useContext(context.ExerciseContext);
|
|
57
|
+
const {
|
|
58
|
+
materialExerciseId,
|
|
59
|
+
exerciseRoomId,
|
|
60
|
+
locale,
|
|
61
|
+
onSubmit,
|
|
62
|
+
onError
|
|
63
|
+
} = React.useContext(context.ExerciseContext);
|
|
64
|
+
const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
|
|
65
|
+
const {
|
|
66
|
+
fontSize: editorPreferenceFontSize
|
|
67
|
+
} = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState);
|
|
70
68
|
// runner states
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
setRunnerRunTypeState = _useRecoilState2[1];
|
|
77
|
-
var setExerciseRunnerRoomConnectionInfo = recoil.useSetRecoilState(recoil$1.exerciseRunnerRoomConnectionInfoState);
|
|
78
|
-
var setRunnerStdioFilesState = recoil.useSetRecoilState(recoil$1.exerciseRunnerStdioFilesState);
|
|
69
|
+
const setRunnerSubmitting = recoil.useSetRecoilState(recoil$1.exerciseRunnerSubmittingState);
|
|
70
|
+
const setRunnerRunning = recoil.useSetRecoilState(recoil$1.exerciseRunnerRunningState);
|
|
71
|
+
const [runnerRunTypeState, setRunnerRunTypeState] = recoil.useRecoilState(recoil$1.exerciseRunnerRunTypeState);
|
|
72
|
+
const setExerciseRunnerRoomConnectionInfo = recoil.useSetRecoilState(recoil$1.exerciseRunnerRoomConnectionInfoState);
|
|
73
|
+
const setRunnerStdioFilesState = recoil.useSetRecoilState(recoil$1.exerciseRunnerStdioFilesState);
|
|
79
74
|
// preview states
|
|
80
|
-
|
|
81
|
-
|
|
75
|
+
const exercisePreviewType = recoil.useRecoilValue(recoil$1.exercisePreviewTypeState(materialExerciseId));
|
|
76
|
+
const exercisePreviewDisplayMode = recoil.useRecoilValue(recoil$1.exercisePreviewDisplayModeState);
|
|
82
77
|
// monaco editor value
|
|
83
|
-
|
|
78
|
+
const exerciseMonacoEditorApis = recoil.useRecoilValue(recoil$1.exerciseMonacoEditorApisState);
|
|
84
79
|
// websockets
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
const setRunnerRoomWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('runnerRoom'));
|
|
81
|
+
const setStdioWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('stdio'));
|
|
82
|
+
const handleAiHelpibotError = text => {
|
|
88
83
|
var _a, _b, _c;
|
|
89
|
-
|
|
84
|
+
const error = runner.getProgrammingErrorResult(text);
|
|
90
85
|
if (!!error && typeof onCodeHelpRequest === 'function') {
|
|
91
86
|
onCodeHelpRequest({
|
|
92
87
|
code: error.errorCode,
|
|
@@ -97,33 +92,31 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
97
92
|
});
|
|
98
93
|
}
|
|
99
94
|
};
|
|
100
|
-
|
|
101
|
-
updateStdioTextConcator
|
|
95
|
+
const {
|
|
96
|
+
updateStdioTextConcator
|
|
97
|
+
} = useStdioTextConcator.useStdioTextConcator(handleAiHelpibotError);
|
|
102
98
|
// etc
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
var arduinoTextBuffer = React__default["default"].useRef('');
|
|
109
|
-
var runnerRunTypeRef = React__default["default"].useRef(runnerRunTypeState);
|
|
110
|
-
var xterm = React__default["default"].useRef(null);
|
|
99
|
+
const exerciseContainerSize = recoil.useRecoilValue(recoil$1.exerciseContainerSizeState);
|
|
100
|
+
const [runnerSubmitErrorDialog, setRunnerSubmitErrorDialog] = React.useState(null);
|
|
101
|
+
const arduinoTextBuffer = React.useRef('');
|
|
102
|
+
const runnerRunTypeRef = React.useRef(runnerRunTypeState);
|
|
103
|
+
const xterm = React.useRef(null);
|
|
111
104
|
/**
|
|
112
105
|
* Handle text received from arduino serial output.
|
|
113
106
|
*/
|
|
114
|
-
|
|
107
|
+
const handleArduinoDigitalOutput = text => {
|
|
115
108
|
var _a;
|
|
116
109
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
|
|
117
110
|
};
|
|
118
111
|
// Arduino
|
|
119
|
-
|
|
112
|
+
const arduino = useArduino.useArduino({
|
|
120
113
|
writeTerminal: handleArduinoDigitalOutput
|
|
121
114
|
});
|
|
122
|
-
|
|
115
|
+
const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.Arduino;
|
|
123
116
|
/**
|
|
124
117
|
* Handle destroy arduino client.
|
|
125
118
|
*/
|
|
126
|
-
|
|
119
|
+
const handleArduinoDistroy = React.useCallback(() => {
|
|
127
120
|
if (isArduinoExercise) {
|
|
128
121
|
arduino.destroy();
|
|
129
122
|
}
|
|
@@ -131,7 +124,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
131
124
|
/**
|
|
132
125
|
* Handle text received from stdio websocket.
|
|
133
126
|
*/
|
|
134
|
-
|
|
127
|
+
const handleWsStdioTextReceive = (type, text) => {
|
|
135
128
|
var _a, _b, _c;
|
|
136
129
|
switch (type) {
|
|
137
130
|
case 'text':
|
|
@@ -149,7 +142,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
149
142
|
/**
|
|
150
143
|
* Handle file received from stdio websocket.
|
|
151
144
|
*/
|
|
152
|
-
|
|
145
|
+
const handleWsStdioFileReceive = stdioFile => {
|
|
153
146
|
// arduino exercise
|
|
154
147
|
if (isArduinoExercise) {
|
|
155
148
|
if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
|
|
@@ -158,20 +151,18 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
158
151
|
return;
|
|
159
152
|
}
|
|
160
153
|
// normal exercise
|
|
161
|
-
setRunnerStdioFilesState(
|
|
162
|
-
return [].concat(_rollupPluginBabelHelpers.toConsumableArray(prevFiles), [stdioFile]);
|
|
163
|
-
});
|
|
154
|
+
setRunnerStdioFilesState(prevFiles => [...prevFiles, stdioFile]);
|
|
164
155
|
};
|
|
165
156
|
/**
|
|
166
157
|
* Runner room websocket
|
|
167
158
|
*/
|
|
168
|
-
|
|
169
|
-
exerciseRoomId
|
|
159
|
+
const wsRunnerRoom = useRunnerRoomWebSocket.useRunnerRoomWebSocket({
|
|
160
|
+
exerciseRoomId
|
|
170
161
|
});
|
|
171
162
|
/**
|
|
172
163
|
* Stdio websocket
|
|
173
164
|
*/
|
|
174
|
-
|
|
165
|
+
const wsStdio = useStdioWebSocket.useStdioWebSocket({
|
|
175
166
|
wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
|
|
176
167
|
roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
|
|
177
168
|
isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
|
|
@@ -181,7 +172,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
181
172
|
/**
|
|
182
173
|
* Handle submit code error.
|
|
183
174
|
*/
|
|
184
|
-
|
|
175
|
+
const handleRunnerSubmitError = err => {
|
|
185
176
|
var _a, _b;
|
|
186
177
|
switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
|
|
187
178
|
case 'room_type_mismatch':
|
|
@@ -197,9 +188,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
197
188
|
action: intl.formatMessage({
|
|
198
189
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
199
190
|
}),
|
|
200
|
-
onAction:
|
|
201
|
-
return window.location.reload();
|
|
202
|
-
}
|
|
191
|
+
onAction: () => window.location.reload()
|
|
203
192
|
});
|
|
204
193
|
break;
|
|
205
194
|
case 'invalid_room_token':
|
|
@@ -211,9 +200,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
211
200
|
action: intl.formatMessage({
|
|
212
201
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
213
202
|
}),
|
|
214
|
-
onAction:
|
|
215
|
-
return window.location.reload();
|
|
216
|
-
}
|
|
203
|
+
onAction: () => window.location.reload()
|
|
217
204
|
});
|
|
218
205
|
break;
|
|
219
206
|
case 'not_for_submit_grade':
|
|
@@ -236,9 +223,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
236
223
|
action: intl.formatMessage({
|
|
237
224
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
238
225
|
}),
|
|
239
|
-
onAction:
|
|
240
|
-
return window.location.reload();
|
|
241
|
-
}
|
|
226
|
+
onAction: () => window.location.reload()
|
|
242
227
|
});
|
|
243
228
|
break;
|
|
244
229
|
case 'not_prepared_room_forwarder':
|
|
@@ -291,89 +276,60 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
291
276
|
/**
|
|
292
277
|
* Handle submit code to runner and run / grade.
|
|
293
278
|
*/
|
|
294
|
-
|
|
295
|
-
var
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
setRunnerSubmitting(false);
|
|
323
|
-
handleRunnerSubmitError(err);
|
|
324
|
-
if (typeof onError === 'function') {
|
|
325
|
-
onError(err);
|
|
326
|
-
}
|
|
327
|
-
}));
|
|
328
|
-
case 8:
|
|
329
|
-
case "end":
|
|
330
|
-
return _context.stop();
|
|
331
|
-
}
|
|
332
|
-
}, _callee);
|
|
333
|
-
}));
|
|
334
|
-
return function handleRunnerSubmit(_x) {
|
|
335
|
-
return _ref2.apply(this, arguments);
|
|
336
|
-
};
|
|
337
|
-
}();
|
|
279
|
+
const handleRunnerSubmit = async runType => {
|
|
280
|
+
var _a, _b, _c;
|
|
281
|
+
const readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
|
|
282
|
+
const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
283
|
+
if (!readyExerciseImage || !roomToken) {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
setRunnerStdioFilesState([]);
|
|
287
|
+
setRunnerRunTypeState(runType);
|
|
288
|
+
setRunnerSubmitting(true);
|
|
289
|
+
return apiClient.postOrgMaterialExerciseExerciseRunningSubmit({
|
|
290
|
+
roomToken,
|
|
291
|
+
runType,
|
|
292
|
+
exerciseImageId: readyExerciseImage.id,
|
|
293
|
+
vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
|
|
294
|
+
vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
|
|
295
|
+
}).then(res => {
|
|
296
|
+
if (typeof onSubmit === 'function') {
|
|
297
|
+
onSubmit(res);
|
|
298
|
+
}
|
|
299
|
+
}).catch(err => {
|
|
300
|
+
setRunnerSubmitting(false);
|
|
301
|
+
handleRunnerSubmitError(err);
|
|
302
|
+
if (typeof onError === 'function') {
|
|
303
|
+
onError(err);
|
|
304
|
+
}
|
|
305
|
+
});
|
|
306
|
+
};
|
|
338
307
|
/**
|
|
339
308
|
* Handle runner to cancel running.
|
|
340
309
|
*/
|
|
341
|
-
|
|
342
|
-
var
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
roomToken: roomToken
|
|
351
|
-
});
|
|
352
|
-
}
|
|
353
|
-
case 2:
|
|
354
|
-
case "end":
|
|
355
|
-
return _context2.stop();
|
|
356
|
-
}
|
|
357
|
-
}, _callee2);
|
|
358
|
-
}));
|
|
359
|
-
return function handleRunnerCancel() {
|
|
360
|
-
return _ref3.apply(this, arguments);
|
|
361
|
-
};
|
|
362
|
-
}();
|
|
310
|
+
const handleRunnerCancel = async () => {
|
|
311
|
+
var _a;
|
|
312
|
+
const roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
313
|
+
if (roomToken) {
|
|
314
|
+
void apiClient.postOrgMaterialExerciseExerciseRunningCancel({
|
|
315
|
+
roomToken
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
};
|
|
363
319
|
/**
|
|
364
320
|
* Handle runner to request code sync.
|
|
365
321
|
*/
|
|
366
|
-
|
|
322
|
+
const handleRunnerSyncRequest = () => {
|
|
367
323
|
wsStdio.sendSync();
|
|
368
324
|
};
|
|
369
325
|
/**
|
|
370
326
|
* Handle input requests for arduino.
|
|
371
327
|
*/
|
|
372
|
-
|
|
328
|
+
const handleXtermArduinoInputRequest = char => {
|
|
373
329
|
var _a, _b, _c;
|
|
374
330
|
switch (char) {
|
|
375
331
|
// backspace
|
|
376
|
-
case
|
|
332
|
+
case '\u007f':
|
|
377
333
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
|
|
378
334
|
arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
|
|
379
335
|
break;
|
|
@@ -388,14 +344,14 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
388
344
|
// any char
|
|
389
345
|
default:
|
|
390
346
|
(_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
|
|
391
|
-
arduinoTextBuffer.current =
|
|
347
|
+
arduinoTextBuffer.current = `${arduinoTextBuffer.current}${char}`;
|
|
392
348
|
break;
|
|
393
349
|
}
|
|
394
350
|
};
|
|
395
351
|
/**
|
|
396
352
|
* Handle input requests.
|
|
397
353
|
*/
|
|
398
|
-
|
|
354
|
+
const handleXtermInputRequest = text => {
|
|
399
355
|
if (isArduinoExercise) {
|
|
400
356
|
handleXtermArduinoInputRequest(text);
|
|
401
357
|
} else {
|
|
@@ -405,12 +361,12 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
405
361
|
//
|
|
406
362
|
// Initialize Arduino devices.
|
|
407
363
|
//
|
|
408
|
-
|
|
364
|
+
React.useEffect(() => {
|
|
409
365
|
if (!isArduinoExercise) {
|
|
410
366
|
return;
|
|
411
367
|
}
|
|
412
368
|
void arduino.init();
|
|
413
|
-
return
|
|
369
|
+
return () => {
|
|
414
370
|
void arduino.destroy();
|
|
415
371
|
};
|
|
416
372
|
},
|
|
@@ -423,17 +379,13 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
423
379
|
//
|
|
424
380
|
// Update runner room websocket state.
|
|
425
381
|
//
|
|
426
|
-
|
|
427
|
-
return setRunnerRoomWebSocketState(wsRunnerRoom.readyState);
|
|
428
|
-
},
|
|
382
|
+
React.useEffect(() => setRunnerRoomWebSocketState(wsRunnerRoom.readyState),
|
|
429
383
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
430
384
|
[wsRunnerRoom.readyState]);
|
|
431
385
|
//
|
|
432
386
|
// Update stdio websocket state.
|
|
433
387
|
//
|
|
434
|
-
|
|
435
|
-
return setStdioWebSocketState(wsStdio.readyState);
|
|
436
|
-
},
|
|
388
|
+
React.useEffect(() => setStdioWebSocketState(wsStdio.readyState),
|
|
437
389
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
438
390
|
[wsStdio.readyState]);
|
|
439
391
|
//
|
|
@@ -441,17 +393,15 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
441
393
|
// whenever runner room's running status is changed.
|
|
442
394
|
// (assume that sumbitting done when running status is changed)
|
|
443
395
|
//
|
|
444
|
-
|
|
445
|
-
return setRunnerSubmitting(false);
|
|
446
|
-
},
|
|
396
|
+
React.useEffect(() => setRunnerSubmitting(false),
|
|
447
397
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
448
398
|
[wsRunnerRoom.isRunning]);
|
|
449
399
|
//
|
|
450
400
|
// Auto focus terminal when running.
|
|
451
401
|
//
|
|
452
|
-
|
|
402
|
+
React.useEffect(() => {
|
|
453
403
|
if (wsRunnerRoom.isRunning) {
|
|
454
|
-
setTimeout(
|
|
404
|
+
setTimeout(() => {
|
|
455
405
|
var _a;
|
|
456
406
|
return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
457
407
|
}, 100);
|
|
@@ -462,31 +412,27 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
462
412
|
//
|
|
463
413
|
// Bind runner run type to ref.
|
|
464
414
|
//
|
|
465
|
-
|
|
415
|
+
React.useEffect(() => {
|
|
466
416
|
runnerRunTypeRef.current = runnerRunTypeState;
|
|
467
417
|
}, [runnerRunTypeState]);
|
|
468
418
|
//
|
|
469
419
|
// Update room connection info.
|
|
470
420
|
//
|
|
471
|
-
|
|
472
|
-
return setRunnerRunning(wsRunnerRoom.isRunning);
|
|
473
|
-
},
|
|
421
|
+
React.useEffect(() => setRunnerRunning(wsRunnerRoom.isRunning),
|
|
474
422
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
475
423
|
[wsRunnerRoom.isRunning]);
|
|
476
424
|
//
|
|
477
425
|
// Update room connection info.
|
|
478
426
|
//
|
|
479
|
-
|
|
480
|
-
return setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo);
|
|
481
|
-
},
|
|
427
|
+
React.useEffect(() => setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo),
|
|
482
428
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
483
429
|
[wsRunnerRoom.roomConnectionInfo]);
|
|
484
430
|
//
|
|
485
431
|
// handle send text request to runner stdio.
|
|
486
432
|
//
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
return
|
|
433
|
+
React.useEffect(() => {
|
|
434
|
+
const textSendSub = subjects.exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
|
|
435
|
+
return () => {
|
|
490
436
|
textSendSub.unsubscribe();
|
|
491
437
|
};
|
|
492
438
|
},
|
|
@@ -495,14 +441,14 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
495
441
|
/**
|
|
496
442
|
* Preview.
|
|
497
443
|
*/
|
|
498
|
-
|
|
444
|
+
const renderPreview = () => {
|
|
499
445
|
if (exercisePreviewType === recoilTypes.ExercisePreviewType.None) {
|
|
500
446
|
return null;
|
|
501
447
|
}
|
|
502
448
|
if (exercisePreviewDisplayMode !== recoilTypes.ExercisePreviewDisplayMode.Mini) {
|
|
503
449
|
return null;
|
|
504
450
|
}
|
|
505
|
-
return
|
|
451
|
+
return React.createElement(blocks.ResizableNext, Object.assign({}, stylesheets.MATERIAL_RESIZABLE_COMMON_PROPS, {
|
|
506
452
|
children: exercisePreview,
|
|
507
453
|
initialWidth: exerciseContainerSize.width * EXERCISE_RUNNER_HORIZONTAL_RATIO.PREVIEW,
|
|
508
454
|
resizeHandles: ['e'],
|
|
@@ -512,14 +458,14 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
512
458
|
/**
|
|
513
459
|
* Xterm
|
|
514
460
|
*/
|
|
515
|
-
|
|
461
|
+
const renderXterm = () => {
|
|
516
462
|
// show system message when...
|
|
517
|
-
|
|
463
|
+
const showSystemMessage =
|
|
518
464
|
// - run type is grade
|
|
519
465
|
runnerRunTypeState === types.enums.ExerciseRunType.Grade ||
|
|
520
466
|
// - not an arduino exercise
|
|
521
467
|
!isArduinoExercise;
|
|
522
|
-
return
|
|
468
|
+
return React.createElement(XtermLazy.default, {
|
|
523
469
|
isRunning: wsRunnerRoom.isRunning,
|
|
524
470
|
fontSize: editorPreferenceFontSize,
|
|
525
471
|
suppressSystemMessage: !showSystemMessage,
|
|
@@ -532,22 +478,20 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
532
478
|
/**
|
|
533
479
|
* Runner submit error dialog.
|
|
534
480
|
*/
|
|
535
|
-
|
|
481
|
+
const renderRunnerSubmitErrorDialog = () => {
|
|
536
482
|
if (!runnerSubmitErrorDialog) {
|
|
537
483
|
return null;
|
|
538
484
|
}
|
|
539
|
-
return
|
|
485
|
+
return React.createElement(blocks.Dialog, {
|
|
540
486
|
type: "error",
|
|
541
487
|
title: intl.formatMessage({
|
|
542
488
|
id: 'exerciseRunner.submitErrorDialog.title'
|
|
543
489
|
}),
|
|
544
|
-
body:
|
|
545
|
-
onHide:
|
|
546
|
-
|
|
547
|
-
}
|
|
548
|
-
}, React__default["default"].createElement(blocks.Dialog.ActionButton, {
|
|
490
|
+
body: `${runnerSubmitErrorDialog.message}\n(error code: ${runnerSubmitErrorDialog.code})`,
|
|
491
|
+
onHide: () => setRunnerSubmitErrorDialog(null)
|
|
492
|
+
}, React.createElement(blocks.Dialog.ActionButton, {
|
|
549
493
|
children: runnerSubmitErrorDialog.action,
|
|
550
|
-
onClick:
|
|
494
|
+
onClick: () => {
|
|
551
495
|
if (typeof runnerSubmitErrorDialog.onAction === 'function') {
|
|
552
496
|
runnerSubmitErrorDialog.onAction();
|
|
553
497
|
}
|
|
@@ -558,13 +502,13 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
558
502
|
//
|
|
559
503
|
//
|
|
560
504
|
//
|
|
561
|
-
return
|
|
505
|
+
return React.createElement(StyledExerciseRunner, null, React.createElement(ExerciseRunnerContext.ExerciseRunnerContext.Provider, {
|
|
562
506
|
value: {
|
|
563
507
|
onSubmit: handleRunnerSubmit,
|
|
564
508
|
onCancel: handleRunnerCancel,
|
|
565
509
|
onSyncRequest: handleRunnerSyncRequest
|
|
566
510
|
}
|
|
567
|
-
},
|
|
511
|
+
}, React.createElement(ExerciseRunnerController.default, null), React.createElement(blocks.Flex, {
|
|
568
512
|
auto: true,
|
|
569
513
|
style: {
|
|
570
514
|
minHeight: 0
|
|
@@ -573,8 +517,8 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
573
517
|
}, renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog())));
|
|
574
518
|
};
|
|
575
519
|
var ExerciseRunner$1 = ExerciseIntlProvider.withExerciseIntlProvider(ExerciseRunner, {
|
|
576
|
-
en: en
|
|
577
|
-
ko: ko
|
|
520
|
+
en: en.default,
|
|
521
|
+
ko: ko.default
|
|
578
522
|
});
|
|
579
523
|
|
|
580
|
-
exports
|
|
524
|
+
exports.default = ExerciseRunner$1;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var React = require('react');
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
|
-
|
|
11
|
-
var ExerciseRunnerContext = React__default["default"].createContext(null);
|
|
5
|
+
const ExerciseRunnerContext = React.createContext(null);
|
|
12
6
|
|
|
13
7
|
exports.ExerciseRunnerContext = ExerciseRunnerContext;
|
|
@@ -20,28 +20,24 @@ var ExerciseRunnerControllerRunningInfo = require('./ExerciseRunnerControllerRun
|
|
|
20
20
|
var ExerciseRunnerControllerStatusMessage = require('./ExerciseRunnerControllerStatusMessage.js');
|
|
21
21
|
var ExerciseRunnerControllerTimer = require('./ExerciseRunnerControllerTimer.js');
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
26
|
-
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
27
|
-
|
|
28
|
-
var RUNNER_CONTROLLER_HEIGHT = 50;
|
|
29
|
-
var StyledController = styled__default["default"].div.withConfig({
|
|
23
|
+
const RUNNER_CONTROLLER_HEIGHT = 50;
|
|
24
|
+
const StyledController = styled.div.withConfig({
|
|
30
25
|
componentId: "sc-1fvokag-0"
|
|
31
26
|
})(["display:flex;justify-content:space-between;align-items:center;padding:0.5rem 1rem;height:", "px;border-bottom:", ";"], RUNNER_CONTROLLER_HEIGHT, stylesheets.MATERIAL_DIVIDER_BORDER_VALUE);
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
materialExerciseId
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
const ExerciseRunnerController = () => {
|
|
28
|
+
const {
|
|
29
|
+
materialExerciseId
|
|
30
|
+
} = React.useContext(context.ExerciseContext);
|
|
31
|
+
const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
|
|
32
|
+
const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.Arduino;
|
|
33
|
+
return React.createElement(StyledController, null, React.createElement(blocks.Flex, {
|
|
38
34
|
align: "center"
|
|
39
|
-
},
|
|
35
|
+
}, React.createElement(ExerciseRunnerControllerButtonGroup.default, null), React.createElement(blocks.Hspace, {
|
|
40
36
|
width: 1
|
|
41
|
-
}),
|
|
37
|
+
}), React.createElement(ExerciseRunnerControllerRunningInfo.default, null), React.createElement(ExerciseRunnerControllerTimer.default, null)), React.createElement(blocks.Flex, {
|
|
42
38
|
column: true,
|
|
43
39
|
align: "flex-end"
|
|
44
|
-
},
|
|
40
|
+
}, React.createElement(ExerciseRunnerControllerStatusMessage.default, null), isArduinoExercise ? React.createElement(ExerciseRunnerControllerArduinoStatusMessage.default, null) : null), isArduinoExercise ? React.createElement(ExerciseRunnerControllerArduinoAgentModal.default, null) : null);
|
|
45
41
|
};
|
|
46
42
|
|
|
47
|
-
exports
|
|
43
|
+
exports.default = ExerciseRunnerController;
|