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