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