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