@elice/material-exercise 1.230325.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.d.ts +2 -1
- package/cjs/components/material-exercise/context/recoil.js +562 -373
- 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/context/types.d.ts +8 -1
- 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 +228 -199
- 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 +224 -223
- 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 +79 -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.d.ts +2 -1
- package/es/components/material-exercise/context/recoil.js +563 -374
- 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/context/types.d.ts +8 -1
- 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 +222 -195
- 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 +218 -219
- 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 +76 -94
- 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,95 +42,88 @@ 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
|
-
|
|
89
|
-
var _a, _b;
|
|
90
|
-
|
|
91
|
-
const error = runner.getProgrammingErrorResult(text);
|
|
92
|
-
|
|
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) {
|
|
88
|
+
var _a, _b, _c;
|
|
89
|
+
var error = runner.getProgrammingErrorResult(text);
|
|
93
90
|
if (!!error && typeof onCodeHelpRequest === 'function') {
|
|
94
|
-
onCodeHelpRequest(
|
|
91
|
+
onCodeHelpRequest({
|
|
92
|
+
code: error.errorCode,
|
|
93
|
+
error: error,
|
|
95
94
|
readme: (_a = exercise === null || exercise === void 0 ? void 0 : exercise.description) !== null && _a !== void 0 ? _a : '',
|
|
96
95
|
instruction: (_b = exercise === null || exercise === void 0 ? void 0 : exercise.instructionContent) !== null && _b !== void 0 ? _b : '',
|
|
97
|
-
openFileContent:
|
|
96
|
+
openFileContent: (_c = exerciseMonacoEditorApis === null || exerciseMonacoEditorApis === void 0 ? void 0 : exerciseMonacoEditorApis.getValue()) !== null && _c !== void 0 ? _c : ''
|
|
98
97
|
});
|
|
99
98
|
}
|
|
100
99
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
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);
|
|
111
111
|
/**
|
|
112
112
|
* Handle text received from arduino serial output.
|
|
113
113
|
*/
|
|
114
|
-
|
|
115
|
-
const handleArduinoDigitalOutput = text => {
|
|
114
|
+
var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
|
|
116
115
|
var _a;
|
|
117
|
-
|
|
118
116
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const arduino = useArduino.useArduino({
|
|
117
|
+
};
|
|
118
|
+
// Arduino
|
|
119
|
+
var arduino = useArduino.useArduino({
|
|
123
120
|
writeTerminal: handleArduinoDigitalOutput
|
|
124
121
|
});
|
|
125
|
-
|
|
122
|
+
var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === types.enums.ExerciseEnvType.Arduino;
|
|
126
123
|
/**
|
|
127
124
|
* Handle destroy arduino client.
|
|
128
125
|
*/
|
|
129
|
-
|
|
130
|
-
const handleArduinoDistroy = React__default["default"].useCallback(() => {
|
|
126
|
+
var handleArduinoDistroy = React__default["default"].useCallback(function () {
|
|
131
127
|
if (isArduinoExercise) {
|
|
132
128
|
arduino.destroy();
|
|
133
129
|
}
|
|
@@ -135,20 +131,16 @@ const ExerciseRunner = ({
|
|
|
135
131
|
/**
|
|
136
132
|
* Handle text received from stdio websocket.
|
|
137
133
|
*/
|
|
138
|
-
|
|
139
|
-
const handleWsStdioTextReceive = (type, text) => {
|
|
134
|
+
var handleWsStdioTextReceive = function handleWsStdioTextReceive(type, text) {
|
|
140
135
|
var _a, _b, _c;
|
|
141
|
-
|
|
142
136
|
switch (type) {
|
|
143
137
|
case 'text':
|
|
144
138
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a[runnerRunTypeRef.current !== types.enums.ExerciseRunType.Run ? 'writeEmphasized' : 'write'](text);
|
|
145
139
|
updateStdioTextConcator(text);
|
|
146
140
|
break;
|
|
147
|
-
|
|
148
141
|
case 'grader':
|
|
149
142
|
(_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write(text);
|
|
150
143
|
break;
|
|
151
|
-
|
|
152
144
|
case 'echo':
|
|
153
145
|
(_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(text);
|
|
154
146
|
break;
|
|
@@ -157,34 +149,29 @@ const ExerciseRunner = ({
|
|
|
157
149
|
/**
|
|
158
150
|
* Handle file received from stdio websocket.
|
|
159
151
|
*/
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const handleWsStdioFileReceive = stdioFile => {
|
|
152
|
+
var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
|
|
163
153
|
// arduino exercise
|
|
164
154
|
if (isArduinoExercise) {
|
|
165
155
|
if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
|
|
166
156
|
arduino.uploadHexFile(stdioFile);
|
|
167
157
|
}
|
|
168
|
-
|
|
169
158
|
return;
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
159
|
+
}
|
|
160
|
+
// normal exercise
|
|
161
|
+
setRunnerStdioFilesState(function (prevFiles) {
|
|
162
|
+
return [].concat(_rollupPluginBabelHelpers.toConsumableArray(prevFiles), [stdioFile]);
|
|
163
|
+
});
|
|
174
164
|
};
|
|
175
165
|
/**
|
|
176
166
|
* Runner room websocket
|
|
177
167
|
*/
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const wsRunnerRoom = useRunnerRoomWebSocket.useRunnerRoomWebSocket({
|
|
181
|
-
exerciseRoomId
|
|
168
|
+
var wsRunnerRoom = useRunnerRoomWebSocket.useRunnerRoomWebSocket({
|
|
169
|
+
exerciseRoomId: exerciseRoomId
|
|
182
170
|
});
|
|
183
171
|
/**
|
|
184
172
|
* Stdio websocket
|
|
185
173
|
*/
|
|
186
|
-
|
|
187
|
-
const wsStdio = useStdioWebSocket.useStdioWebSocket({
|
|
174
|
+
var wsStdio = useStdioWebSocket.useStdioWebSocket({
|
|
188
175
|
wsUri: (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.wsUri,
|
|
189
176
|
roomToken: (_b = wsRunnerRoom.roomConnectionInfo) === null || _b === void 0 ? void 0 : _b.roomToken,
|
|
190
177
|
isTty: (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.isTty,
|
|
@@ -194,10 +181,8 @@ const ExerciseRunner = ({
|
|
|
194
181
|
/**
|
|
195
182
|
* Handle submit code error.
|
|
196
183
|
*/
|
|
197
|
-
|
|
198
|
-
const handleRunnerSubmitError = err => {
|
|
184
|
+
var handleRunnerSubmitError = function handleRunnerSubmitError(err) {
|
|
199
185
|
var _a, _b;
|
|
200
|
-
|
|
201
186
|
switch ((_a = err.detail) === null || _a === void 0 ? void 0 : _a.failCode) {
|
|
202
187
|
case 'room_type_mismatch':
|
|
203
188
|
case 'not_found_exercise_room':
|
|
@@ -212,10 +197,11 @@ const ExerciseRunner = ({
|
|
|
212
197
|
action: intl.formatMessage({
|
|
213
198
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
214
199
|
}),
|
|
215
|
-
onAction: ()
|
|
200
|
+
onAction: function onAction() {
|
|
201
|
+
return window.location.reload();
|
|
202
|
+
}
|
|
216
203
|
});
|
|
217
204
|
break;
|
|
218
|
-
|
|
219
205
|
case 'invalid_room_token':
|
|
220
206
|
setRunnerSubmitErrorDialog({
|
|
221
207
|
code: err.detail.failCode,
|
|
@@ -225,10 +211,11 @@ const ExerciseRunner = ({
|
|
|
225
211
|
action: intl.formatMessage({
|
|
226
212
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
227
213
|
}),
|
|
228
|
-
onAction: ()
|
|
214
|
+
onAction: function onAction() {
|
|
215
|
+
return window.location.reload();
|
|
216
|
+
}
|
|
229
217
|
});
|
|
230
218
|
break;
|
|
231
|
-
|
|
232
219
|
case 'not_for_submit_grade':
|
|
233
220
|
setRunnerSubmitErrorDialog({
|
|
234
221
|
code: err.detail.failCode,
|
|
@@ -240,7 +227,6 @@ const ExerciseRunner = ({
|
|
|
240
227
|
})
|
|
241
228
|
});
|
|
242
229
|
break;
|
|
243
|
-
|
|
244
230
|
case 'expired_exercise_image':
|
|
245
231
|
setRunnerSubmitErrorDialog({
|
|
246
232
|
code: err.detail.failCode,
|
|
@@ -250,10 +236,11 @@ const ExerciseRunner = ({
|
|
|
250
236
|
action: intl.formatMessage({
|
|
251
237
|
id: 'exerciseRunner.submitErrorDialog.action.reload'
|
|
252
238
|
}),
|
|
253
|
-
onAction: ()
|
|
239
|
+
onAction: function onAction() {
|
|
240
|
+
return window.location.reload();
|
|
241
|
+
}
|
|
254
242
|
});
|
|
255
243
|
break;
|
|
256
|
-
|
|
257
244
|
case 'not_prepared_room_forwarder':
|
|
258
245
|
case 'try_again':
|
|
259
246
|
setRunnerSubmitErrorDialog({
|
|
@@ -266,7 +253,6 @@ const ExerciseRunner = ({
|
|
|
266
253
|
})
|
|
267
254
|
});
|
|
268
255
|
break;
|
|
269
|
-
|
|
270
256
|
case 'room_is_busy':
|
|
271
257
|
setRunnerSubmitErrorDialog({
|
|
272
258
|
code: err.detail.failCode,
|
|
@@ -278,7 +264,6 @@ const ExerciseRunner = ({
|
|
|
278
264
|
})
|
|
279
265
|
});
|
|
280
266
|
break;
|
|
281
|
-
|
|
282
267
|
case 'exceed_submit_grade_limit':
|
|
283
268
|
setRunnerSubmitErrorDialog({
|
|
284
269
|
code: err.detail.failCode,
|
|
@@ -290,7 +275,6 @@ const ExerciseRunner = ({
|
|
|
290
275
|
})
|
|
291
276
|
});
|
|
292
277
|
break;
|
|
293
|
-
|
|
294
278
|
default:
|
|
295
279
|
setRunnerSubmitErrorDialog({
|
|
296
280
|
code: ((_b = err === null || err === void 0 ? void 0 : err.detail) === null || _b === void 0 ? void 0 : _b.failCode) || 'unknown',
|
|
@@ -307,196 +291,217 @@ const ExerciseRunner = ({
|
|
|
307
291
|
/**
|
|
308
292
|
* Handle submit code to runner and run / grade.
|
|
309
293
|
*/
|
|
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
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
+
}();
|
|
344
338
|
/**
|
|
345
339
|
* Handle runner to cancel running.
|
|
346
340
|
*/
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
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
|
+
}();
|
|
360
363
|
/**
|
|
361
364
|
* Handle runner to request code sync.
|
|
362
365
|
*/
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const handleRunnerSyncRequest = () => {
|
|
366
|
+
var handleRunnerSyncRequest = function handleRunnerSyncRequest() {
|
|
366
367
|
wsStdio.sendSync();
|
|
367
368
|
};
|
|
368
369
|
/**
|
|
369
370
|
* Handle input requests for arduino.
|
|
370
371
|
*/
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
const handleXtermArduinoInputRequest = char => {
|
|
372
|
+
var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(char) {
|
|
374
373
|
var _a, _b, _c;
|
|
375
|
-
|
|
376
374
|
switch (char) {
|
|
377
375
|
// backspace
|
|
378
|
-
case
|
|
376
|
+
case "\x7F":
|
|
379
377
|
(_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(' ');
|
|
380
378
|
arduinoTextBuffer.current = arduinoTextBuffer.current.slice(0, -1);
|
|
381
379
|
break;
|
|
382
380
|
// enter
|
|
383
|
-
|
|
384
381
|
case '\r':
|
|
385
382
|
if (arduinoTextBuffer.current.length) {
|
|
386
383
|
(_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write('\r\n');
|
|
387
384
|
arduino.sendText(arduinoTextBuffer.current);
|
|
388
385
|
arduinoTextBuffer.current = '';
|
|
389
386
|
}
|
|
390
|
-
|
|
391
387
|
break;
|
|
392
388
|
// any char
|
|
393
|
-
|
|
394
389
|
default:
|
|
395
390
|
(_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(char);
|
|
396
|
-
arduinoTextBuffer.current =
|
|
391
|
+
arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(char);
|
|
397
392
|
break;
|
|
398
393
|
}
|
|
399
394
|
};
|
|
400
395
|
/**
|
|
401
396
|
* Handle input requests.
|
|
402
397
|
*/
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
const handleXtermInputRequest = text => {
|
|
398
|
+
var handleXtermInputRequest = function handleXtermInputRequest(text) {
|
|
406
399
|
if (isArduinoExercise) {
|
|
407
400
|
handleXtermArduinoInputRequest(text);
|
|
408
401
|
} else {
|
|
409
402
|
wsStdio.sendText(text);
|
|
410
403
|
}
|
|
411
|
-
};
|
|
404
|
+
};
|
|
405
|
+
//
|
|
412
406
|
// Initialize Arduino devices.
|
|
413
407
|
//
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
React__default["default"].useEffect(() => {
|
|
408
|
+
React__default["default"].useEffect(function () {
|
|
417
409
|
if (!isArduinoExercise) {
|
|
418
410
|
return;
|
|
419
411
|
}
|
|
420
|
-
|
|
421
412
|
void arduino.init();
|
|
422
|
-
return ()
|
|
413
|
+
return function () {
|
|
423
414
|
void arduino.destroy();
|
|
424
415
|
};
|
|
425
|
-
},
|
|
426
|
-
|
|
416
|
+
},
|
|
417
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
418
|
+
[exercise]);
|
|
419
|
+
//
|
|
427
420
|
// Destroy arduino client when unload window.
|
|
428
421
|
//
|
|
429
|
-
|
|
430
|
-
|
|
422
|
+
reactUse.useEvent('beforeunload', handleArduinoDistroy, window);
|
|
423
|
+
//
|
|
431
424
|
// Update runner room websocket state.
|
|
432
425
|
//
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
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
|
+
//
|
|
436
432
|
// Update stdio websocket state.
|
|
437
433
|
//
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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
|
+
//
|
|
441
440
|
// Set runner submitting status to false,
|
|
442
441
|
// whenever runner room's running status is changed.
|
|
443
442
|
// (assume that sumbitting done when running status is changed)
|
|
444
443
|
//
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
444
|
+
React__default["default"].useEffect(function () {
|
|
445
|
+
return setRunnerSubmitting(false);
|
|
446
|
+
},
|
|
447
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
448
|
+
[wsRunnerRoom.isRunning]);
|
|
449
|
+
//
|
|
448
450
|
// Auto focus terminal when running.
|
|
449
451
|
//
|
|
450
|
-
|
|
451
|
-
React__default["default"].useEffect(() => {
|
|
452
|
+
React__default["default"].useEffect(function () {
|
|
452
453
|
if (wsRunnerRoom.isRunning) {
|
|
453
|
-
setTimeout(()
|
|
454
|
+
setTimeout(function () {
|
|
454
455
|
var _a;
|
|
455
|
-
|
|
456
456
|
return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
457
457
|
}, 100);
|
|
458
458
|
}
|
|
459
|
-
},
|
|
460
|
-
|
|
459
|
+
},
|
|
460
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
461
|
+
[wsRunnerRoom.isRunning]);
|
|
462
|
+
//
|
|
461
463
|
// Bind runner run type to ref.
|
|
462
464
|
//
|
|
463
|
-
|
|
464
|
-
React__default["default"].useEffect(() => {
|
|
465
|
+
React__default["default"].useEffect(function () {
|
|
465
466
|
runnerRunTypeRef.current = runnerRunTypeState;
|
|
466
|
-
}, [runnerRunTypeState]);
|
|
467
|
+
}, [runnerRunTypeState]);
|
|
468
|
+
//
|
|
467
469
|
// Update room connection info.
|
|
468
470
|
//
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
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
|
+
//
|
|
472
477
|
// Update room connection info.
|
|
473
478
|
//
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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
|
+
//
|
|
477
485
|
// handle send text request to runner stdio.
|
|
478
486
|
//
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
return () => {
|
|
487
|
+
React__default["default"].useEffect(function () {
|
|
488
|
+
var textSendSub = subjects.exerciseRunnerTextSend$.subscribe(wsStdio.sendText);
|
|
489
|
+
return function () {
|
|
483
490
|
textSendSub.unsubscribe();
|
|
484
491
|
};
|
|
485
|
-
},
|
|
492
|
+
},
|
|
493
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
486
494
|
[]);
|
|
487
495
|
/**
|
|
488
496
|
* Preview.
|
|
489
497
|
*/
|
|
490
|
-
|
|
491
|
-
const renderPreview = () => {
|
|
498
|
+
var renderPreview = function renderPreview() {
|
|
492
499
|
if (exercisePreviewType === recoilTypes.ExercisePreviewType.None) {
|
|
493
500
|
return null;
|
|
494
501
|
}
|
|
495
|
-
|
|
496
502
|
if (exercisePreviewDisplayMode !== recoilTypes.ExercisePreviewDisplayMode.Mini) {
|
|
497
503
|
return null;
|
|
498
504
|
}
|
|
499
|
-
|
|
500
505
|
return React__default["default"].createElement(blocks.ResizableNext, Object.assign({}, stylesheets.MATERIAL_RESIZABLE_COMMON_PROPS, {
|
|
501
506
|
children: exercisePreview,
|
|
502
507
|
initialWidth: exerciseContainerSize.width * EXERCISE_RUNNER_HORIZONTAL_RATIO.PREVIEW,
|
|
@@ -507,14 +512,14 @@ const ExerciseRunner = ({
|
|
|
507
512
|
/**
|
|
508
513
|
* Xterm
|
|
509
514
|
*/
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
const renderXterm = () => {
|
|
515
|
+
var renderXterm = function renderXterm() {
|
|
513
516
|
// show system message when...
|
|
514
|
-
|
|
515
|
-
|
|
517
|
+
var showSystemMessage =
|
|
518
|
+
// - run type is grade
|
|
519
|
+
runnerRunTypeState === types.enums.ExerciseRunType.Grade ||
|
|
520
|
+
// - not an arduino exercise
|
|
516
521
|
!isArduinoExercise;
|
|
517
|
-
return React__default["default"].createElement(XtermLazy, {
|
|
522
|
+
return React__default["default"].createElement(XtermLazy["default"], {
|
|
518
523
|
isRunning: wsRunnerRoom.isRunning,
|
|
519
524
|
fontSize: editorPreferenceFontSize,
|
|
520
525
|
suppressSystemMessage: !showSystemMessage,
|
|
@@ -527,42 +532,39 @@ const ExerciseRunner = ({
|
|
|
527
532
|
/**
|
|
528
533
|
* Runner submit error dialog.
|
|
529
534
|
*/
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
const renderRunnerSubmitErrorDialog = () => {
|
|
535
|
+
var renderRunnerSubmitErrorDialog = function renderRunnerSubmitErrorDialog() {
|
|
533
536
|
if (!runnerSubmitErrorDialog) {
|
|
534
537
|
return null;
|
|
535
538
|
}
|
|
536
|
-
|
|
537
539
|
return React__default["default"].createElement(blocks.Dialog, {
|
|
538
540
|
type: "error",
|
|
539
541
|
title: intl.formatMessage({
|
|
540
542
|
id: 'exerciseRunner.submitErrorDialog.title'
|
|
541
543
|
}),
|
|
542
|
-
body:
|
|
543
|
-
onHide: ()
|
|
544
|
+
body: "".concat(runnerSubmitErrorDialog.message, "\n(error code: ").concat(runnerSubmitErrorDialog.code, ")"),
|
|
545
|
+
onHide: function onHide() {
|
|
546
|
+
return setRunnerSubmitErrorDialog(null);
|
|
547
|
+
}
|
|
544
548
|
}, React__default["default"].createElement(blocks.Dialog.ActionButton, {
|
|
545
549
|
children: runnerSubmitErrorDialog.action,
|
|
546
|
-
onClick: ()
|
|
550
|
+
onClick: function onClick() {
|
|
547
551
|
if (typeof runnerSubmitErrorDialog.onAction === 'function') {
|
|
548
552
|
runnerSubmitErrorDialog.onAction();
|
|
549
553
|
}
|
|
550
|
-
|
|
551
554
|
setRunnerSubmitErrorDialog(null);
|
|
552
555
|
}
|
|
553
556
|
}));
|
|
554
|
-
};
|
|
557
|
+
};
|
|
558
|
+
//
|
|
555
559
|
//
|
|
556
560
|
//
|
|
557
|
-
|
|
558
|
-
|
|
559
561
|
return React__default["default"].createElement(StyledExerciseRunner, null, React__default["default"].createElement(ExerciseRunnerContext.ExerciseRunnerContext.Provider, {
|
|
560
562
|
value: {
|
|
561
563
|
onSubmit: handleRunnerSubmit,
|
|
562
564
|
onCancel: handleRunnerCancel,
|
|
563
565
|
onSyncRequest: handleRunnerSyncRequest
|
|
564
566
|
}
|
|
565
|
-
}, 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, {
|
|
566
568
|
auto: true,
|
|
567
569
|
style: {
|
|
568
570
|
minHeight: 0
|
|
@@ -570,10 +572,9 @@ const ExerciseRunner = ({
|
|
|
570
572
|
overflow: "hidden"
|
|
571
573
|
}, renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog())));
|
|
572
574
|
};
|
|
573
|
-
|
|
574
575
|
var ExerciseRunner$1 = ExerciseIntlProvider.withExerciseIntlProvider(ExerciseRunner, {
|
|
575
|
-
en: en,
|
|
576
|
-
ko: ko
|
|
576
|
+
en: en["default"],
|
|
577
|
+
ko: ko["default"]
|
|
577
578
|
});
|
|
578
579
|
|
|
579
|
-
|
|
580
|
+
exports["default"] = ExerciseRunner$1;
|