@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
|
@@ -16,17 +16,15 @@ import ExerciseRunnerControllerRunningInfo from './ExerciseRunnerControllerRunni
|
|
|
16
16
|
import ExerciseRunnerControllerStatusMessage from './ExerciseRunnerControllerStatusMessage.js';
|
|
17
17
|
import ExerciseRunnerControllerTimer from './ExerciseRunnerControllerTimer.js';
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
var RUNNER_CONTROLLER_HEIGHT = 50;
|
|
20
|
+
var StyledController = styled.div.withConfig({
|
|
21
21
|
componentId: "sc-1fvokag-0"
|
|
22
22
|
})(["display:flex;justify-content:space-between;align-items:center;padding:0.5rem 1rem;height:", "px;border-bottom:", ";"], RUNNER_CONTROLLER_HEIGHT, MATERIAL_DIVIDER_BORDER_VALUE);
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const exercise = useRecoilValue(exerciseState(materialExerciseId));
|
|
29
|
-
const isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
|
|
23
|
+
var ExerciseRunnerController = function ExerciseRunnerController() {
|
|
24
|
+
var _React$useContext = React.useContext(ExerciseContext),
|
|
25
|
+
materialExerciseId = _React$useContext.materialExerciseId;
|
|
26
|
+
var exercise = useRecoilValue(exerciseState(materialExerciseId));
|
|
27
|
+
var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
|
|
30
28
|
return React.createElement(StyledController, null, React.createElement(Flex, {
|
|
31
29
|
align: "center"
|
|
32
30
|
}, React.createElement(ExerciseRunnerControllerButtonGroup, null), React.createElement(Hspace, {
|
package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { useIntl, FormattedMessage } from 'react-intl';
|
|
3
4
|
import { Modal, Text, Vspace, Flex, Button, Icon, Hspace } from '@elice/blocks';
|
|
@@ -10,33 +11,31 @@ import '../context/recoilTypes.js';
|
|
|
10
11
|
import '../context/subjects.js';
|
|
11
12
|
import '../context/ExerciseProvider.js';
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
14
|
+
var ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY = 'elice-material-exercise-arduino-agent-modal-closed';
|
|
15
|
+
var ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE = 'true';
|
|
16
|
+
var ARDUINO_AGENT_MAC_DOWNLOAD_URL = 'https://eli.so/arduino-agent-mac';
|
|
17
|
+
var ARDUINO_AGENT_WIN_DOWNLOAD_URL = 'https://eli.so/arduino-agent-win';
|
|
18
|
+
var ARDUINO_AGENT_MANUAL_URL = 'https://eli.so/arduino-faq';
|
|
19
|
+
var ExerciseRunnerControllerArduinoAgentModal = function ExerciseRunnerControllerArduinoAgentModal() {
|
|
20
|
+
var intl = useIntl();
|
|
21
|
+
var _useRecoilState = useRecoilState(exerciseArduinoAgentModalState),
|
|
22
|
+
_useRecoilState2 = _slicedToArray(_useRecoilState, 2),
|
|
23
|
+
open = _useRecoilState2[0],
|
|
24
|
+
setOpen = _useRecoilState2[1];
|
|
25
|
+
React.useEffect(function () {
|
|
26
|
+
var isConfirmed = localStorage.getItem(ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY) === ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE;
|
|
25
27
|
if (!isConfirmed) {
|
|
26
28
|
setOpen(true);
|
|
27
29
|
}
|
|
28
30
|
}, [setOpen]);
|
|
29
|
-
|
|
30
|
-
const handleClose = () => {
|
|
31
|
+
var handleClose = function handleClose() {
|
|
31
32
|
setOpen(false);
|
|
32
33
|
localStorage.setItem(ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_KEY, ELICE_MATERIAL_EXERCISE_ARDUINO_AGENT_MODAL_VALUE);
|
|
33
34
|
};
|
|
34
|
-
|
|
35
|
-
const handleDownload = fileUrl => {
|
|
35
|
+
var handleDownload = function handleDownload(fileUrl) {
|
|
36
36
|
FileSaver.saveAs(fileUrl);
|
|
37
37
|
};
|
|
38
|
-
|
|
39
|
-
const renderAgentInstallInstruction = () => {
|
|
38
|
+
var renderAgentInstallInstruction = function renderAgentInstallInstruction() {
|
|
40
39
|
return React.createElement(React.Fragment, null, React.createElement(Text, {
|
|
41
40
|
bold: true,
|
|
42
41
|
role: "gray0"
|
|
@@ -59,7 +58,9 @@ const ExerciseRunnerControllerArduinoAgentModal = () => {
|
|
|
59
58
|
size: "huge"
|
|
60
59
|
}),
|
|
61
60
|
iconAlign: "left",
|
|
62
|
-
onClick: ()
|
|
61
|
+
onClick: function onClick() {
|
|
62
|
+
return handleDownload(ARDUINO_AGENT_WIN_DOWNLOAD_URL);
|
|
63
|
+
}
|
|
63
64
|
}, React.createElement(FormattedMessage, {
|
|
64
65
|
id: "exerciseRunner.controller.arduino.agent.instruction.install.window"
|
|
65
66
|
})), React.createElement(Hspace, {
|
|
@@ -71,13 +72,14 @@ const ExerciseRunnerControllerArduinoAgentModal = () => {
|
|
|
71
72
|
icon: eisMac
|
|
72
73
|
}),
|
|
73
74
|
iconAlign: "left",
|
|
74
|
-
onClick: ()
|
|
75
|
+
onClick: function onClick() {
|
|
76
|
+
return handleDownload(ARDUINO_AGENT_MAC_DOWNLOAD_URL);
|
|
77
|
+
}
|
|
75
78
|
}, React.createElement(FormattedMessage, {
|
|
76
79
|
id: "exerciseRunner.controller.arduino.agent.instruction.install.mac"
|
|
77
80
|
}))));
|
|
78
81
|
};
|
|
79
|
-
|
|
80
|
-
const renderAgentConnectionInstruction = () => {
|
|
82
|
+
var renderAgentConnectionInstruction = function renderAgentConnectionInstruction() {
|
|
81
83
|
return React.createElement(React.Fragment, null, React.createElement(Text, {
|
|
82
84
|
role: "gray0",
|
|
83
85
|
bold: true
|
|
@@ -100,16 +102,16 @@ const ExerciseRunnerControllerArduinoAgentModal = () => {
|
|
|
100
102
|
iconAlign: "right",
|
|
101
103
|
size: "tiny",
|
|
102
104
|
role: "secondary",
|
|
103
|
-
onClick: ()
|
|
105
|
+
onClick: function onClick() {
|
|
106
|
+
return window.open(ARDUINO_AGENT_MANUAL_URL);
|
|
107
|
+
}
|
|
104
108
|
}, React.createElement(FormattedMessage, {
|
|
105
109
|
id: "exerciseRunner.controller.arduino.agent.instruction.connect.button"
|
|
106
110
|
})));
|
|
107
111
|
};
|
|
108
|
-
|
|
109
112
|
if (!open) {
|
|
110
113
|
return null;
|
|
111
114
|
}
|
|
112
|
-
|
|
113
115
|
return React.createElement(Modal, {
|
|
114
116
|
theme: "dark",
|
|
115
117
|
title: intl.formatMessage({
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React, { useState, useEffect } from 'react';
|
|
2
3
|
import { useIntl } from 'react-intl';
|
|
3
4
|
import { Flex, Text } from '@elice/blocks';
|
|
@@ -11,19 +12,24 @@ import '../context/subjects.js';
|
|
|
11
12
|
import '../context/ExerciseProvider.js';
|
|
12
13
|
import ExerciseRunnerControllerStatusIndicator from './ExerciseRunnerControllerStatusIndicator.js';
|
|
13
14
|
|
|
14
|
-
|
|
15
|
+
var StyledMessageWrapper = styled(Flex).withConfig({
|
|
15
16
|
componentId: "sc-19z7lun-0"
|
|
16
17
|
})(["height:1rem;"]);
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
var ExerciseRunnerControllerArduinoStatusMessage = function ExerciseRunnerControllerArduinoStatusMessage() {
|
|
19
|
+
var intl = useIntl();
|
|
20
|
+
var ports = useRecoilValue(exerciseArduinoPortsState);
|
|
21
|
+
var _useState = useState(''),
|
|
22
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
23
|
+
message = _useState2[0],
|
|
24
|
+
setMessage = _useState2[1];
|
|
25
|
+
var _useState3 = useState('error'),
|
|
26
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
27
|
+
status = _useState4[0],
|
|
28
|
+
setStatus = _useState4[1];
|
|
29
|
+
var arduinoOpenedPort = useRecoilValue(exerciseArduinoOpenedPortNameState);
|
|
30
|
+
var arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
|
|
31
|
+
var arduinoAgentConnectionStatus = useRecoilValue(exerciseArduinoAgentConnectionState);
|
|
32
|
+
useEffect(function () {
|
|
27
33
|
if (arduinoAgentConnectionStatus === 'disconnected') {
|
|
28
34
|
setStatus('error');
|
|
29
35
|
setMessage(intl.formatMessage({
|
|
@@ -31,7 +37,6 @@ const ExerciseRunnerControllerArduinoStatusMessage = () => {
|
|
|
31
37
|
}));
|
|
32
38
|
return;
|
|
33
39
|
}
|
|
34
|
-
|
|
35
40
|
if (arduinoAgentConnectionStatus === 'connecting') {
|
|
36
41
|
setStatus('warning');
|
|
37
42
|
setMessage(intl.formatMessage({
|
|
@@ -39,16 +44,14 @@ const ExerciseRunnerControllerArduinoStatusMessage = () => {
|
|
|
39
44
|
}));
|
|
40
45
|
return;
|
|
41
46
|
}
|
|
42
|
-
|
|
43
47
|
if (arduinoAgentConnectionStatus === 'reconnecting') {
|
|
44
48
|
setStatus('warning');
|
|
45
49
|
setMessage(intl.formatMessage({
|
|
46
50
|
id: 'exerciseRunner.controller.arduino.connectionStatus.reconnecting'
|
|
47
51
|
}));
|
|
48
52
|
return;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
|
|
53
|
+
}
|
|
54
|
+
// Arduino agent is connected.
|
|
52
55
|
if (arduinoOpenedPort === '' && arduinoUploadProgress === 'ready') {
|
|
53
56
|
setStatus('error');
|
|
54
57
|
setMessage(intl.formatMessage({
|
|
@@ -56,9 +59,7 @@ const ExerciseRunnerControllerArduinoStatusMessage = () => {
|
|
|
56
59
|
}));
|
|
57
60
|
return;
|
|
58
61
|
}
|
|
59
|
-
|
|
60
62
|
setStatus('success');
|
|
61
|
-
|
|
62
63
|
switch (arduinoUploadProgress) {
|
|
63
64
|
case 'receivedHex':
|
|
64
65
|
case 'starting':
|
|
@@ -67,13 +68,11 @@ const ExerciseRunnerControllerArduinoStatusMessage = () => {
|
|
|
67
68
|
id: 'exerciseRunner.controller.arduino.connectionStatus.uploading'
|
|
68
69
|
}));
|
|
69
70
|
return;
|
|
70
|
-
|
|
71
71
|
case 'ready':
|
|
72
72
|
case 'error':
|
|
73
73
|
case 'done':
|
|
74
74
|
default:
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
var device = getPortFromName(ports, arduinoOpenedPort);
|
|
77
76
|
if (device) {
|
|
78
77
|
setMessage(intl.formatMessage({
|
|
79
78
|
id: 'exerciseRunner.controller.arduino.connectionStatus.connectedDevice'
|
|
@@ -85,13 +84,12 @@ const ExerciseRunnerControllerArduinoStatusMessage = () => {
|
|
|
85
84
|
id: 'exerciseRunner.controller.arduino.connectionStatus.connected'
|
|
86
85
|
}));
|
|
87
86
|
}
|
|
88
|
-
|
|
89
87
|
return;
|
|
90
88
|
}
|
|
91
|
-
}, [intl, arduinoOpenedPort, arduinoUploadProgress, arduinoAgentConnectionStatus, ports]);
|
|
89
|
+
}, [intl, arduinoOpenedPort, arduinoUploadProgress, arduinoAgentConnectionStatus, ports]);
|
|
90
|
+
//
|
|
92
91
|
//
|
|
93
92
|
//
|
|
94
|
-
|
|
95
93
|
return React.createElement(StyledMessageWrapper, {
|
|
96
94
|
align: "center"
|
|
97
95
|
}, React.createElement(ExerciseRunnerControllerStatusIndicator, {
|
package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js
CHANGED
|
@@ -7,7 +7,7 @@ import { useRecoilValue } from 'recoil';
|
|
|
7
7
|
import styled from 'styled-components';
|
|
8
8
|
import 'react-use';
|
|
9
9
|
import 'socket.io-client';
|
|
10
|
-
import { exerciseRunnerWebSocketStatusQuery, exerciseFileEditorCursorSelectionValueState, exerciseState, exerciseRunnerRunTypeState, exerciseLectureState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseArduinoUploadProgressState, exerciseArduinoOpenedPortNameState } from '../context/recoil.js';
|
|
10
|
+
import { exerciseRunnerWebSocketStatusQuery, exerciseFileEditorCursorSelectionValueState, exerciseState, exerciseRunnerRunTypeState, exerciseLectureState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseArduinoUploadProgressState, exerciseArduinoOpenedPortNameState, exerciseMonacoEditorApisState } from '../context/recoil.js';
|
|
11
11
|
import { ExerciseContext } from '../context/context.js';
|
|
12
12
|
import '../context/recoilTypes.js';
|
|
13
13
|
import { exerciseFileEditorSaveAction$ } from '../context/subjects.js';
|
|
@@ -24,72 +24,67 @@ import 'unicount';
|
|
|
24
24
|
import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
|
|
25
25
|
import ExerciseRunnerControllerCodeHelpRequestButton from './ExerciseRunnerControllerCodeHelpRequestButton.js';
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
var StyledControllerButton = styled(Button).withConfig({
|
|
28
28
|
componentId: "sc-d9xhed-0"
|
|
29
29
|
})(["position:relative;transition:none;"]);
|
|
30
|
-
|
|
30
|
+
var StyledControllerButtonWrap = styled.div.withConfig({
|
|
31
31
|
componentId: "sc-d9xhed-1"
|
|
32
32
|
})(["display:flex;"]);
|
|
33
|
-
|
|
33
|
+
var StyledControllerButtonGroup = styled.div.withConfig({
|
|
34
34
|
componentId: "sc-d9xhed-2"
|
|
35
35
|
})(["display:flex;flex-direction:row;align-items:center;> ", ",> ", "{margin-right:0.5rem;&:last-child{margin-right:0;}}"], StyledControllerButtonWrap, StyledControllerButton);
|
|
36
|
-
|
|
37
|
-
const ExerciseRunnerControllerButtonGroup = () => {
|
|
36
|
+
var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButtonGroup() {
|
|
38
37
|
var _a;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
38
|
+
var intl = useIntl();
|
|
39
|
+
var _React$useContext = React.useContext(ExerciseContext),
|
|
40
|
+
materialExerciseId = _React$useContext.materialExerciseId,
|
|
41
|
+
onCodeHelpRequest = _React$useContext.onCodeHelpRequest;
|
|
42
|
+
var _React$useContext2 = React.useContext(ExerciseRunnerContext),
|
|
43
|
+
onSubmit = _React$useContext2.onSubmit,
|
|
44
|
+
onSyncRequest = _React$useContext2.onSyncRequest,
|
|
45
|
+
onCancel = _React$useContext2.onCancel;
|
|
46
|
+
var runnerWebsocketStatus = useRecoilValue(exerciseRunnerWebSocketStatusQuery);
|
|
47
|
+
var editorCursorSelectionValue = useRecoilValue(exerciseFileEditorCursorSelectionValueState);
|
|
48
|
+
var exercise = useRecoilValue(exerciseState(materialExerciseId));
|
|
49
|
+
var exerciseRunType = useRecoilValue(exerciseRunnerRunTypeState);
|
|
50
|
+
var exerciseWithNoGrade = Boolean(exercise === null || exercise === void 0 ? void 0 : exercise.isNoSubmitGrade);
|
|
51
|
+
var lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
|
|
52
|
+
var isTestLecture = (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === enums.LectureType.Test;
|
|
53
|
+
var isTestLectureCompleted = (lecture === null || lecture === void 0 ? void 0 : lecture.testAdmissionStatus) === enums.TestAdmissionStatus.Completed;
|
|
54
|
+
// runner states
|
|
55
|
+
var isSubmitting = useRecoilValue(exerciseRunnerSubmittingState);
|
|
56
|
+
var isRunning = useRecoilValue(exerciseRunnerRunningState);
|
|
57
|
+
var isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
|
|
58
|
+
var isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
|
|
59
|
+
// arduino
|
|
60
|
+
var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
|
|
61
|
+
var arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
|
|
62
|
+
var arduinoOpenedPortName = useRecoilValue(exerciseArduinoOpenedPortNameState);
|
|
63
|
+
// monaco editor apis
|
|
64
|
+
var exerciseMonacoEditorApis = useRecoilValue(exerciseMonacoEditorApisState);
|
|
65
|
+
//
|
|
67
66
|
// ========= ui states =========
|
|
68
67
|
//
|
|
69
68
|
// submit run
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
const isCodeHelpHidden = isRunning || isTestLecture && !isTestLectureCompleted; //
|
|
69
|
+
var isSubmitRunHidden = isRunning;
|
|
70
|
+
var isSubmitRunArduinoDisabled = isArduinoExercise ? arduinoUploadProgress !== 'ready' && arduinoUploadProgress !== 'error' || !arduinoOpenedPortName : false;
|
|
71
|
+
var isSubmitRunDisabled = isSubmitRunHidden || isSubmitRunArduinoDisabled || isNotReady || isConnecting || isSubmitting;
|
|
72
|
+
// submit grade
|
|
73
|
+
var isSubmitGradeHidden = isRunning;
|
|
74
|
+
var isSubmitGradeDisabled = isSubmitGradeHidden || exerciseWithNoGrade || isTestLecture && isTestLectureCompleted || isNotReady || isConnecting || isSubmitting;
|
|
75
|
+
// cancel
|
|
76
|
+
var isCancelHidden = !isRunning;
|
|
77
|
+
var isCancelDisabled = isCancelHidden || isNotReady || isConnecting;
|
|
78
|
+
// sync request
|
|
79
|
+
var isSyncRequestHidden = !isRunning || !((_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.httpPort);
|
|
80
|
+
var isSyncRequestDisabled = isSyncRequestHidden || isNotReady || isConnecting;
|
|
81
|
+
//
|
|
85
82
|
//
|
|
86
83
|
//
|
|
87
|
-
|
|
88
84
|
/**
|
|
89
85
|
* Submit to run
|
|
90
86
|
*/
|
|
91
|
-
|
|
92
|
-
const handleSubmitRun = () => {
|
|
87
|
+
var handleSubmitRun = function handleSubmitRun() {
|
|
93
88
|
if (!isSubmitRunDisabled) {
|
|
94
89
|
void onSubmit(enums.ExerciseRunType.Run);
|
|
95
90
|
}
|
|
@@ -97,9 +92,7 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
97
92
|
/**
|
|
98
93
|
* Submit to grade
|
|
99
94
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const handleSubmitGrade = () => {
|
|
95
|
+
var handleSubmitGrade = function handleSubmitGrade() {
|
|
103
96
|
if (!isSubmitGradeDisabled) {
|
|
104
97
|
void onSubmit(enums.ExerciseRunType.Grade);
|
|
105
98
|
}
|
|
@@ -107,9 +100,7 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
107
100
|
/**
|
|
108
101
|
* Cancel
|
|
109
102
|
*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
const handleCancel = () => {
|
|
103
|
+
var handleCancel = function handleCancel() {
|
|
113
104
|
if (!isCancelDisabled) {
|
|
114
105
|
onCancel();
|
|
115
106
|
}
|
|
@@ -117,40 +108,36 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
117
108
|
/**
|
|
118
109
|
* Sync request
|
|
119
110
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const handleSyncRequest = () => {
|
|
111
|
+
var handleSyncRequest = function handleSyncRequest() {
|
|
123
112
|
if (!isSyncRequestDisabled) {
|
|
124
113
|
onSyncRequest();
|
|
125
114
|
}
|
|
126
|
-
};
|
|
115
|
+
};
|
|
116
|
+
//
|
|
127
117
|
// keyboard shortcuts to control runner
|
|
128
118
|
//
|
|
129
|
-
|
|
130
|
-
|
|
131
119
|
useExericseShortcut('RUNNER_SUBMIT_RUN', handleSubmitRun);
|
|
132
120
|
useExericseShortcut('RUNNER_SUBMIT_GRADE', handleSubmitGrade);
|
|
133
121
|
useExericseShortcut('RUNNER_CANCEL', handleCancel);
|
|
134
|
-
useExericseShortcut('RUNNER_SYNC_REQUEST', handleSyncRequest);
|
|
122
|
+
useExericseShortcut('RUNNER_SYNC_REQUEST', handleSyncRequest);
|
|
123
|
+
//
|
|
135
124
|
// handle save action emitted by file editor
|
|
136
125
|
//
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return () => {
|
|
126
|
+
React.useEffect(function () {
|
|
127
|
+
var saveActionSub = exerciseFileEditorSaveAction$.subscribe(handleSyncRequest);
|
|
128
|
+
return function () {
|
|
141
129
|
saveActionSub.unsubscribe();
|
|
142
130
|
};
|
|
143
|
-
},
|
|
131
|
+
},
|
|
132
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
144
133
|
[isSyncRequestDisabled]);
|
|
145
134
|
/**
|
|
146
135
|
* Submit to run button
|
|
147
136
|
*/
|
|
148
|
-
|
|
149
|
-
const renderSubmitRunButton = () => {
|
|
137
|
+
var renderSubmitRunButton = function renderSubmitRunButton() {
|
|
150
138
|
if (isSubmitRunHidden) {
|
|
151
139
|
return null;
|
|
152
140
|
}
|
|
153
|
-
|
|
154
141
|
return React.createElement(StyledControllerButton, {
|
|
155
142
|
size: "tiny",
|
|
156
143
|
loading: isConnecting || isSubmitting && exerciseRunType === enums.ExerciseRunType.Run,
|
|
@@ -165,13 +152,10 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
165
152
|
/**
|
|
166
153
|
* Submit to grade button
|
|
167
154
|
*/
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
const renderSubmitGradeButton = () => {
|
|
155
|
+
var renderSubmitGradeButton = function renderSubmitGradeButton() {
|
|
171
156
|
if (isSubmitGradeHidden) {
|
|
172
157
|
return null;
|
|
173
158
|
}
|
|
174
|
-
|
|
175
159
|
return React.createElement(Tooltip, {
|
|
176
160
|
title: exerciseWithNoGrade ? intl.formatMessage({
|
|
177
161
|
id: 'exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit'
|
|
@@ -191,13 +175,10 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
191
175
|
/**
|
|
192
176
|
* Cancel button
|
|
193
177
|
*/
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
const renderCancelButton = () => {
|
|
178
|
+
var renderCancelButton = function renderCancelButton() {
|
|
197
179
|
if (isCancelHidden) {
|
|
198
180
|
return null;
|
|
199
181
|
}
|
|
200
|
-
|
|
201
182
|
return React.createElement(StyledControllerButton, {
|
|
202
183
|
size: "tiny",
|
|
203
184
|
role: "danger",
|
|
@@ -211,13 +192,10 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
211
192
|
/**
|
|
212
193
|
* Sync request button
|
|
213
194
|
*/
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const renderSyncRequestButton = () => {
|
|
195
|
+
var renderSyncRequestButton = function renderSyncRequestButton() {
|
|
217
196
|
if (isSyncRequestHidden) {
|
|
218
197
|
return null;
|
|
219
198
|
}
|
|
220
|
-
|
|
221
199
|
return React.createElement(StyledControllerButton, {
|
|
222
200
|
size: "tiny",
|
|
223
201
|
role: "secondary",
|
|
@@ -231,21 +209,25 @@ const ExerciseRunnerControllerButtonGroup = () => {
|
|
|
231
209
|
/**
|
|
232
210
|
* Code help button
|
|
233
211
|
*/
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
const renderCodeHelpRequestButton = () => {
|
|
237
|
-
if (isCodeHelpHidden || !editorCursorSelectionValue || typeof onCodeHelpRequest !== 'function') {
|
|
212
|
+
var renderCodeHelpRequestButton = function renderCodeHelpRequestButton() {
|
|
213
|
+
if (isRunning || !editorCursorSelectionValue || typeof onCodeHelpRequest !== 'function') {
|
|
238
214
|
return null;
|
|
239
215
|
}
|
|
240
|
-
|
|
241
216
|
return React.createElement(ExerciseRunnerControllerCodeHelpRequestButton, {
|
|
242
|
-
onClick: ()
|
|
217
|
+
onClick: function onClick() {
|
|
218
|
+
var _a, _b, _c;
|
|
219
|
+
onCodeHelpRequest({
|
|
220
|
+
code: editorCursorSelectionValue,
|
|
221
|
+
readme: (_a = exercise === null || exercise === void 0 ? void 0 : exercise.description) !== null && _a !== void 0 ? _a : '',
|
|
222
|
+
instruction: (_b = exercise === null || exercise === void 0 ? void 0 : exercise.instructionContent) !== null && _b !== void 0 ? _b : '',
|
|
223
|
+
openFileContent: (_c = exerciseMonacoEditorApis === null || exerciseMonacoEditorApis === void 0 ? void 0 : exerciseMonacoEditorApis.getValue()) !== null && _c !== void 0 ? _c : ''
|
|
224
|
+
});
|
|
225
|
+
}
|
|
243
226
|
});
|
|
244
|
-
};
|
|
227
|
+
};
|
|
228
|
+
//
|
|
245
229
|
//
|
|
246
230
|
//
|
|
247
|
-
|
|
248
|
-
|
|
249
231
|
return React.createElement(StyledControllerButtonGroup, null, renderSubmitRunButton(), renderSubmitGradeButton(), renderCancelButton(), renderSyncRequestButton(), renderCodeHelpRequestButton());
|
|
250
232
|
};
|
|
251
233
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React from 'react';
|
|
2
3
|
import { FormattedMessage } from 'react-intl';
|
|
3
4
|
import { getGlobalOrganizationGet } from '@elice/api-client';
|
|
@@ -6,50 +7,48 @@ import { eilMathsignMultiplyBasic, eilArrowRightwardsBasic } from '@elice/icons'
|
|
|
6
7
|
import { useMaterialConfig } from '@elice/material-shared-utils';
|
|
7
8
|
import styled from 'styled-components';
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY = 'elice-material-exercise-aibot-tooltip-hidden';
|
|
11
|
+
var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE = 'true';
|
|
12
|
+
var StyledControllerButton = styled(Button).withConfig({
|
|
12
13
|
componentId: "sc-10grd0k-0"
|
|
13
14
|
})(["position:relative;transition:none;"]);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
orgNameShort
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (props, ref) {
|
|
16
|
+
var _useMaterialConfig = useMaterialConfig(),
|
|
17
|
+
orgNameShort = _useMaterialConfig.orgNameShort;
|
|
18
|
+
var _React$useState = React.useState(false),
|
|
19
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
20
|
+
isTooltipHidden = _React$useState2[0],
|
|
21
|
+
setIsTooltipHidden = _React$useState2[1];
|
|
22
|
+
//
|
|
19
23
|
//
|
|
20
24
|
// Get ai info from organization and check all resovle below conditions.
|
|
21
25
|
// - isEnable is true.
|
|
22
26
|
// - quotaPerDay is upper than zero.
|
|
23
27
|
// - tooltip hidden is false.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
|
|
27
|
-
|
|
28
|
+
React.useEffect(function () {
|
|
29
|
+
var isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
|
|
28
30
|
if (isTooltipHidden) {
|
|
29
31
|
setIsTooltipHidden(true);
|
|
30
32
|
return;
|
|
31
33
|
}
|
|
32
|
-
|
|
33
34
|
getGlobalOrganizationGet({
|
|
34
35
|
organizationNameShort: orgNameShort
|
|
35
|
-
}).then(res
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} = res.organization;
|
|
39
|
-
const isHidden = !aibotInfo.isEnabled || aibotInfo.quotaPerDay <= 0;
|
|
36
|
+
}).then(function (res) {
|
|
37
|
+
var aibotInfo = res.organization.aibotInfo;
|
|
38
|
+
var isHidden = !aibotInfo.isEnabled || aibotInfo.quotaPerDay <= 0;
|
|
40
39
|
setIsTooltipHidden(isHidden);
|
|
41
|
-
}).catch(()
|
|
40
|
+
}).catch(function () {
|
|
42
41
|
setIsTooltipHidden(true);
|
|
43
|
-
});
|
|
44
|
-
|
|
42
|
+
});
|
|
43
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
44
|
+
}, []);
|
|
45
|
+
//
|
|
45
46
|
//
|
|
46
47
|
//
|
|
47
|
-
|
|
48
48
|
/**
|
|
49
49
|
*
|
|
50
50
|
*/
|
|
51
|
-
|
|
52
|
-
const renderAiBotTooltipTitle = () => {
|
|
51
|
+
var renderAiBotTooltipTitle = function renderAiBotTooltipTitle() {
|
|
53
52
|
return React.createElement(Flex, {
|
|
54
53
|
align: "center"
|
|
55
54
|
}, React.createElement(BadgeNext, {
|
|
@@ -74,13 +73,12 @@ const ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef((props, r
|
|
|
74
73
|
hasPadding: false,
|
|
75
74
|
border: false,
|
|
76
75
|
icon: eilMathsignMultiplyBasic,
|
|
77
|
-
onClick: ()
|
|
76
|
+
onClick: function onClick() {
|
|
78
77
|
sessionStorage.setItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY, ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE);
|
|
79
78
|
setIsTooltipHidden(true);
|
|
80
79
|
}
|
|
81
80
|
}));
|
|
82
81
|
};
|
|
83
|
-
|
|
84
82
|
return React.createElement(Tooltip, {
|
|
85
83
|
placement: "top",
|
|
86
84
|
dark: false,
|