@elice/material-exercise 1.230328.0 → 1.230418.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/_virtual/_rollupPluginBabelHelpers.js +526 -0
- package/cjs/components/material-exercise/MaterialExercise.js +44 -63
- package/cjs/components/material-exercise/MaterialExercise.styled.js +20 -23
- package/cjs/components/material-exercise/MaterialExerciseMobile.js +19 -15
- package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
- package/cjs/components/material-exercise/context/ExerciseProvider.js +83 -81
- package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +16 -16
- package/cjs/components/material-exercise/context/context.js +1 -1
- package/cjs/components/material-exercise/context/locales/noImage.en.json.js +3 -1
- package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +3 -1
- package/cjs/components/material-exercise/context/recoil.js +559 -371
- package/cjs/components/material-exercise/context/recoilTypes.js +0 -5
- package/cjs/components/material-exercise/context/subjects.js +3 -6
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -65
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +7 -0
- package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +7 -0
- package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +20 -21
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +225 -198
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -10
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +35 -32
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +57 -48
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +6 -4
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +327 -231
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +6 -4
- package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +17 -17
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +13 -14
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +6 -6
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +47 -38
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +60 -42
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +29 -22
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +45 -56
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +28 -20
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +5 -3
- package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +30 -41
- package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +17 -12
- package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +24 -33
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +13 -8
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +84 -83
- package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +20 -12
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +239 -147
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +92 -63
- package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
- package/cjs/components/material-exercise/exercise-room/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +219 -220
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -13
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +30 -26
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +26 -26
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +70 -95
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +27 -27
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +54 -60
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +5 -5
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +10 -13
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +29 -26
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +290 -180
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -45
- package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +7 -0
- package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +7 -0
- package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +19 -17
- package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +5 -4
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +15 -14
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +7 -6
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +17 -16
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +18 -11
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -4
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -7
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
- package/cjs/components/shared/file-icon/FileIcon.js +23 -23
- package/cjs/components/shared/file-tabs/FileTab.js +32 -43
- package/cjs/components/shared/file-tabs/FileTab.styled.js +26 -22
- package/cjs/components/shared/file-tabs/FileTabs.js +55 -49
- package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/cjs/components/shared/file-tabs/util.js +29 -18
- package/cjs/components/shared/file-tree/FileTree.js +11 -11
- package/cjs/components/shared/file-tree/FileTreeConfig.js +24 -23
- package/cjs/components/shared/file-tree/FileTreeList.js +35 -41
- package/cjs/components/shared/file-tree/FileTreeListItemContent.js +75 -91
- package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +77 -101
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +51 -86
- package/cjs/components/shared/file-tree/FileTreeListItems.js +150 -153
- package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/cjs/components/shared/file-tree/FileTreeToolbar.js +30 -41
- package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/cjs/components/shared/file-tree/context/FileTreeContext.js +91 -97
- package/cjs/components/shared/file-tree/locales/en.json.js +3 -1
- package/cjs/components/shared/file-tree/locales/ko.json.js +3 -1
- package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
- package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
- package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -1
- package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/cjs/components/shared/file-tree/utils/fileTreePath.js +5 -7
- package/cjs/components/shared/file-viewer/FileViewer.js +59 -60
- package/cjs/components/shared/file-viewer/FileViewerCsv.js +145 -101
- package/cjs/components/shared/file-viewer/FileViewerImage.js +7 -8
- package/cjs/components/shared/file-viewer/FileViewerIpynb.js +20 -14
- package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +28 -34
- package/cjs/components/shared/file-viewer/FileViewerText.js +23 -16
- package/cjs/components/shared/file-viewer/locales/en.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/ko.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +3 -1
- package/cjs/components/shared/material-modal/MaterialModal.js +10 -12
- package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/cjs/components/shared/monaco-editor/MonacoEditor.js +123 -149
- package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +10 -8
- package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +49 -58
- package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +78 -85
- package/cjs/components/shared/monaco-editor/constants/grammars/index.js +131 -52
- package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
- package/cjs/components/shared/monaco-editor/constants/themes/index.js +80 -32
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
- package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +5 -8
- package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +3 -6
- package/cjs/components/shared/monaco-editor/editor-languages/index.js +3 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +18 -24
- package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
- package/cjs/components/shared/monaco-editor/locales/en.json.js +3 -1
- package/cjs/components/shared/monaco-editor/locales/ko.json.js +3 -1
- package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
- package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
- package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
- package/cjs/components/shared/monaco-editor/utils/grammar/index.js +70 -32
- package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
- package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
- package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
- package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -3
- package/cjs/components/shared/monaco-editor/utils/prettier/index.js +30 -9
- package/cjs/components/shared/monaco-editor/utils/theme/convert.js +20 -26
- package/cjs/components/shared/monaco-editor/utils/theme/index.js +22 -5
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +218 -329
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
- package/cjs/components/shared/no-vnc/NoVnc.js +93 -90
- package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -5
- package/cjs/components/shared/preview-container/PreviewContainer.js +7 -10
- package/cjs/components/shared/web-browser/WebBrowser.js +54 -59
- package/cjs/components/shared/xterm/Xterm.js +112 -105
- package/cjs/components/shared/xterm/XtermLazy.js +7 -5
- package/cjs/components/shared/xterm/locales/en.json.js +3 -1
- package/cjs/components/shared/xterm/locales/ko.json.js +3 -1
- package/cjs/constants/arduino.js +10 -10
- package/cjs/constants/shortcutKeyMap.js +5 -5
- package/cjs/constants/stylesheets.js +7 -10
- package/cjs/hooks/useArduino.js +327 -255
- package/cjs/hooks/useExerciseFile.js +24 -24
- package/cjs/hooks/useExericseShortcut.js +6 -5
- package/cjs/hooks/useMaterialExerciseFileUrl.js +54 -37
- package/cjs/hooks/useRunnerRoomWebSocket.js +58 -56
- package/cjs/hooks/useStdioTextConcator.js +18 -12
- package/cjs/hooks/useStdioWebSocket.js +41 -67
- package/cjs/hooks/useUsercodeEditWebSocket.js +230 -252
- package/cjs/hooks/useUsercodeHistory.js +121 -82
- package/cjs/index.js +4 -4
- package/cjs/utils/arduino.js +23 -25
- package/cjs/utils/exerciseFile.js +8 -16
- package/cjs/utils/runner.js +29 -25
- package/es/_virtual/_rollupPluginBabelHelpers.js +504 -0
- package/es/components/material-exercise/MaterialExercise.js +33 -54
- package/es/components/material-exercise/MaterialExercise.styled.js +20 -23
- package/es/components/material-exercise/MaterialExerciseMobile.js +15 -13
- package/es/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
- package/es/components/material-exercise/context/ExerciseProvider.js +79 -79
- package/es/components/material-exercise/context/ExerciseProviderNoImage.js +11 -13
- package/es/components/material-exercise/context/context.js +1 -1
- package/es/components/material-exercise/context/recoil.js +560 -372
- package/es/components/material-exercise/context/recoilTypes.js +0 -5
- package/es/components/material-exercise/context/subjects.js +3 -6
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +73 -62
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-code-history/locales/en.json.js +3 -0
- package/es/components/material-exercise/exercise-code-history/locales/ko.json.js +3 -0
- package/es/components/material-exercise/exercise-file/ExerciseFile.js +15 -18
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +218 -193
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -9
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +31 -28
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +52 -45
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +321 -225
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +12 -14
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -10
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -5
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +43 -36
- package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +53 -37
- package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +25 -20
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +41 -54
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +25 -19
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
- package/es/components/material-exercise/exercise-preview/ExercisePreview.js +21 -34
- package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +13 -10
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +17 -28
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +9 -6
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +81 -82
- package/es/components/material-exercise/exercise-room/ExerciseRoom.js +13 -7
- package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
- package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +236 -146
- package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +90 -63
- package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +212 -215
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +7 -9
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +27 -25
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +22 -24
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +66 -93
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +24 -26
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +51 -59
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -4
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +6 -11
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +26 -25
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +284 -174
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +38 -44
- package/es/components/material-exercise/exercise-submit-history/locales/en.json.js +3 -0
- package/es/components/material-exercise/exercise-submit-history/locales/ko.json.js +3 -0
- package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +16 -16
- package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -3
- package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -13
- package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -3
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -15
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +15 -10
- package/es/components/shared/exercise-version-list/ExerciseVersionList.js +2 -3
- package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +5 -6
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
- package/es/components/shared/file-icon/FileIcon.js +20 -22
- package/es/components/shared/file-tabs/FileTab.js +28 -41
- package/es/components/shared/file-tabs/FileTab.styled.js +26 -22
- package/es/components/shared/file-tabs/FileTabs.js +52 -48
- package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/es/components/shared/file-tabs/util.js +29 -18
- package/es/components/shared/file-tree/FileTree.js +3 -5
- package/es/components/shared/file-tree/FileTreeConfig.js +21 -22
- package/es/components/shared/file-tree/FileTreeList.js +31 -39
- package/es/components/shared/file-tree/FileTreeListItemContent.js +67 -85
- package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
- package/es/components/shared/file-tree/FileTreeListItemContentInput.js +74 -100
- package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +48 -85
- package/es/components/shared/file-tree/FileTreeListItems.js +147 -152
- package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/es/components/shared/file-tree/FileTreeToolbar.js +24 -37
- package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.js +91 -97
- package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
- package/es/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
- package/es/components/shared/file-tree/utils/fileTreeInput.js +0 -1
- package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/es/components/shared/file-tree/utils/fileTreePath.js +5 -7
- package/es/components/shared/file-viewer/FileViewer.js +52 -53
- package/es/components/shared/file-viewer/FileViewerCsv.js +141 -99
- package/es/components/shared/file-viewer/FileViewerImage.js +3 -6
- package/es/components/shared/file-viewer/FileViewerIpynb.js +16 -12
- package/es/components/shared/file-viewer/FileViewerNonViewable.js +22 -30
- package/es/components/shared/file-viewer/FileViewerText.js +18 -13
- package/es/components/shared/material-modal/MaterialModal.js +7 -11
- package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/es/components/shared/monaco-editor/MonacoEditor.js +119 -147
- package/es/components/shared/monaco-editor/MonacoEditorLazy.js +6 -4
- package/es/components/shared/monaco-editor/MonacoEditorMobile.js +45 -56
- package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +73 -82
- package/es/components/shared/monaco-editor/constants/grammars/index.js +131 -52
- package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
- package/es/components/shared/monaco-editor/constants/themes/index.js +80 -32
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
- package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/css/index.js +2 -5
- package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/html/index.js +2 -5
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -16
- package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
- package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
- package/es/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
- package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
- package/es/components/shared/monaco-editor/utils/grammar/index.js +67 -31
- package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
- package/es/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
- package/es/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
- package/es/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
- package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -3
- package/es/components/shared/monaco-editor/utils/prettier/index.js +27 -8
- package/es/components/shared/monaco-editor/utils/theme/convert.js +20 -26
- package/es/components/shared/monaco-editor/utils/theme/index.js +22 -5
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +219 -330
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
- package/es/components/shared/no-vnc/NoVnc.js +89 -88
- package/es/components/shared/no-vnc/NoVncLazy.js +4 -2
- package/es/components/shared/preview-container/PreviewContainer.js +7 -10
- package/es/components/shared/web-browser/WebBrowser.js +49 -56
- package/es/components/shared/xterm/Xterm.js +107 -102
- package/es/components/shared/xterm/XtermLazy.js +4 -2
- package/es/constants/arduino.js +10 -10
- package/es/constants/shortcutKeyMap.js +3 -5
- package/es/constants/stylesheets.js +7 -10
- package/es/hooks/useArduino.js +327 -255
- package/es/hooks/useExerciseFile.js +24 -24
- package/es/hooks/useExericseShortcut.js +6 -5
- package/es/hooks/useMaterialExerciseFileUrl.js +55 -38
- package/es/hooks/useRunnerRoomWebSocket.js +58 -56
- package/es/hooks/useStdioTextConcator.js +18 -12
- package/es/hooks/useStdioWebSocket.js +41 -67
- package/es/hooks/useUsercodeEditWebSocket.js +230 -252
- package/es/hooks/useUsercodeHistory.js +122 -83
- package/es/utils/arduino.js +23 -25
- package/es/utils/exerciseFile.js +8 -16
- package/es/utils/runner.js +29 -25
- package/package.json +8 -8
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { defineProperty as _defineProperty, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { postGlobalAccountPreferenceEdit, postOrgMaterialExerciseExerciseRoomUserFileAdd, getOrgMaterialExerciseGet, getOrgLecturePageResolve, getOrgMaterialExerciseExerciseRoomGet, getOrgUserGet, getGlobalAccountPreferenceGet, getOrgMaterialExerciseExerciseImageExerciseFileGet, getOrgMaterialExerciseExerciseRoomUserFileGet, getOrgLectureGet } from '@elice/api-client';
|
|
2
3
|
import { enums } from '@elice/types';
|
|
3
4
|
import { EliceWebSocket } from '@elice/websocket';
|
|
4
5
|
import { camelizeKeys } from 'humps';
|
|
@@ -13,196 +14,319 @@ import { ExercisePreviewType, ExercisePreviewDisplayMode } from './recoilTypes.j
|
|
|
13
14
|
|
|
14
15
|
//
|
|
15
16
|
//
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
//
|
|
18
|
+
var KEY_PREFIX = 'MaterialExercise/Exercise/Global';
|
|
19
|
+
//
|
|
18
20
|
// =============== entities ===============
|
|
19
21
|
//
|
|
20
|
-
|
|
21
22
|
/**
|
|
22
23
|
* Lecture.
|
|
23
24
|
*/
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
key: `${KEY_PREFIX}/Lecture`,
|
|
25
|
+
var exerciseLectureState = atomFamily({
|
|
26
|
+
key: "".concat(KEY_PREFIX, "/Lecture"),
|
|
27
27
|
default: null,
|
|
28
|
-
effects: lectureId
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
28
|
+
effects: function effects(lectureId) {
|
|
29
|
+
return [function (_ref) {
|
|
30
|
+
var setSelf = _ref.setSelf,
|
|
31
|
+
trigger = _ref.trigger,
|
|
32
|
+
onSet = _ref.onSet;
|
|
33
|
+
var get = /*#__PURE__*/function () {
|
|
34
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
35
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
36
|
+
while (1) switch (_context.prev = _context.next) {
|
|
37
|
+
case 0:
|
|
38
|
+
if (lectureId) {
|
|
39
|
+
_context.next = 3;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
setSelf(null);
|
|
43
|
+
return _context.abrupt("return");
|
|
44
|
+
case 3:
|
|
45
|
+
_context.t0 = setSelf;
|
|
46
|
+
_context.next = 6;
|
|
47
|
+
return getOrgLectureGet({
|
|
48
|
+
lectureId: lectureId
|
|
49
|
+
}).then(function (res) {
|
|
50
|
+
return res.lecture;
|
|
51
|
+
}).catch(function () {
|
|
52
|
+
return null;
|
|
53
|
+
});
|
|
54
|
+
case 6:
|
|
55
|
+
_context.t1 = _context.sent;
|
|
56
|
+
(0, _context.t0)(_context.t1);
|
|
57
|
+
case 8:
|
|
58
|
+
case "end":
|
|
59
|
+
return _context.stop();
|
|
60
|
+
}
|
|
61
|
+
}, _callee);
|
|
62
|
+
}));
|
|
63
|
+
return function get() {
|
|
64
|
+
return _ref2.apply(this, arguments);
|
|
65
|
+
};
|
|
66
|
+
}();
|
|
67
|
+
if (trigger === 'get') {
|
|
50
68
|
void get();
|
|
51
69
|
}
|
|
52
|
-
|
|
53
|
-
|
|
70
|
+
onSet(function (_prevValue, _newValue, isReset) {
|
|
71
|
+
if (isReset) {
|
|
72
|
+
void get();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}];
|
|
76
|
+
}
|
|
54
77
|
});
|
|
55
78
|
/**
|
|
56
79
|
* Material exercise.
|
|
57
80
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
key: `${KEY_PREFIX}/Exercise`,
|
|
81
|
+
var exerciseState = atomFamily({
|
|
82
|
+
key: "".concat(KEY_PREFIX, "/Exercise"),
|
|
61
83
|
default: null,
|
|
62
|
-
effects: materialExerciseId
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
effects: function effects(materialExerciseId) {
|
|
85
|
+
return [function (_ref3) {
|
|
86
|
+
var setSelf = _ref3.setSelf,
|
|
87
|
+
trigger = _ref3.trigger;
|
|
88
|
+
var get = /*#__PURE__*/function () {
|
|
89
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
90
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
91
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
_context2.t0 = setSelf;
|
|
94
|
+
_context2.next = 3;
|
|
95
|
+
return getOrgMaterialExerciseGet({
|
|
96
|
+
materialExerciseId: materialExerciseId
|
|
97
|
+
}).then(function (res) {
|
|
98
|
+
return res.materialExercise;
|
|
99
|
+
}).then(function (materialExercise) {
|
|
100
|
+
return Promise.all([materialExercise, getOrgLecturePageResolve({
|
|
101
|
+
materialId: materialExercise.id,
|
|
102
|
+
materialType: enums.LectureMaterialType.Exercise
|
|
103
|
+
}).then(function (res) {
|
|
104
|
+
return {
|
|
105
|
+
_courseId: res.courseId,
|
|
106
|
+
_lectureId: res.lectureId,
|
|
107
|
+
_lecturePageId: res.lecturePageId,
|
|
108
|
+
_orderNo: res.orderNo
|
|
109
|
+
};
|
|
110
|
+
}).catch(function (err) {
|
|
111
|
+
throw err;
|
|
112
|
+
})]);
|
|
113
|
+
}).then(function (_ref5) {
|
|
114
|
+
var _ref6 = _slicedToArray(_ref5, 2),
|
|
115
|
+
materialExercise = _ref6[0],
|
|
116
|
+
lecturePageResolve = _ref6[1];
|
|
117
|
+
return Object.assign(Object.assign({}, materialExercise), lecturePageResolve);
|
|
118
|
+
}).catch(function () {
|
|
119
|
+
return null;
|
|
120
|
+
});
|
|
121
|
+
case 3:
|
|
122
|
+
_context2.t1 = _context2.sent;
|
|
123
|
+
(0, _context2.t0)(_context2.t1);
|
|
124
|
+
case 5:
|
|
125
|
+
case "end":
|
|
126
|
+
return _context2.stop();
|
|
127
|
+
}
|
|
128
|
+
}, _callee2);
|
|
129
|
+
}));
|
|
130
|
+
return function get() {
|
|
131
|
+
return _ref4.apply(this, arguments);
|
|
132
|
+
};
|
|
133
|
+
}();
|
|
134
|
+
if (trigger === 'get') {
|
|
135
|
+
void get();
|
|
136
|
+
}
|
|
137
|
+
}];
|
|
138
|
+
}
|
|
86
139
|
});
|
|
87
140
|
/**
|
|
88
141
|
* Material exercise room.
|
|
89
142
|
*/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
key: `${KEY_PREFIX}/ExerciseRoom`,
|
|
143
|
+
var exerciseRoomState = atomFamily({
|
|
144
|
+
key: "".concat(KEY_PREFIX, "/ExerciseRoom"),
|
|
93
145
|
default: null,
|
|
94
|
-
effects: exerciseRoomId
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
146
|
+
effects: function effects(exerciseRoomId) {
|
|
147
|
+
return [function (_ref7) {
|
|
148
|
+
var setSelf = _ref7.setSelf,
|
|
149
|
+
trigger = _ref7.trigger;
|
|
150
|
+
var get = /*#__PURE__*/function () {
|
|
151
|
+
var _ref8 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
152
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
153
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
154
|
+
case 0:
|
|
155
|
+
if (exerciseRoomId) {
|
|
156
|
+
_context3.next = 2;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
return _context3.abrupt("return", null);
|
|
160
|
+
case 2:
|
|
161
|
+
_context3.t0 = setSelf;
|
|
162
|
+
_context3.next = 5;
|
|
163
|
+
return getOrgMaterialExerciseExerciseRoomGet({
|
|
164
|
+
exerciseRoomId: exerciseRoomId
|
|
165
|
+
}).then(function (res) {
|
|
166
|
+
return res.exerciseRoom;
|
|
167
|
+
}).catch(function () {
|
|
168
|
+
return null;
|
|
169
|
+
});
|
|
170
|
+
case 5:
|
|
171
|
+
_context3.t1 = _context3.sent;
|
|
172
|
+
(0, _context3.t0)(_context3.t1);
|
|
173
|
+
case 7:
|
|
174
|
+
case "end":
|
|
175
|
+
return _context3.stop();
|
|
176
|
+
}
|
|
177
|
+
}, _callee3);
|
|
178
|
+
}));
|
|
179
|
+
return function get() {
|
|
180
|
+
return _ref8.apply(this, arguments);
|
|
181
|
+
};
|
|
182
|
+
}();
|
|
183
|
+
if (trigger === 'get') {
|
|
184
|
+
void get();
|
|
101
185
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
exerciseRoomId
|
|
105
|
-
}).then(res => res.exerciseRoom).catch(() => null));
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
if (trigger === 'get') {
|
|
109
|
-
void get();
|
|
110
|
-
}
|
|
111
|
-
}]
|
|
186
|
+
}];
|
|
187
|
+
}
|
|
112
188
|
});
|
|
113
189
|
/**
|
|
114
190
|
* User.
|
|
115
191
|
*/
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
key: `${KEY_PREFIX}/User`,
|
|
192
|
+
var exerciseUserState = atom({
|
|
193
|
+
key: "".concat(KEY_PREFIX, "/User"),
|
|
119
194
|
default: null,
|
|
120
|
-
effects: [({
|
|
121
|
-
setSelf,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
195
|
+
effects: [function (_ref9) {
|
|
196
|
+
var setSelf = _ref9.setSelf,
|
|
197
|
+
trigger = _ref9.trigger;
|
|
198
|
+
var get = /*#__PURE__*/function () {
|
|
199
|
+
var _ref10 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
200
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
201
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
202
|
+
case 0:
|
|
203
|
+
_context4.t0 = setSelf;
|
|
204
|
+
_context4.next = 3;
|
|
205
|
+
return getOrgUserGet().then(function (res) {
|
|
206
|
+
return res.user;
|
|
207
|
+
}).catch(function () {
|
|
208
|
+
return null;
|
|
209
|
+
});
|
|
210
|
+
case 3:
|
|
211
|
+
_context4.t1 = _context4.sent;
|
|
212
|
+
(0, _context4.t0)(_context4.t1);
|
|
213
|
+
case 5:
|
|
214
|
+
case "end":
|
|
215
|
+
return _context4.stop();
|
|
216
|
+
}
|
|
217
|
+
}, _callee4);
|
|
218
|
+
}));
|
|
219
|
+
return function get() {
|
|
220
|
+
return _ref10.apply(this, arguments);
|
|
221
|
+
};
|
|
222
|
+
}();
|
|
128
223
|
if (trigger === 'get') {
|
|
129
224
|
void get();
|
|
130
225
|
}
|
|
131
226
|
}]
|
|
132
|
-
});
|
|
227
|
+
});
|
|
228
|
+
//
|
|
133
229
|
// =============== file tabs ===============
|
|
134
230
|
//
|
|
135
|
-
|
|
136
231
|
/**
|
|
137
232
|
*
|
|
138
233
|
*/
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
key: `${KEY_PREFIX}/FileTabs/Opened`,
|
|
234
|
+
var exerciseFileTabsOpenedState = atomFamily({
|
|
235
|
+
key: "".concat(KEY_PREFIX, "/FileTabs/Opened"),
|
|
142
236
|
default: selectorFamily({
|
|
143
|
-
key:
|
|
144
|
-
get: ({
|
|
145
|
-
materialExerciseId,
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
237
|
+
key: "".concat(KEY_PREFIX, "}/FileTabs/Opened/Default"),
|
|
238
|
+
get: function get(_ref11) {
|
|
239
|
+
var materialExerciseId = _ref11.materialExerciseId,
|
|
240
|
+
exerciseRoomId = _ref11.exerciseRoomId;
|
|
241
|
+
return /*#__PURE__*/function () {
|
|
242
|
+
var _ref13 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(_ref12) {
|
|
243
|
+
var get, _a, _b, _c, _d, exercise, mulLang, mulEnv, openFilelist;
|
|
244
|
+
return _regeneratorRuntime().wrap(function _callee5$(_context5) {
|
|
245
|
+
while (1) switch (_context5.prev = _context5.next) {
|
|
246
|
+
case 0:
|
|
247
|
+
get = _ref12.get;
|
|
248
|
+
exercise = get(exerciseState(materialExerciseId));
|
|
249
|
+
mulLang = get(exerciseMultilangLanguagesState(materialExerciseId));
|
|
250
|
+
mulEnv = get(exerciseMultilangEnvironmentState({
|
|
251
|
+
materialExerciseId: materialExerciseId,
|
|
252
|
+
exerciseRoomId: exerciseRoomId
|
|
253
|
+
}));
|
|
254
|
+
if (!((exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.MultiLanguage && mulLang && mulEnv)) {
|
|
255
|
+
_context5.next = 9;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
openFilelist = (_b = (_a = mulLang === null || mulLang === void 0 ? void 0 : mulLang[mulEnv === null || mulEnv === void 0 ? void 0 : mulEnv.language]) === null || _a === void 0 ? void 0 : _a.initialOpenFilelist) !== null && _b !== void 0 ? _b : [];
|
|
259
|
+
return _context5.abrupt("return", openFilelist);
|
|
260
|
+
case 9:
|
|
261
|
+
return _context5.abrupt("return", (_d = (_c = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _c === void 0 ? void 0 : _c.initialOpenFilelist) !== null && _d !== void 0 ? _d : []);
|
|
262
|
+
case 10:
|
|
263
|
+
case "end":
|
|
264
|
+
return _context5.stop();
|
|
265
|
+
}
|
|
266
|
+
}, _callee5);
|
|
267
|
+
}));
|
|
268
|
+
return function (_x) {
|
|
269
|
+
return _ref13.apply(this, arguments);
|
|
270
|
+
};
|
|
271
|
+
}();
|
|
165
272
|
}
|
|
166
273
|
})
|
|
167
|
-
});
|
|
274
|
+
});
|
|
275
|
+
//
|
|
168
276
|
// =============== file tree ===============
|
|
169
277
|
//
|
|
170
|
-
|
|
171
278
|
/**
|
|
172
279
|
*
|
|
173
280
|
*/
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
key: `${KEY_PREFIX}/FileTree/Opened`,
|
|
281
|
+
var exerciseFileTreeOpenedState = atom({
|
|
282
|
+
key: "".concat(KEY_PREFIX, "/FileTree/Opened"),
|
|
177
283
|
default: false
|
|
178
|
-
});
|
|
284
|
+
});
|
|
285
|
+
//
|
|
179
286
|
// =============== preference ===============
|
|
180
287
|
//
|
|
181
|
-
|
|
182
|
-
const EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO = 'material.exercise.editor.preference';
|
|
288
|
+
var EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO = 'material.exercise.editor.preference';
|
|
183
289
|
/**
|
|
184
290
|
* Editor preference.
|
|
185
291
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
key: `${KEY_PREFIX}/EditorPreference`,
|
|
292
|
+
var exerciseEditorPreferenceState = atom({
|
|
293
|
+
key: "".concat(KEY_PREFIX, "/EditorPreference"),
|
|
189
294
|
default: DEFAULT_MONACO_EDITOR_PREFERENCE,
|
|
190
|
-
effects: [({
|
|
191
|
-
setSelf,
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
295
|
+
effects: [function (_ref14) {
|
|
296
|
+
var setSelf = _ref14.setSelf,
|
|
297
|
+
trigger = _ref14.trigger,
|
|
298
|
+
onSet = _ref14.onSet;
|
|
299
|
+
var get = /*#__PURE__*/function () {
|
|
300
|
+
var _ref15 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {
|
|
301
|
+
return _regeneratorRuntime().wrap(function _callee6$(_context6) {
|
|
302
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
303
|
+
case 0:
|
|
304
|
+
_context6.t0 = setSelf;
|
|
305
|
+
_context6.next = 3;
|
|
306
|
+
return getGlobalAccountPreferenceGet({
|
|
307
|
+
pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO
|
|
308
|
+
}).then(function (res) {
|
|
309
|
+
return normalizeMonacoPreference(res.pvalue);
|
|
310
|
+
}).catch(function () {
|
|
311
|
+
return DEFAULT_MONACO_EDITOR_PREFERENCE;
|
|
312
|
+
});
|
|
313
|
+
case 3:
|
|
314
|
+
_context6.t1 = _context6.sent;
|
|
315
|
+
(0, _context6.t0)(_context6.t1);
|
|
316
|
+
case 5:
|
|
317
|
+
case "end":
|
|
318
|
+
return _context6.stop();
|
|
319
|
+
}
|
|
320
|
+
}, _callee6);
|
|
321
|
+
}));
|
|
322
|
+
return function get() {
|
|
323
|
+
return _ref15.apply(this, arguments);
|
|
324
|
+
};
|
|
325
|
+
}();
|
|
201
326
|
if (trigger === 'get') {
|
|
202
327
|
void get();
|
|
203
328
|
}
|
|
204
|
-
|
|
205
|
-
onSet((newPreference, prevPreference, isReset) => {
|
|
329
|
+
onSet(function (newPreference, prevPreference, isReset) {
|
|
206
330
|
if (!isEqual(newPreference, prevPreference) && !isReset) {
|
|
207
331
|
void postGlobalAccountPreferenceEdit({
|
|
208
332
|
pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_MONACO,
|
|
@@ -211,58 +335,73 @@ const exerciseEditorPreferenceState = atom({
|
|
|
211
335
|
}
|
|
212
336
|
});
|
|
213
337
|
}]
|
|
214
|
-
});
|
|
338
|
+
});
|
|
339
|
+
//
|
|
215
340
|
// =============== preview ===============
|
|
216
341
|
//
|
|
217
|
-
|
|
218
|
-
const EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE = 'material.exercise.preview.mode';
|
|
342
|
+
var EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE = 'material.exercise.preview.mode';
|
|
219
343
|
/**
|
|
220
344
|
*
|
|
221
345
|
*/
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
default:
|
|
239
|
-
return ExercisePreviewType.None;
|
|
240
|
-
}
|
|
346
|
+
var exercisePreviewTypeState = selectorFamily({
|
|
347
|
+
key: "".concat(KEY_PREFIX, "/Preview/Type"),
|
|
348
|
+
get: function get(materialExerciseId) {
|
|
349
|
+
return function (_ref16) {
|
|
350
|
+
var get = _ref16.get;
|
|
351
|
+
var exercise = get(exerciseState(materialExerciseId));
|
|
352
|
+
var readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
|
|
353
|
+
switch (true) {
|
|
354
|
+
case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.isVnc):
|
|
355
|
+
return ExercisePreviewType.NoVnc;
|
|
356
|
+
case Boolean(readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.httpPort):
|
|
357
|
+
return ExercisePreviewType.WebBrowser;
|
|
358
|
+
default:
|
|
359
|
+
return ExercisePreviewType.None;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
241
362
|
}
|
|
242
363
|
});
|
|
243
364
|
/**
|
|
244
365
|
*
|
|
245
366
|
*/
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
key: `${KEY_PREFIX}/Preview/DisplayMode`,
|
|
367
|
+
var exercisePreviewDisplayModeState = atom({
|
|
368
|
+
key: "".concat(KEY_PREFIX, "/Preview/DisplayMode"),
|
|
249
369
|
default: ExercisePreviewDisplayMode.Mini,
|
|
250
|
-
effects: [({
|
|
251
|
-
trigger,
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
370
|
+
effects: [function (_ref17) {
|
|
371
|
+
var trigger = _ref17.trigger,
|
|
372
|
+
setSelf = _ref17.setSelf,
|
|
373
|
+
onSet = _ref17.onSet;
|
|
374
|
+
var get = /*#__PURE__*/function () {
|
|
375
|
+
var _ref18 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {
|
|
376
|
+
return _regeneratorRuntime().wrap(function _callee7$(_context7) {
|
|
377
|
+
while (1) switch (_context7.prev = _context7.next) {
|
|
378
|
+
case 0:
|
|
379
|
+
_context7.t0 = setSelf;
|
|
380
|
+
_context7.next = 3;
|
|
381
|
+
return getGlobalAccountPreferenceGet({
|
|
382
|
+
pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE
|
|
383
|
+
}).then(function (res) {
|
|
384
|
+
return Number(res.pvalue) || ExercisePreviewDisplayMode.Mini;
|
|
385
|
+
}).catch(function () {
|
|
386
|
+
return ExercisePreviewDisplayMode.Mini;
|
|
387
|
+
});
|
|
388
|
+
case 3:
|
|
389
|
+
_context7.t1 = _context7.sent;
|
|
390
|
+
(0, _context7.t0)(_context7.t1);
|
|
391
|
+
case 5:
|
|
392
|
+
case "end":
|
|
393
|
+
return _context7.stop();
|
|
394
|
+
}
|
|
395
|
+
}, _callee7);
|
|
396
|
+
}));
|
|
397
|
+
return function get() {
|
|
398
|
+
return _ref18.apply(this, arguments);
|
|
399
|
+
};
|
|
400
|
+
}();
|
|
261
401
|
if (trigger === 'get') {
|
|
262
402
|
void get();
|
|
263
403
|
}
|
|
264
|
-
|
|
265
|
-
onSet((newDisplayMode, prevDisplayMode, isReset) => {
|
|
404
|
+
onSet(function (newDisplayMode, prevDisplayMode, isReset) {
|
|
266
405
|
if (!isEqual(newDisplayMode, prevDisplayMode) && !isReset) {
|
|
267
406
|
void postGlobalAccountPreferenceEdit({
|
|
268
407
|
pkey: EDITOR_ACCOUNT_PREFERENCE_PKEY_PREVIEW_MODE,
|
|
@@ -271,81 +410,77 @@ const exercisePreviewDisplayModeState = atom({
|
|
|
271
410
|
}
|
|
272
411
|
});
|
|
273
412
|
}]
|
|
274
|
-
});
|
|
413
|
+
});
|
|
414
|
+
//
|
|
275
415
|
// =============== runner ===============
|
|
276
416
|
//
|
|
277
|
-
|
|
278
417
|
/**
|
|
279
418
|
*
|
|
280
419
|
*/
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
key: `${KEY_PREFIX}/Runner/Submitting`,
|
|
420
|
+
var exerciseRunnerSubmittingState = atom({
|
|
421
|
+
key: "".concat(KEY_PREFIX, "/Runner/Submitting"),
|
|
284
422
|
default: false
|
|
285
423
|
});
|
|
286
424
|
/**
|
|
287
425
|
*
|
|
288
426
|
*/
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
key: `${KEY_PREFIX}/Runner/Running`,
|
|
427
|
+
var exerciseRunnerRunningState = atom({
|
|
428
|
+
key: "".concat(KEY_PREFIX, "/Runner/Running"),
|
|
292
429
|
default: false
|
|
293
430
|
});
|
|
294
431
|
/**
|
|
295
432
|
*
|
|
296
433
|
*/
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
key: `${KEY_PREFIX}/Runner/RunType`,
|
|
434
|
+
var exerciseRunnerRunTypeState = atom({
|
|
435
|
+
key: "".concat(KEY_PREFIX, "/Runner/RunType"),
|
|
300
436
|
default: null
|
|
301
437
|
});
|
|
302
438
|
/**
|
|
303
439
|
*
|
|
304
440
|
*/
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
key: `${KEY_PREFIX}/Runner/RoomConnectionInfoState`,
|
|
441
|
+
var exerciseRunnerRoomConnectionInfoState = atom({
|
|
442
|
+
key: "".concat(KEY_PREFIX, "/Runner/RoomConnectionInfoState"),
|
|
308
443
|
default: null
|
|
309
444
|
});
|
|
310
445
|
/**
|
|
311
446
|
*
|
|
312
447
|
*/
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
key: `${KEY_PREFIX}/Runner/StdioFiles`,
|
|
448
|
+
var exerciseRunnerStdioFilesState = atom({
|
|
449
|
+
key: "".concat(KEY_PREFIX, "/Runner/StdioFiles"),
|
|
316
450
|
default: []
|
|
317
451
|
});
|
|
318
452
|
/**
|
|
319
453
|
*
|
|
320
454
|
*/
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
const states = Object.freeze([get(exerciseWebsocketStates).runnerRoom, get(exerciseWebsocketStates).stdio]); // connecting
|
|
328
|
-
|
|
455
|
+
var exerciseRunnerWebSocketStatusQuery = selector({
|
|
456
|
+
key: "".concat(KEY_PREFIX, "/Runner/WebsocketState"),
|
|
457
|
+
get: function get(_ref19) {
|
|
458
|
+
var _get = _ref19.get;
|
|
459
|
+
var states = Object.freeze([_get(exerciseWebsocketStates).runnerRoom, _get(exerciseWebsocketStates).stdio]);
|
|
460
|
+
// connecting
|
|
329
461
|
if (states.includes(EliceWebSocket.CLOSED) || states.includes(EliceWebSocket.CONNECTING)) {
|
|
330
462
|
return EliceWebSocket.CONNECTING;
|
|
331
|
-
}
|
|
332
|
-
|
|
463
|
+
}
|
|
464
|
+
// connected
|
|
465
|
+
else if (states.every(function (state) {
|
|
466
|
+
return state === WebSocket.OPEN;
|
|
467
|
+
})) {
|
|
333
468
|
return EliceWebSocket.OPEN;
|
|
334
|
-
}
|
|
469
|
+
}
|
|
470
|
+
// reconnecting
|
|
335
471
|
else {
|
|
336
472
|
return EliceWebSocket.CONNECTING;
|
|
337
473
|
}
|
|
338
474
|
}
|
|
339
|
-
});
|
|
475
|
+
});
|
|
476
|
+
//
|
|
340
477
|
// =============== websocket ===============
|
|
341
478
|
//
|
|
342
|
-
|
|
343
479
|
/**
|
|
344
480
|
*
|
|
345
481
|
*/
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
key: `${KEY_PREFIX}/Websocket/States`,
|
|
482
|
+
var exerciseWebsocketStates = atom({
|
|
483
|
+
key: "".concat(KEY_PREFIX, "/Websocket/States"),
|
|
349
484
|
default: {
|
|
350
485
|
runnerRoom: EliceWebSocket.CLOSED,
|
|
351
486
|
stdio: EliceWebSocket.CLOSED,
|
|
@@ -355,158 +490,222 @@ const exerciseWebsocketStates = atom({
|
|
|
355
490
|
/**
|
|
356
491
|
*
|
|
357
492
|
*/
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
493
|
+
var exerciseWebsocketQuery = selectorFamily({
|
|
494
|
+
key: "".concat(KEY_PREFIX, "/Websocket/State"),
|
|
495
|
+
get: function get(key) {
|
|
496
|
+
return function (_ref20) {
|
|
497
|
+
var get = _ref20.get;
|
|
498
|
+
return get(exerciseWebsocketStates)[key];
|
|
499
|
+
};
|
|
365
500
|
},
|
|
366
|
-
set: key
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
}));
|
|
501
|
+
set: function set(key) {
|
|
502
|
+
return function (_ref21, newWebSocketState) {
|
|
503
|
+
var get = _ref21.get,
|
|
504
|
+
set = _ref21.set;
|
|
505
|
+
set(exerciseWebsocketStates, Object.assign(Object.assign({}, get(exerciseWebsocketStates)), _defineProperty({}, key, newWebSocketState)));
|
|
506
|
+
};
|
|
373
507
|
}
|
|
374
|
-
});
|
|
508
|
+
});
|
|
509
|
+
//
|
|
375
510
|
// =============== multi language ===============
|
|
376
511
|
//
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
const MULTILANG_LANGUAGES_FILENAME = '.languages.json';
|
|
512
|
+
var MULTILANG_ENVIRONMENT_FILENAME = '.environment.json';
|
|
513
|
+
var MULTILANG_LANGUAGES_FILENAME = '.languages.json';
|
|
380
514
|
/**
|
|
381
515
|
*
|
|
382
516
|
*/
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
key: `${KEY_PREFIX}/Multilang/Languages`,
|
|
517
|
+
var exerciseMultilangLanguagesState = atomFamily({
|
|
518
|
+
key: "".concat(KEY_PREFIX, "/Multilang/Languages"),
|
|
386
519
|
default: undefined,
|
|
387
|
-
effects: materialExerciseId
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
520
|
+
effects: function effects(materialExerciseId) {
|
|
521
|
+
return [function (_ref22) {
|
|
522
|
+
var getPromise = _ref22.getPromise,
|
|
523
|
+
trigger = _ref22.trigger,
|
|
524
|
+
setSelf = _ref22.setSelf,
|
|
525
|
+
onSet = _ref22.onSet;
|
|
526
|
+
var get = /*#__PURE__*/function () {
|
|
527
|
+
var _ref23 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {
|
|
528
|
+
var _a, _b, exercise;
|
|
529
|
+
return _regeneratorRuntime().wrap(function _callee8$(_context8) {
|
|
530
|
+
while (1) switch (_context8.prev = _context8.next) {
|
|
531
|
+
case 0:
|
|
532
|
+
if (materialExerciseId) {
|
|
533
|
+
_context8.next = 3;
|
|
534
|
+
break;
|
|
535
|
+
}
|
|
536
|
+
setSelf(undefined);
|
|
537
|
+
return _context8.abrupt("return");
|
|
538
|
+
case 3:
|
|
539
|
+
_context8.next = 5;
|
|
540
|
+
return getPromise(exerciseState(materialExerciseId));
|
|
541
|
+
case 5:
|
|
542
|
+
exercise = _context8.sent;
|
|
543
|
+
if (exercise) {
|
|
544
|
+
_context8.next = 9;
|
|
545
|
+
break;
|
|
546
|
+
}
|
|
547
|
+
setSelf(undefined);
|
|
548
|
+
return _context8.abrupt("return");
|
|
549
|
+
case 9:
|
|
550
|
+
_context8.t0 = setSelf;
|
|
551
|
+
_context8.next = 12;
|
|
552
|
+
return getOrgMaterialExerciseExerciseImageExerciseFileGet({
|
|
553
|
+
exerciseImageId: (_b = (_a = exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 0,
|
|
554
|
+
filename: MULTILANG_LANGUAGES_FILENAME
|
|
555
|
+
}).then(function (res) {
|
|
556
|
+
return res.exerciseFile.content;
|
|
557
|
+
}).then(function (content) {
|
|
558
|
+
return camelizeKeys(JSON.parse(content));
|
|
559
|
+
}).catch(function () {
|
|
560
|
+
return null;
|
|
561
|
+
});
|
|
562
|
+
case 12:
|
|
563
|
+
_context8.t1 = _context8.sent;
|
|
564
|
+
(0, _context8.t0)(_context8.t1);
|
|
565
|
+
case 14:
|
|
566
|
+
case "end":
|
|
567
|
+
return _context8.stop();
|
|
568
|
+
}
|
|
569
|
+
}, _callee8);
|
|
570
|
+
}));
|
|
571
|
+
return function get() {
|
|
572
|
+
return _ref23.apply(this, arguments);
|
|
573
|
+
};
|
|
574
|
+
}();
|
|
575
|
+
if (trigger === 'get') {
|
|
420
576
|
void get();
|
|
421
577
|
}
|
|
422
|
-
|
|
423
|
-
|
|
578
|
+
onSet(function (_prevValue, _newValue, isReset) {
|
|
579
|
+
if (isReset) {
|
|
580
|
+
void get();
|
|
581
|
+
}
|
|
582
|
+
});
|
|
583
|
+
}];
|
|
584
|
+
}
|
|
424
585
|
});
|
|
425
586
|
/**
|
|
426
587
|
*
|
|
427
588
|
*/
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
key: `${KEY_PREFIX}/Multilang/Environment`,
|
|
589
|
+
var exerciseMultilangEnvironmentState = atomFamily({
|
|
590
|
+
key: "".concat(KEY_PREFIX, "/Multilang/Environment"),
|
|
431
591
|
default: null,
|
|
432
|
-
effects: ({
|
|
433
|
-
materialExerciseId,
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
592
|
+
effects: function effects(_ref24) {
|
|
593
|
+
var materialExerciseId = _ref24.materialExerciseId,
|
|
594
|
+
exerciseRoomId = _ref24.exerciseRoomId;
|
|
595
|
+
return [function (_ref25) {
|
|
596
|
+
var trigger = _ref25.trigger,
|
|
597
|
+
getPromise = _ref25.getPromise,
|
|
598
|
+
setSelf = _ref25.setSelf,
|
|
599
|
+
onSet = _ref25.onSet;
|
|
600
|
+
var get = /*#__PURE__*/function () {
|
|
601
|
+
var _ref26 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {
|
|
602
|
+
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
603
|
+
while (1) switch (_context10.prev = _context10.next) {
|
|
604
|
+
case 0:
|
|
605
|
+
setSelf(getOrgMaterialExerciseExerciseRoomUserFileGet({
|
|
606
|
+
exerciseRoomId: exerciseRoomId,
|
|
607
|
+
filename: MULTILANG_ENVIRONMENT_FILENAME
|
|
608
|
+
}).then(function (res) {
|
|
609
|
+
return camelizeKeys(JSON.parse(res.userFile.content));
|
|
610
|
+
}).catch( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {
|
|
611
|
+
return _regeneratorRuntime().wrap(function _callee9$(_context9) {
|
|
612
|
+
while (1) switch (_context9.prev = _context9.next) {
|
|
613
|
+
case 0:
|
|
614
|
+
return _context9.abrupt("return", getPromise(exerciseMultilangLanguagesState(materialExerciseId)).then(function (languages) {
|
|
615
|
+
if (!languages) {
|
|
616
|
+
throw new Error('err_no_languages');
|
|
617
|
+
}
|
|
618
|
+
var language = Object.keys(languages)[0];
|
|
619
|
+
return {
|
|
620
|
+
language: language
|
|
621
|
+
};
|
|
622
|
+
}).catch(function () {
|
|
623
|
+
return null;
|
|
624
|
+
}));
|
|
625
|
+
case 1:
|
|
626
|
+
case "end":
|
|
627
|
+
return _context9.stop();
|
|
628
|
+
}
|
|
629
|
+
}, _callee9);
|
|
630
|
+
}))));
|
|
631
|
+
case 1:
|
|
632
|
+
case "end":
|
|
633
|
+
return _context10.stop();
|
|
634
|
+
}
|
|
635
|
+
}, _callee10);
|
|
636
|
+
}));
|
|
637
|
+
return function get() {
|
|
638
|
+
return _ref26.apply(this, arguments);
|
|
453
639
|
};
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
if (trigger === 'get') {
|
|
458
|
-
void get();
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
onSet((newEnvJson, _, isReset) => {
|
|
462
|
-
if (isReset) {
|
|
463
|
-
return;
|
|
640
|
+
}();
|
|
641
|
+
if (trigger === 'get') {
|
|
642
|
+
void get();
|
|
464
643
|
}
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
644
|
+
onSet(function (newEnvJson, _, isReset) {
|
|
645
|
+
if (isReset) {
|
|
646
|
+
return;
|
|
647
|
+
}
|
|
648
|
+
void postOrgMaterialExerciseExerciseRoomUserFileAdd({
|
|
649
|
+
exerciseRoomId: exerciseRoomId,
|
|
650
|
+
userFile: new File([JSON.stringify(newEnvJson)], MULTILANG_ENVIRONMENT_FILENAME, {
|
|
651
|
+
type: 'application/json'
|
|
652
|
+
}),
|
|
653
|
+
path: '',
|
|
654
|
+
overwrite: true
|
|
655
|
+
});
|
|
473
656
|
});
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
});
|
|
657
|
+
}];
|
|
658
|
+
}
|
|
659
|
+
});
|
|
660
|
+
//
|
|
477
661
|
// =============== arduino ===============
|
|
478
662
|
//
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
const DEFAULT_ARDUINO_PREFERENCE = {
|
|
663
|
+
var ARDUINO_ACCOUNT_PREFERENCE_KEY = 'material.exercise.arduino.preference';
|
|
664
|
+
var DEFAULT_ARDUINO_PREFERENCE = {
|
|
482
665
|
baudRate: 9600,
|
|
483
666
|
port: ''
|
|
484
667
|
};
|
|
485
668
|
/**
|
|
486
669
|
* Arduino preference.
|
|
487
670
|
*/
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
key: `${KEY_PREFIX}/Arduino/Preference`,
|
|
671
|
+
var exerciseArduinoPreferenceState = atom({
|
|
672
|
+
key: "".concat(KEY_PREFIX, "/Arduino/Preference"),
|
|
491
673
|
default: DEFAULT_ARDUINO_PREFERENCE,
|
|
492
|
-
effects: [({
|
|
493
|
-
trigger,
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
674
|
+
effects: [function (_ref28) {
|
|
675
|
+
var trigger = _ref28.trigger,
|
|
676
|
+
setSelf = _ref28.setSelf,
|
|
677
|
+
onSet = _ref28.onSet;
|
|
678
|
+
var get = /*#__PURE__*/function () {
|
|
679
|
+
var _ref29 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {
|
|
680
|
+
return _regeneratorRuntime().wrap(function _callee11$(_context11) {
|
|
681
|
+
while (1) switch (_context11.prev = _context11.next) {
|
|
682
|
+
case 0:
|
|
683
|
+
_context11.t0 = setSelf;
|
|
684
|
+
_context11.next = 3;
|
|
685
|
+
return getGlobalAccountPreferenceGet({
|
|
686
|
+
pkey: ARDUINO_ACCOUNT_PREFERENCE_KEY
|
|
687
|
+
}).then(function (res) {
|
|
688
|
+
return Object.assign(Object.assign({}, DEFAULT_ARDUINO_PREFERENCE), res.pvalue);
|
|
689
|
+
}).catch(function () {
|
|
690
|
+
return DEFAULT_ARDUINO_PREFERENCE;
|
|
691
|
+
});
|
|
692
|
+
case 3:
|
|
693
|
+
_context11.t1 = _context11.sent;
|
|
694
|
+
(0, _context11.t0)(_context11.t1);
|
|
695
|
+
case 5:
|
|
696
|
+
case "end":
|
|
697
|
+
return _context11.stop();
|
|
698
|
+
}
|
|
699
|
+
}, _callee11);
|
|
700
|
+
}));
|
|
701
|
+
return function get() {
|
|
702
|
+
return _ref29.apply(this, arguments);
|
|
703
|
+
};
|
|
704
|
+
}();
|
|
505
705
|
if (trigger === 'get') {
|
|
506
706
|
void get();
|
|
507
707
|
}
|
|
508
|
-
|
|
509
|
-
onSet((newPreference, prevPreference, isReset) => {
|
|
708
|
+
onSet(function (newPreference, prevPreference, isReset) {
|
|
510
709
|
if (!isEqual(newPreference, prevPreference) && !isReset) {
|
|
511
710
|
void postGlobalAccountPreferenceEdit({
|
|
512
711
|
pkey: ARDUINO_ACCOUNT_PREFERENCE_KEY,
|
|
@@ -519,77 +718,69 @@ const exerciseArduinoPreferenceState = atom({
|
|
|
519
718
|
/**
|
|
520
719
|
* Arduino ports.
|
|
521
720
|
*/
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
key: `${KEY_PREFIX}/Arduino/Ports`,
|
|
721
|
+
var exerciseArduinoPortsState = atom({
|
|
722
|
+
key: "".concat(KEY_PREFIX, "/Arduino/Ports"),
|
|
525
723
|
default: []
|
|
526
724
|
});
|
|
527
725
|
/**
|
|
528
726
|
* Opened arduino port.
|
|
529
727
|
*/
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
key: `${KEY_PREFIX}/Arduino/OpenedPortName`,
|
|
728
|
+
var exerciseArduinoOpenedPortNameState = atom({
|
|
729
|
+
key: "".concat(KEY_PREFIX, "/Arduino/OpenedPortName"),
|
|
533
730
|
default: null
|
|
534
731
|
});
|
|
535
732
|
/**
|
|
536
733
|
* Arduino port open handler.
|
|
537
734
|
*/
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
735
|
+
var exerciseArduinoOnSelectPortState = atom({
|
|
736
|
+
key: "".concat(KEY_PREFIX, "/Arduino/OnSelectPort"),
|
|
737
|
+
default: function _default(name) {
|
|
738
|
+
// do nothing.
|
|
542
739
|
}
|
|
543
740
|
});
|
|
544
741
|
/**
|
|
545
742
|
* Arduino agent connection status.
|
|
546
743
|
*/
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
key: `${KEY_PREFIX}/Arduino/AgentConnection`,
|
|
744
|
+
var exerciseArduinoAgentConnectionState = atom({
|
|
745
|
+
key: "".concat(KEY_PREFIX, "/Arduino/AgentConnection"),
|
|
550
746
|
default: 'disconnected'
|
|
551
747
|
});
|
|
552
748
|
/**
|
|
553
749
|
* Arduino upload progress.
|
|
554
750
|
*/
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
key: `${KEY_PREFIX}/Arduino/UploadProgressState`,
|
|
751
|
+
var exerciseArduinoUploadProgressState = atom({
|
|
752
|
+
key: "".concat(KEY_PREFIX, "/Arduino/UploadProgressState"),
|
|
558
753
|
default: 'ready'
|
|
559
754
|
});
|
|
560
755
|
/**
|
|
561
756
|
* Arduino agent modal open status.
|
|
562
757
|
*/
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
key: `${KEY_PREFIX}/Arduino/AgentModalState`,
|
|
758
|
+
var exerciseArduinoAgentModalState = atom({
|
|
759
|
+
key: "".concat(KEY_PREFIX, "/Arduino/AgentModalState"),
|
|
566
760
|
default: false
|
|
567
|
-
});
|
|
761
|
+
});
|
|
762
|
+
//
|
|
568
763
|
// =============== others ===============
|
|
569
764
|
//
|
|
570
|
-
|
|
571
765
|
/**
|
|
572
766
|
*
|
|
573
767
|
*/
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
key: `${KEY_PREFIX}/ActiveFilename`,
|
|
768
|
+
var exerciseActiveFilenameState = atom({
|
|
769
|
+
key: "".concat(KEY_PREFIX, "/ActiveFilename"),
|
|
577
770
|
default: null
|
|
578
771
|
});
|
|
579
772
|
/**
|
|
580
773
|
*
|
|
581
774
|
*/
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
key: `${KEY_PREFIX}/RightpaneActive`,
|
|
775
|
+
var exerciseRightpaneActiveState = atom({
|
|
776
|
+
key: "".concat(KEY_PREFIX, "/RightpaneActive"),
|
|
585
777
|
default: null
|
|
586
778
|
});
|
|
587
779
|
/**
|
|
588
780
|
*
|
|
589
781
|
*/
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
key: `${KEY_PREFIX}/ContainerSize`,
|
|
782
|
+
var exerciseContainerSizeState = atom({
|
|
783
|
+
key: "".concat(KEY_PREFIX, "/ContainerSize"),
|
|
593
784
|
default: {
|
|
594
785
|
width: 0,
|
|
595
786
|
height: 0
|
|
@@ -598,9 +789,8 @@ const exerciseContainerSizeState = atom({
|
|
|
598
789
|
/**
|
|
599
790
|
*
|
|
600
791
|
*/
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
key: `${KEY_PREFIX}/FileEditorCursor`,
|
|
792
|
+
var exerciseFileEditorCursorState = atom({
|
|
793
|
+
key: "".concat(KEY_PREFIX, "/FileEditorCursor"),
|
|
604
794
|
default: {
|
|
605
795
|
from: 0,
|
|
606
796
|
to: 0
|
|
@@ -609,17 +799,15 @@ const exerciseFileEditorCursorState = atom({
|
|
|
609
799
|
/**
|
|
610
800
|
*
|
|
611
801
|
*/
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
key: `${KEY_PREFIX}/FileEditorCursorSelectionValue`,
|
|
802
|
+
var exerciseFileEditorCursorSelectionValueState = atom({
|
|
803
|
+
key: "".concat(KEY_PREFIX, "/FileEditorCursorSelectionValue"),
|
|
615
804
|
default: null
|
|
616
805
|
});
|
|
617
806
|
/**
|
|
618
807
|
*
|
|
619
808
|
*/
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
key: `${KEY_PREFIX}/MonacoEditorApisState`,
|
|
809
|
+
var exerciseMonacoEditorApisState = atom({
|
|
810
|
+
key: "".concat(KEY_PREFIX, "/MonacoEditorApisState"),
|
|
623
811
|
default: null,
|
|
624
812
|
dangerouslyAllowMutability: true
|
|
625
813
|
});
|