@elice/material-exercise 1.230328.0 → 1.230418.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/_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,5 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
3
6
|
var React = require('react');
|
|
4
7
|
var reactIntl = require('react-intl');
|
|
5
8
|
var reactUse = require('react-use');
|
|
@@ -39,57 +42,51 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
39
42
|
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
40
43
|
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
var EXERCISE_RUNNER_HORIZONTAL_RATIO = {
|
|
43
46
|
PREVIEW: 0.3,
|
|
44
47
|
XTERM: 0.7
|
|
45
48
|
};
|
|
46
|
-
|
|
49
|
+
var StyledExerciseRunner = styled__default["default"].div.withConfig({
|
|
47
50
|
componentId: "sc-mp78g-0"
|
|
48
51
|
})(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";min-height:0;"], designTokens.base.color.navy8);
|
|
49
52
|
/**
|
|
50
53
|
*
|
|
51
54
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
exercisePreview
|
|
55
|
-
}) => {
|
|
55
|
+
var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
56
|
+
var exercisePreview = _ref.exercisePreview;
|
|
56
57
|
var _a, _b, _c;
|
|
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
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const handleAiHelpibotError = text => {
|
|
58
|
+
var intl = reactIntl.useIntl();
|
|
59
|
+
var _React$useContext = React__default["default"].useContext(context.ExerciseContext),
|
|
60
|
+
onCodeHelpRequest = _React$useContext.onCodeHelpRequest;
|
|
61
|
+
var _React$useContext2 = React__default["default"].useContext(context.ExerciseContext),
|
|
62
|
+
materialExerciseId = _React$useContext2.materialExerciseId,
|
|
63
|
+
exerciseRoomId = _React$useContext2.exerciseRoomId,
|
|
64
|
+
locale = _React$useContext2.locale,
|
|
65
|
+
onSubmit = _React$useContext2.onSubmit,
|
|
66
|
+
onError = _React$useContext2.onError;
|
|
67
|
+
var exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
|
|
68
|
+
var _useRecoilValue = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState),
|
|
69
|
+
editorPreferenceFontSize = _useRecoilValue.fontSize;
|
|
70
|
+
// runner states
|
|
71
|
+
var setRunnerSubmitting = recoil.useSetRecoilState(recoil$1.exerciseRunnerSubmittingState);
|
|
72
|
+
var setRunnerRunning = recoil.useSetRecoilState(recoil$1.exerciseRunnerRunningState);
|
|
73
|
+
var _useRecoilState = recoil.useRecoilState(recoil$1.exerciseRunnerRunTypeState),
|
|
74
|
+
_useRecoilState2 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState, 2),
|
|
75
|
+
runnerRunTypeState = _useRecoilState2[0],
|
|
76
|
+
setRunnerRunTypeState = _useRecoilState2[1];
|
|
77
|
+
var setExerciseRunnerRoomConnectionInfo = recoil.useSetRecoilState(recoil$1.exerciseRunnerRoomConnectionInfoState);
|
|
78
|
+
var setRunnerStdioFilesState = recoil.useSetRecoilState(recoil$1.exerciseRunnerStdioFilesState);
|
|
79
|
+
// preview states
|
|
80
|
+
var exercisePreviewType = recoil.useRecoilValue(recoil$1.exercisePreviewTypeState(materialExerciseId));
|
|
81
|
+
var exercisePreviewDisplayMode = recoil.useRecoilValue(recoil$1.exercisePreviewDisplayModeState);
|
|
82
|
+
// monaco editor value
|
|
83
|
+
var exerciseMonacoEditorApis = recoil.useRecoilValue(recoil$1.exerciseMonacoEditorApisState);
|
|
84
|
+
// websockets
|
|
85
|
+
var setRunnerRoomWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('runnerRoom'));
|
|
86
|
+
var setStdioWebSocketState = recoil.useSetRecoilState(recoil$1.exerciseWebsocketQuery('stdio'));
|
|
87
|
+
var handleAiHelpibotError = function handleAiHelpibotError(text) {
|
|
89
88
|
var _a, _b, _c;
|
|
90
|
-
|
|
91
|
-
const error = runner.getProgrammingErrorResult(text);
|
|
92
|
-
|
|
89
|
+
var error = runner.getProgrammingErrorResult(text);
|
|
93
90
|
if (!!error && typeof onCodeHelpRequest === 'function') {
|
|
94
91
|
onCodeHelpRequest({
|
|
95
92
|
code: error.errorCode,
|
|
@@ -100,36 +97,33 @@ const ExerciseRunner = ({
|
|
|
100
97
|
});
|
|
101
98
|
}
|
|
102
99
|
};
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
100
|
+
var _useStdioTextConcator = useStdioTextConcator.useStdioTextConcator(handleAiHelpibotError),
|
|
101
|
+
updateStdioTextConcator = _useStdioTextConcator.updateStdioTextConcator;
|
|
102
|
+
// etc
|
|
103
|
+
var exerciseContainerSize = recoil.useRecoilValue(recoil$1.exerciseContainerSizeState);
|
|
104
|
+
var _React$useState = React__default["default"].useState(null),
|
|
105
|
+
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
106
|
+
runnerSubmitErrorDialog = _React$useState2[0],
|
|
107
|
+
setRunnerSubmitErrorDialog = _React$useState2[1];
|
|
108
|
+
var arduinoTextBuffer = React__default["default"].useRef('');
|
|
109
|
+
var runnerRunTypeRef = React__default["default"].useRef(runnerRunTypeState);
|
|
110
|
+
var xterm = React__default["default"].useRef(null);
|
|
113
111
|
/**
|
|
114
112
|
* Handle text received from arduino serial output.
|
|
115
113
|
*/
|
|
116
|
-
|
|
117
|
-
const handleArduinoDigitalOutput = text => {
|
|
114
|
+
var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
|
|
118
115
|
var _a;
|
|
119
|
-
|
|
120
116
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const arduino = useArduino.useArduino({
|
|
117
|
+
};
|
|
118
|
+
// Arduino
|
|
119
|
+
var arduino = useArduino.useArduino({
|
|
125
120
|
writeTerminal: handleArduinoDigitalOutput
|
|
126
121
|
});
|
|
127
|
-
|
|
122
|
+
var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.Arduino;
|
|
128
123
|
/**
|
|
129
124
|
* Handle destroy arduino client.
|
|
130
125
|
*/
|
|
131
|
-
|
|
132
|
-
const handleArduinoDistroy = React__default["default"].useCallback(() => {
|
|
126
|
+
var handleArduinoDistroy = React__default["default"].useCallback(function () {
|
|
133
127
|
if (isArduinoExercise) {
|
|
134
128
|
arduino.destroy();
|
|
135
129
|
}
|
|
@@ -137,20 +131,16 @@ const ExerciseRunner = ({
|
|
|
137
131
|
/**
|
|
138
132
|
* Handle text received from stdio websocket.
|
|
139
133
|
*/
|
|
140
|
-
|
|
141
|
-
const handleWsStdioTextReceive = (type, text) => {
|
|
134
|
+
var handleWsStdioTextReceive = function handleWsStdioTextReceive(type, text) {
|
|
142
135
|
var _a, _b, _c;
|
|
143
|
-
|
|
144
136
|
switch (type) {
|
|
145
137
|
case 'text':
|
|
146
138
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a[runnerRunTypeRef.current !== types.enums.ExerciseRunType.Run ? 'writeEmphasized' : 'write'](text);
|
|
147
139
|
updateStdioTextConcator(text);
|
|
148
140
|
break;
|
|
149
|
-
|
|
150
141
|
case 'grader':
|
|
151
142
|
(_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write(text);
|
|
152
143
|
break;
|
|
153
|
-
|
|
154
144
|
case 'echo':
|
|
155
145
|
(_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(text);
|
|
156
146
|
break;
|
|
@@ -159,34 +149,29 @@ const ExerciseRunner = ({
|
|
|
159
149
|
/**
|
|
160
150
|
* Handle file received from stdio websocket.
|
|
161
151
|
*/
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const handleWsStdioFileReceive = stdioFile => {
|
|
152
|
+
var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
|
|
165
153
|
// arduino exercise
|
|
166
154
|
if (isArduinoExercise) {
|
|
167
155
|
if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
|
|
168
156
|
arduino.uploadHexFile(stdioFile);
|
|
169
157
|
}
|
|
170
|
-
|
|
171
158
|
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
159
|
+
}
|
|
160
|
+
// normal exercise
|
|
161
|
+
setRunnerStdioFilesState(function (prevFiles) {
|
|
162
|
+
return [].concat(_rollupPluginBabelHelpers.toConsumableArray(prevFiles), [stdioFile]);
|
|
163
|
+
});
|
|
176
164
|
};
|
|
177
165
|
/**
|
|
178
166
|
* Runner room websocket
|
|
179
167
|
*/
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
const wsRunnerRoom = useRunnerRoomWebSocket.useRunnerRoomWebSocket({
|
|
183
|
-
exerciseRoomId
|
|
168
|
+
var wsRunnerRoom = useRunnerRoomWebSocket.useRunnerRoomWebSocket({
|
|
169
|
+
exerciseRoomId: exerciseRoomId
|
|
184
170
|
});
|
|
185
171
|
/**
|
|
186
172
|
* Stdio websocket
|
|
187
173
|
*/
|
|
188
|
-
|
|
189
|
-
const wsStdio = useStdioWebSocket.useStdioWebSocket({
|
|
174
|
+
var wsStdio = useStdioWebSocket.useStdioWebSocket({
|
|
190
175
|
wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
|
|
191
176
|
roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
|
|
192
177
|
isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
|
|
@@ -196,10 +181,8 @@ const ExerciseRunner = ({
|
|
|
196
181
|
/**
|
|
197
182
|
* Handle submit code error.
|
|
198
183
|
*/
|
|
199
|
-
|
|
200
|
-
const handleRunnerSubmitError = err => {
|
|
184
|
+
var handleRunnerSubmitError = function handleRunnerSubmitError(err) {
|
|
201
185
|
var _a, _b;
|
|
202
|
-
|
|
203
186
|
switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
|
|
204
187
|
case 'room_type_mismatch':
|
|
205
188
|
case 'not_found_exercise_room':
|
|
@@ -214,10 +197,11 @@ const ExerciseRunner = ({
|
|
|
214
197
|
action: intl.formatMessage({
|
|
215
198
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
216
199
|
}),
|
|
217
|
-
onAction: ()
|
|
200
|
+
onAction: function onAction() {
|
|
201
|
+
return window.location.reload();
|
|
202
|
+
}
|
|
218
203
|
});
|
|
219
204
|
break;
|
|
220
|
-
|
|
221
205
|
case 'invalid_room_token':
|
|
222
206
|
setRunnerSubmitErrorDialog({
|
|
223
207
|
code: err.detail.failCode,
|
|
@@ -227,10 +211,11 @@ const ExerciseRunner = ({
|
|
|
227
211
|
action: intl.formatMessage({
|
|
228
212
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
229
213
|
}),
|
|
230
|
-
onAction: ()
|
|
214
|
+
onAction: function onAction() {
|
|
215
|
+
return window.location.reload();
|
|
216
|
+
}
|
|
231
217
|
});
|
|
232
218
|
break;
|
|
233
|
-
|
|
234
219
|
case 'not_for_submit_grade':
|
|
235
220
|
setRunnerSubmitErrorDialog({
|
|
236
221
|
code: err.detail.failCode,
|
|
@@ -242,7 +227,6 @@ const ExerciseRunner = ({
|
|
|
242
227
|
})
|
|
243
228
|
});
|
|
244
229
|
break;
|
|
245
|
-
|
|
246
230
|
case 'expired_exercise_image':
|
|
247
231
|
setRunnerSubmitErrorDialog({
|
|
248
232
|
code: err.detail.failCode,
|
|
@@ -252,10 +236,11 @@ const ExerciseRunner = ({
|
|
|
252
236
|
action: intl.formatMessage({
|
|
253
237
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
254
238
|
}),
|
|
255
|
-
onAction: ()
|
|
239
|
+
onAction: function onAction() {
|
|
240
|
+
return window.location.reload();
|
|
241
|
+
}
|
|
256
242
|
});
|
|
257
243
|
break;
|
|
258
|
-
|
|
259
244
|
case 'not_prepared_room_forwarder':
|
|
260
245
|
case 'try_again':
|
|
261
246
|
setRunnerSubmitErrorDialog({
|
|
@@ -268,7 +253,6 @@ const ExerciseRunner = ({
|
|
|
268
253
|
})
|
|
269
254
|
});
|
|
270
255
|
break;
|
|
271
|
-
|
|
272
256
|
case 'room_is_busy':
|
|
273
257
|
setRunnerSubmitErrorDialog({
|
|
274
258
|
code: err.detail.failCode,
|
|
@@ -280,7 +264,6 @@ const ExerciseRunner = ({
|
|
|
280
264
|
})
|
|
281
265
|
});
|
|
282
266
|
break;
|
|
283
|
-
|
|
284
267
|
case 'exceed_submit_grade_limit':
|
|
285
268
|
setRunnerSubmitErrorDialog({
|
|
286
269
|
code: err.detail.failCode,
|
|
@@ -292,7 +275,6 @@ const ExerciseRunner = ({
|
|
|
292
275
|
})
|
|
293
276
|
});
|
|
294
277
|
break;
|
|
295
|
-
|
|
296
278
|
default:
|
|
297
279
|
setRunnerSubmitErrorDialog({
|
|
298
280
|
code: ((_b = err === null || err === void 0 ? void 0 : err.detail) === null || _b === void 0 ? void 0 : _b.failCode) || 'unknown',
|
|
@@ -309,196 +291,217 @@ const ExerciseRunner = ({
|
|
|
309
291
|
/**
|
|
310
292
|
* Handle submit code to runner and run / grade.
|
|
311
293
|
*/
|
|
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
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
294
|
+
var handleRunnerSubmit = /*#__PURE__*/function () {
|
|
295
|
+
var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee(runType) {
|
|
296
|
+
var _a, _b, _c, readyExerciseImage, roomToken;
|
|
297
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
|
|
298
|
+
while (1) switch (_context.prev = _context.next) {
|
|
299
|
+
case 0:
|
|
300
|
+
readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
|
|
301
|
+
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
302
|
+
if (!(!readyExerciseImage || !roomToken)) {
|
|
303
|
+
_context.next = 4;
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
return _context.abrupt("return");
|
|
307
|
+
case 4:
|
|
308
|
+
setRunnerStdioFilesState([]);
|
|
309
|
+
setRunnerRunTypeState(runType);
|
|
310
|
+
setRunnerSubmitting(true);
|
|
311
|
+
return _context.abrupt("return", apiClient.postOrgMaterialExerciseExerciseRunningSubmit({
|
|
312
|
+
roomToken: roomToken,
|
|
313
|
+
runType: runType,
|
|
314
|
+
exerciseImageId: readyExerciseImage.id,
|
|
315
|
+
vncWidth: readyExerciseImage.isVnc ? Math.max((_b = readyExerciseImage.defaultVncWidth) !== null && _b !== void 0 ? _b : 0, 640) : undefined,
|
|
316
|
+
vncHeight: readyExerciseImage.isVnc ? Math.max((_c = readyExerciseImage.defaultVncHeight) !== null && _c !== void 0 ? _c : 0, 480) : undefined
|
|
317
|
+
}).then(function (res) {
|
|
318
|
+
if (typeof onSubmit === 'function') {
|
|
319
|
+
onSubmit(res);
|
|
320
|
+
}
|
|
321
|
+
}).catch(function (err) {
|
|
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
|
+
}();
|
|
346
338
|
/**
|
|
347
339
|
* Handle runner to cancel running.
|
|
348
340
|
*/
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
341
|
+
var handleRunnerCancel = /*#__PURE__*/function () {
|
|
342
|
+
var _ref3 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee2() {
|
|
343
|
+
var _a, roomToken;
|
|
344
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
345
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
346
|
+
case 0:
|
|
347
|
+
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
348
|
+
if (roomToken) {
|
|
349
|
+
void apiClient.postOrgMaterialExerciseExerciseRunningCancel({
|
|
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
|
+
}();
|
|
362
363
|
/**
|
|
363
364
|
* Handle runner to request code sync.
|
|
364
365
|
*/
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
const handleRunnerSyncRequest = () => {
|
|
366
|
+
var handleRunnerSyncRequest = function handleRunnerSyncRequest() {
|
|
368
367
|
wsStdio.sendSync();
|
|
369
368
|
};
|
|
370
369
|
/**
|
|
371
370
|
* Handle input requests for arduino.
|
|
372
371
|
*/
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
const handleXtermArduinoInputRequest = char => {
|
|
372
|
+
var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(char) {
|
|
376
373
|
var _a, _b, _c;
|
|
377
|
-
|
|
378
374
|
switch (char) {
|
|
379
375
|
// backspace
|
|
380
|
-
case
|
|
376
|
+
case "\x7F":
|
|
381
377
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
|
|
382
378
|
arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
|
|
383
379
|
break;
|
|
384
380
|
// enter
|
|
385
|
-
|
|
386
381
|
case '\r':
|
|
387
382
|
if (arduinoTextBuffer.current.length) {
|
|
388
383
|
(_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write('\r\n');
|
|
389
384
|
arduino.sendText(arduinoTextBuffer.current);
|
|
390
385
|
arduinoTextBuffer.current = '';
|
|
391
386
|
}
|
|
392
|
-
|
|
393
387
|
break;
|
|
394
388
|
// any char
|
|
395
|
-
|
|
396
389
|
default:
|
|
397
390
|
(_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
|
|
398
|
-
arduinoTextBuffer.current =
|
|
391
|
+
arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(char);
|
|
399
392
|
break;
|
|
400
393
|
}
|
|
401
394
|
};
|
|
402
395
|
/**
|
|
403
396
|
* Handle input requests.
|
|
404
397
|
*/
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const handleXtermInputRequest = text => {
|
|
398
|
+
var handleXtermInputRequest = function handleXtermInputRequest(text) {
|
|
408
399
|
if (isArduinoExercise) {
|
|
409
400
|
handleXtermArduinoInputRequest(text);
|
|
410
401
|
} else {
|
|
411
402
|
wsStdio.sendText(text);
|
|
412
403
|
}
|
|
413
|
-
};
|
|
404
|
+
};
|
|
405
|
+
//
|
|
414
406
|
// Initialize Arduino devices.
|
|
415
407
|
//
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
React__default["default"].useEffect(() => {
|
|
408
|
+
React__default["default"].useEffect(function () {
|
|
419
409
|
if (!isArduinoExercise) {
|
|
420
410
|
return;
|
|
421
411
|
}
|
|
422
|
-
|
|
423
412
|
void arduino.init();
|
|
424
|
-
return ()
|
|
413
|
+
return function () {
|
|
425
414
|
void arduino.destroy();
|
|
426
415
|
};
|
|
427
|
-
},
|
|
428
|
-
|
|
416
|
+
},
|
|
417
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
418
|
+
[exercise]);
|
|
419
|
+
//
|
|
429
420
|
// Destroy arduino client when unload window.
|
|
430
421
|
//
|
|
431
|
-
|
|
432
|
-
|
|
422
|
+
reactUse.useEvent('beforeunload', handleArduinoDistroy, window);
|
|
423
|
+
//
|
|
433
424
|
// Update runner room websocket state.
|
|
434
425
|
//
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
426
|
+
React__default["default"].useEffect(function () {
|
|
427
|
+
return setRunnerRoomWebSocketState(wsRunnerRoom.readyState);
|
|
428
|
+
},
|
|
429
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
430
|
+
[wsRunnerRoom.readyState]);
|
|
431
|
+
//
|
|
438
432
|
// Update stdio websocket state.
|
|
439
433
|
//
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
434
|
+
React__default["default"].useEffect(function () {
|
|
435
|
+
return setStdioWebSocketState(wsStdio.readyState);
|
|
436
|
+
},
|
|
437
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
438
|
+
[wsStdio.readyState]);
|
|
439
|
+
//
|
|
443
440
|
// Set runner submitting status to false,
|
|
444
441
|
// whenever runner room's running status is changed.
|
|
445
442
|
// (assume that sumbitting done when running status is changed)
|
|
446
443
|
//
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
444
|
+
React__default["default"].useEffect(function () {
|
|
445
|
+
return setRunnerSubmitting(false);
|
|
446
|
+
},
|
|
447
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
448
|
+
[wsRunnerRoom.isRunning]);
|
|
449
|
+
//
|
|
450
450
|
// Auto focus terminal when running.
|
|
451
451
|
//
|
|
452
|
-
|
|
453
|
-
React__default["default"].useEffect(() => {
|
|
452
|
+
React__default["default"].useEffect(function () {
|
|
454
453
|
if (wsRunnerRoom.isRunning) {
|
|
455
|
-
setTimeout(()
|
|
454
|
+
setTimeout(function () {
|
|
456
455
|
var _a;
|
|
457
|
-
|
|
458
456
|
return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
459
457
|
}, 100);
|
|
460
458
|
}
|
|
461
|
-
},
|
|
462
|
-
|
|
459
|
+
},
|
|
460
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
461
|
+
[wsRunnerRoom.isRunning]);
|
|
462
|
+
//
|
|
463
463
|
// Bind runner run type to ref.
|
|
464
464
|
//
|
|
465
|
-
|
|
466
|
-
React__default["default"].useEffect(() => {
|
|
465
|
+
React__default["default"].useEffect(function () {
|
|
467
466
|
runnerRunTypeRef.current = runnerRunTypeState;
|
|
468
|
-
}, [runnerRunTypeState]);
|
|
467
|
+
}, [runnerRunTypeState]);
|
|
468
|
+
//
|
|
469
469
|
// Update room connection info.
|
|
470
470
|
//
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
471
|
+
React__default["default"].useEffect(function () {
|
|
472
|
+
return setRunnerRunning(wsRunnerRoom.isRunning);
|
|
473
|
+
},
|
|
474
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
475
|
+
[wsRunnerRoom.isRunning]);
|
|
476
|
+
//
|
|
474
477
|
// Update room connection info.
|
|
475
478
|
//
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
+
React__default["default"].useEffect(function () {
|
|
480
|
+
return setExerciseRunnerRoomConnectionInfo(wsRunnerRoom.roomConnectionInfo);
|
|
481
|
+
},
|
|
482
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
483
|
+
[wsRunnerRoom.roomConnectionInfo]);
|
|
484
|
+
//
|
|
479
485
|
// handle send text request to runner stdio.
|
|
480
486
|
//
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
return () => {
|
|
487
|
+
React__default["default"].useEffect(function () {
|
|
488
|
+
var textSendSub = subjects.exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
|
|
489
|
+
return function () {
|
|
485
490
|
textSendSub.unsubscribe();
|
|
486
491
|
};
|
|
487
|
-
},
|
|
492
|
+
},
|
|
493
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
488
494
|
[]);
|
|
489
495
|
/**
|
|
490
496
|
* Preview.
|
|
491
497
|
*/
|
|
492
|
-
|
|
493
|
-
const renderPreview = () => {
|
|
498
|
+
var renderPreview = function renderPreview() {
|
|
494
499
|
if (exercisePreviewType === recoilTypes.ExercisePreviewType.None) {
|
|
495
500
|
return null;
|
|
496
501
|
}
|
|
497
|
-
|
|
498
502
|
if (exercisePreviewDisplayMode !== recoilTypes.ExercisePreviewDisplayMode.Mini) {
|
|
499
503
|
return null;
|
|
500
504
|
}
|
|
501
|
-
|
|
502
505
|
return React__default["default"].createElement(blocks.ResizableNext, Object.assign({}, stylesheets.MATERIAL_RESIZABLE_COMMON_PROPS, {
|
|
503
506
|
children: exercisePreview,
|
|
504
507
|
initialWidth: exerciseContainerSize.width * EXERCISE_RUNNER_HORIZONTAL_RATIO.PREVIEW,
|
|
@@ -509,14 +512,14 @@ const ExerciseRunner = ({
|
|
|
509
512
|
/**
|
|
510
513
|
* Xterm
|
|
511
514
|
*/
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
const renderXterm = () => {
|
|
515
|
+
var renderXterm = function renderXterm() {
|
|
515
516
|
// show system message when...
|
|
516
|
-
|
|
517
|
-
|
|
517
|
+
var showSystemMessage =
|
|
518
|
+
// - run type is grade
|
|
519
|
+
runnerRunTypeState === types.enums.ExerciseRunType.Grade ||
|
|
520
|
+
// - not an arduino exercise
|
|
518
521
|
!isArduinoExercise;
|
|
519
|
-
return React__default["default"].createElement(XtermLazy, {
|
|
522
|
+
return React__default["default"].createElement(XtermLazy["default"], {
|
|
520
523
|
isRunning: wsRunnerRoom.isRunning,
|
|
521
524
|
fontSize: editorPreferenceFontSize,
|
|
522
525
|
suppressSystemMessage: !showSystemMessage,
|
|
@@ -529,42 +532,39 @@ const ExerciseRunner = ({
|
|
|
529
532
|
/**
|
|
530
533
|
* Runner submit error dialog.
|
|
531
534
|
*/
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
const renderRunnerSubmitErrorDialog = () => {
|
|
535
|
+
var renderRunnerSubmitErrorDialog = function renderRunnerSubmitErrorDialog() {
|
|
535
536
|
if (!runnerSubmitErrorDialog) {
|
|
536
537
|
return null;
|
|
537
538
|
}
|
|
538
|
-
|
|
539
539
|
return React__default["default"].createElement(blocks.Dialog, {
|
|
540
540
|
type: "error",
|
|
541
541
|
title: intl.formatMessage({
|
|
542
542
|
id: 'exerciseRunner.submitErrorDialog.title'
|
|
543
543
|
}),
|
|
544
|
-
body:
|
|
545
|
-
onHide: ()
|
|
544
|
+
body: "".concat(runnerSubmitErrorDialog.message, "\n(error code: ").concat(runnerSubmitErrorDialog.code, ")"),
|
|
545
|
+
onHide: function onHide() {
|
|
546
|
+
return setRunnerSubmitErrorDialog(null);
|
|
547
|
+
}
|
|
546
548
|
}, React__default["default"].createElement(blocks.Dialog.ActionButton, {
|
|
547
549
|
children: runnerSubmitErrorDialog.action,
|
|
548
|
-
onClick: ()
|
|
550
|
+
onClick: function onClick() {
|
|
549
551
|
if (typeof runnerSubmitErrorDialog.onAction === 'function') {
|
|
550
552
|
runnerSubmitErrorDialog.onAction();
|
|
551
553
|
}
|
|
552
|
-
|
|
553
554
|
setRunnerSubmitErrorDialog(null);
|
|
554
555
|
}
|
|
555
556
|
}));
|
|
556
|
-
};
|
|
557
|
+
};
|
|
558
|
+
//
|
|
557
559
|
//
|
|
558
560
|
//
|
|
559
|
-
|
|
560
|
-
|
|
561
561
|
return React__default["default"].createElement(StyledExerciseRunner, null, React__default["default"].createElement(ExerciseRunnerContext.ExerciseRunnerContext.Provider, {
|
|
562
562
|
value: {
|
|
563
563
|
onSubmit: handleRunnerSubmit,
|
|
564
564
|
onCancel: handleRunnerCancel,
|
|
565
565
|
onSyncRequest: handleRunnerSyncRequest
|
|
566
566
|
}
|
|
567
|
-
}, React__default["default"].createElement(ExerciseRunnerController, null), React__default["default"].createElement(blocks.Flex, {
|
|
567
|
+
}, React__default["default"].createElement(ExerciseRunnerController["default"], null), React__default["default"].createElement(blocks.Flex, {
|
|
568
568
|
auto: true,
|
|
569
569
|
style: {
|
|
570
570
|
minHeight: 0
|
|
@@ -572,10 +572,9 @@ const ExerciseRunner = ({
|
|
|
572
572
|
overflow: "hidden"
|
|
573
573
|
}, renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog())));
|
|
574
574
|
};
|
|
575
|
-
|
|
576
575
|
var ExerciseRunner$1 = ExerciseIntlProvider.withExerciseIntlProvider(ExerciseRunner, {
|
|
577
|
-
en: en,
|
|
578
|
-
ko: ko
|
|
576
|
+
en: en["default"],
|
|
577
|
+
ko: ko["default"]
|
|
579
578
|
});
|
|
580
579
|
|
|
581
|
-
|
|
580
|
+
exports["default"] = ExerciseRunner$1;
|