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