@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
package/es/hooks/useArduino.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regeneratorRuntime as _regeneratorRuntime, createForOfIteratorHelper as _createForOfIteratorHelper } from '../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import { useRef, useState, useEffect } from 'react';
|
|
2
3
|
import { usePrevious } from 'react-use';
|
|
3
4
|
import { useRecoilState, useSetRecoilState } from 'recoil';
|
|
@@ -12,83 +13,90 @@ import { getArduinoBoardType, getFileContent, createArduinoUrl, getFQBN } from '
|
|
|
12
13
|
|
|
13
14
|
//
|
|
14
15
|
//
|
|
15
|
-
|
|
16
|
-
const AGENT_INIT_DELAY = 500;
|
|
17
|
-
const AGENT_REDISCOVER_DELAY = 10000;
|
|
18
|
-
const AGENT_CHECK_PING_INTERVAL = 2000; //
|
|
19
16
|
//
|
|
17
|
+
var AGENT_INIT_DELAY = 500;
|
|
18
|
+
var AGENT_REDISCOVER_DELAY = 10000;
|
|
19
|
+
var AGENT_CHECK_PING_INTERVAL = 2000;
|
|
20
20
|
//
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
21
|
+
//
|
|
22
|
+
//
|
|
23
|
+
var useArduino = function useArduino(_ref) {
|
|
24
|
+
var writeTerminal = _ref.writeTerminal;
|
|
25
|
+
var _return = useRef({});
|
|
26
|
+
// ports
|
|
27
|
+
var _useRecoilState = useRecoilState(exerciseArduinoPortsState),
|
|
28
|
+
_useRecoilState2 = _slicedToArray(_useRecoilState, 2),
|
|
29
|
+
ports = _useRecoilState2[0],
|
|
30
|
+
setPorts = _useRecoilState2[1];
|
|
31
|
+
var _useRecoilState3 = useRecoilState(exerciseArduinoOpenedPortNameState),
|
|
32
|
+
_useRecoilState4 = _slicedToArray(_useRecoilState3, 2),
|
|
33
|
+
openedPortName = _useRecoilState4[0],
|
|
34
|
+
setOpenedPortName = _useRecoilState4[1];
|
|
35
|
+
// connection state
|
|
36
|
+
var setAgentConnectionStatus = useSetRecoilState(exerciseArduinoAgentConnectionState);
|
|
37
|
+
// upload progress
|
|
38
|
+
var _useRecoilState5 = useRecoilState(exerciseArduinoUploadProgressState),
|
|
39
|
+
_useRecoilState6 = _slicedToArray(_useRecoilState5, 2),
|
|
40
|
+
uploadProgress = _useRecoilState6[0],
|
|
41
|
+
setUploadProgress = _useRecoilState6[1];
|
|
42
|
+
var previousUploadProgress = usePrevious(uploadProgress);
|
|
43
|
+
// preferences
|
|
44
|
+
var _useRecoilState7 = useRecoilState(exerciseArduinoPreferenceState),
|
|
45
|
+
_useRecoilState8 = _slicedToArray(_useRecoilState7, 2),
|
|
46
|
+
preference = _useRecoilState8[0],
|
|
47
|
+
setPreference = _useRecoilState8[1];
|
|
48
|
+
var setOnSelectPort = useSetRecoilState(exerciseArduinoOnSelectPortState);
|
|
49
|
+
// internal state
|
|
50
|
+
var state = useRef({
|
|
40
51
|
openedPortName: null,
|
|
41
52
|
uploadingPortName: null,
|
|
42
53
|
ports: []
|
|
43
54
|
});
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
var socket = useRef(null);
|
|
56
|
+
var pingInterval = useRef(null);
|
|
57
|
+
var _useState = useState(false),
|
|
58
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
59
|
+
enabled = _useState2[0],
|
|
60
|
+
setEnabled = _useState2[1];
|
|
61
|
+
var _useState3 = useState(null),
|
|
62
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
63
|
+
agentHttpPort = _useState4[0],
|
|
64
|
+
setAgentHttpPort = _useState4[1];
|
|
48
65
|
/**
|
|
49
66
|
* Discovers arduino agent and connects.
|
|
50
67
|
*/
|
|
51
|
-
|
|
52
|
-
const init = () => {
|
|
68
|
+
var init = function init() {
|
|
53
69
|
setEnabled(true);
|
|
54
70
|
};
|
|
55
71
|
/**
|
|
56
72
|
* Closes all connection and destroys arduino agent.
|
|
57
73
|
*/
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const destroy = () => {
|
|
74
|
+
var destroy = function destroy() {
|
|
61
75
|
setEnabled(false);
|
|
62
76
|
};
|
|
63
77
|
/**
|
|
64
78
|
* Re-initializes arduino agent.
|
|
65
79
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const reload = () => {
|
|
80
|
+
var reload = function reload() {
|
|
69
81
|
setEnabled(false);
|
|
70
82
|
setTimeout(init, 1000);
|
|
71
83
|
};
|
|
72
84
|
/**
|
|
73
85
|
* Close port, websocket and clear the state.
|
|
74
86
|
*/
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const reset = () => {
|
|
87
|
+
var reset = function reset() {
|
|
78
88
|
// close port
|
|
79
|
-
closePort(state.current.openedPortName);
|
|
80
|
-
|
|
89
|
+
closePort(state.current.openedPortName);
|
|
90
|
+
// close websocket
|
|
81
91
|
if (socket.current) {
|
|
82
92
|
socket.current.close();
|
|
83
93
|
socket.current = null;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
|
|
94
|
+
}
|
|
95
|
+
// clear ping interval
|
|
87
96
|
if (pingInterval.current) {
|
|
88
97
|
window.clearInterval(pingInterval.current);
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
98
|
+
}
|
|
99
|
+
// reset states
|
|
92
100
|
setPorts([]);
|
|
93
101
|
setOpenedPortName(null);
|
|
94
102
|
setAgentConnectionStatus('disconnected');
|
|
@@ -97,21 +105,19 @@ const useArduino = ({
|
|
|
97
105
|
/**
|
|
98
106
|
* Send command to arduino agent.
|
|
99
107
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
const send = (command, ...args) => {
|
|
108
|
+
var send = function send(command) {
|
|
103
109
|
var _a, _b;
|
|
104
|
-
|
|
105
110
|
if ((_a = socket.current) === null || _a === void 0 ? void 0 : _a.connected) {
|
|
106
|
-
(
|
|
111
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
112
|
+
args[_key - 1] = arguments[_key];
|
|
113
|
+
}
|
|
114
|
+
(_b = socket.current) === null || _b === void 0 ? void 0 : _b.emit('command', [command].concat(args).join(' '));
|
|
107
115
|
}
|
|
108
116
|
};
|
|
109
117
|
/**
|
|
110
118
|
* Send text to arduino agent.
|
|
111
119
|
*/
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const sendText = text => {
|
|
120
|
+
var sendText = function sendText(text) {
|
|
115
121
|
if (state.current.openedPortName) {
|
|
116
122
|
send('send', state.current.openedPortName, text);
|
|
117
123
|
}
|
|
@@ -119,9 +125,7 @@ const useArduino = ({
|
|
|
119
125
|
/**
|
|
120
126
|
* Open port.
|
|
121
127
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const openPort = portName => {
|
|
128
|
+
var openPort = function openPort(portName) {
|
|
125
129
|
if (portName) {
|
|
126
130
|
setOpenedPortName(portName);
|
|
127
131
|
send('open', portName, preference.baudRate);
|
|
@@ -130,9 +134,7 @@ const useArduino = ({
|
|
|
130
134
|
/**
|
|
131
135
|
* Close port.
|
|
132
136
|
*/
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
const closePort = portName => {
|
|
137
|
+
var closePort = function closePort(portName) {
|
|
136
138
|
if (portName) {
|
|
137
139
|
send('close', portName);
|
|
138
140
|
}
|
|
@@ -140,66 +142,78 @@ const useArduino = ({
|
|
|
140
142
|
/**
|
|
141
143
|
* Send list command to the agent.
|
|
142
144
|
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
145
|
+
var ping = /*#__PURE__*/function () {
|
|
146
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
147
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
148
|
+
while (1) switch (_context.prev = _context.next) {
|
|
149
|
+
case 0:
|
|
150
|
+
if (agentHttpPort) {
|
|
151
|
+
_context.next = 2;
|
|
152
|
+
break;
|
|
153
|
+
}
|
|
154
|
+
return _context.abrupt("return");
|
|
155
|
+
case 2:
|
|
156
|
+
if (!state.current.uploadingPortName) {
|
|
157
|
+
_context.next = 4;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
return _context.abrupt("return");
|
|
161
|
+
case 4:
|
|
162
|
+
_context.prev = 4;
|
|
163
|
+
_context.next = 7;
|
|
164
|
+
return fetch(createArduinoUrl({
|
|
165
|
+
protocol: 'http',
|
|
166
|
+
pathname: '/info',
|
|
167
|
+
port: agentHttpPort
|
|
168
|
+
}));
|
|
169
|
+
case 7:
|
|
170
|
+
send('list');
|
|
171
|
+
_context.next = 14;
|
|
172
|
+
break;
|
|
173
|
+
case 10:
|
|
174
|
+
_context.prev = 10;
|
|
175
|
+
_context.t0 = _context["catch"](4);
|
|
176
|
+
// if ping fails, reconnect the agent.
|
|
177
|
+
reload();
|
|
178
|
+
setAgentConnectionStatus('reconnecting');
|
|
179
|
+
case 14:
|
|
180
|
+
case "end":
|
|
181
|
+
return _context.stop();
|
|
182
|
+
}
|
|
183
|
+
}, _callee, null, [[4, 10]]);
|
|
184
|
+
}));
|
|
185
|
+
return function ping() {
|
|
186
|
+
return _ref2.apply(this, arguments);
|
|
187
|
+
};
|
|
188
|
+
}();
|
|
167
189
|
/**
|
|
168
190
|
* Upload hex file to the agent.
|
|
169
191
|
*/
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
const uploadHexFile = hexFile => {
|
|
192
|
+
var uploadHexFile = function uploadHexFile(hexFile) {
|
|
173
193
|
if (!agentHttpPort || !state.current.openedPortName) {
|
|
174
194
|
return;
|
|
175
195
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
196
|
+
var port = state.current.ports.find(function (port) {
|
|
197
|
+
return port.Name === state.current.openedPortName;
|
|
198
|
+
});
|
|
179
199
|
if (!port) {
|
|
180
200
|
return;
|
|
181
201
|
}
|
|
182
|
-
|
|
183
202
|
if (!hexFile.filename.includes(getArduinoBoardType(port) || 'not found')) {
|
|
184
203
|
return;
|
|
185
204
|
}
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
205
|
+
setUploadProgress('receivedHex');
|
|
206
|
+
// if port opened, close it.
|
|
189
207
|
state.current.uploadingPortName = state.current.openedPortName;
|
|
190
|
-
|
|
191
208
|
if (port.IsOpen) {
|
|
192
209
|
closePort(state.current.openedPortName);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const boradType = getArduinoBoardType(port);
|
|
198
|
-
|
|
210
|
+
}
|
|
211
|
+
// get board type and content.
|
|
212
|
+
var content = getFileContent(hexFile.data);
|
|
213
|
+
var boradType = getArduinoBoardType(port);
|
|
199
214
|
if (!boradType) {
|
|
200
215
|
return;
|
|
201
216
|
}
|
|
202
|
-
|
|
203
217
|
fetch(createArduinoUrl({
|
|
204
218
|
protocol: 'http',
|
|
205
219
|
pathname: '/upload',
|
|
@@ -221,24 +235,24 @@ const useArduino = ({
|
|
|
221
235
|
extrafiles: [],
|
|
222
236
|
signature: AVR_SIGNATURE[boradType]
|
|
223
237
|
})
|
|
224
|
-
}).then(
|
|
225
|
-
|
|
238
|
+
}).then(function (res) {
|
|
239
|
+
return res.json();
|
|
240
|
+
}).then(function () {
|
|
241
|
+
// no response (202 accepted)
|
|
242
|
+
}).catch(function () {
|
|
243
|
+
//
|
|
226
244
|
});
|
|
227
245
|
};
|
|
228
246
|
/**
|
|
229
247
|
* Handler called when user (re-)selects arduino device.
|
|
230
248
|
*/
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
const onSelectPort = name => {
|
|
249
|
+
var onSelectPort = function onSelectPort(name) {
|
|
234
250
|
if (name === state.current.openedPortName) {
|
|
235
251
|
return;
|
|
236
252
|
}
|
|
237
|
-
|
|
238
253
|
if (state.current.openedPortName) {
|
|
239
254
|
closePort(state.current.openedPortName);
|
|
240
255
|
}
|
|
241
|
-
|
|
242
256
|
if (name !== null) {
|
|
243
257
|
openPort(name);
|
|
244
258
|
}
|
|
@@ -246,19 +260,20 @@ const useArduino = ({
|
|
|
246
260
|
/**
|
|
247
261
|
* Handle arduino agent websocket message.
|
|
248
262
|
*/
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
const handleAgentMsg = msg => {
|
|
263
|
+
var handleAgentMsg = function handleAgentMsg(msg) {
|
|
252
264
|
// Ports
|
|
253
265
|
if ('Ports' in msg && msg.Network === false) {
|
|
254
266
|
handleAgentMsgPorts(msg);
|
|
255
|
-
}
|
|
267
|
+
}
|
|
268
|
+
// Cmd
|
|
256
269
|
else if ('Cmd' in msg && 'Desc' in msg) {
|
|
257
270
|
handleAgentMsgCmd(msg);
|
|
258
|
-
}
|
|
271
|
+
}
|
|
272
|
+
// Programmer Status
|
|
259
273
|
else if ('ProgrammerStatus' in msg) {
|
|
260
274
|
handleAgentMsgProgram(msg);
|
|
261
|
-
}
|
|
275
|
+
}
|
|
276
|
+
// D
|
|
262
277
|
else if ('D' in msg) {
|
|
263
278
|
handleAgentMsgD(msg);
|
|
264
279
|
}
|
|
@@ -266,16 +281,16 @@ const useArduino = ({
|
|
|
266
281
|
/**
|
|
267
282
|
* Handle arduino agent websocket message. (Ports)
|
|
268
283
|
*/
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
setPorts(msg.Ports); // if port not opened, open new port.
|
|
273
|
-
|
|
284
|
+
var handleAgentMsgPorts = function handleAgentMsgPorts(msg) {
|
|
285
|
+
setPorts(msg.Ports);
|
|
286
|
+
// if port not opened, open new port.
|
|
274
287
|
if (!state.current.openedPortName && !state.current.uploadingPortName) {
|
|
275
|
-
|
|
276
|
-
|
|
288
|
+
var prefPort = msg.Ports.find(function (port) {
|
|
289
|
+
return port.Name === preference.port;
|
|
290
|
+
});
|
|
291
|
+
var targetPort = prefPort ? prefPort :
|
|
292
|
+
// if preference port not found, open first port.
|
|
277
293
|
msg.Ports.length > 0 ? msg.Ports[0] : null;
|
|
278
|
-
|
|
279
294
|
if (targetPort) {
|
|
280
295
|
openPort(targetPort.Name);
|
|
281
296
|
}
|
|
@@ -284,21 +299,19 @@ const useArduino = ({
|
|
|
284
299
|
/**
|
|
285
300
|
* Handle arduino agent websocket message. (Cmd)
|
|
286
301
|
*/
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
const handleAgentMsgCmd = msg => {
|
|
302
|
+
var handleAgentMsgCmd = function handleAgentMsgCmd(msg) {
|
|
290
303
|
switch (msg.Cmd) {
|
|
291
304
|
case 'Open':
|
|
292
305
|
setOpenedPortName(msg.Port);
|
|
293
|
-
setPreference(
|
|
294
|
-
|
|
295
|
-
|
|
306
|
+
setPreference(function (prev) {
|
|
307
|
+
return Object.assign(Object.assign({}, prev), {
|
|
308
|
+
port: msg.Port
|
|
309
|
+
});
|
|
310
|
+
});
|
|
296
311
|
break;
|
|
297
|
-
|
|
298
312
|
case 'OpenFail':
|
|
299
313
|
closePort(msg.Port);
|
|
300
314
|
break;
|
|
301
|
-
|
|
302
315
|
case 'Close':
|
|
303
316
|
setOpenedPortName(null);
|
|
304
317
|
break;
|
|
@@ -307,209 +320,268 @@ const useArduino = ({
|
|
|
307
320
|
/**
|
|
308
321
|
* Handle arduino agent websocket message. (ProgrammerStatus)
|
|
309
322
|
*/
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
const handleAgentMsgProgram = msg => {
|
|
323
|
+
var handleAgentMsgProgram = function handleAgentMsgProgram(msg) {
|
|
313
324
|
switch (msg.ProgrammerStatus) {
|
|
314
325
|
case 'Starting':
|
|
315
326
|
setUploadProgress('starting');
|
|
316
327
|
return;
|
|
317
|
-
|
|
318
328
|
case 'Busy':
|
|
319
329
|
setUploadProgress('busy');
|
|
320
330
|
return;
|
|
321
|
-
|
|
322
331
|
case 'Done':
|
|
323
332
|
setUploadProgress('done');
|
|
324
333
|
openPort(state.current.uploadingPortName);
|
|
325
334
|
state.current.uploadingPortName = null;
|
|
326
|
-
window.setTimeout(
|
|
335
|
+
window.setTimeout(function () {
|
|
336
|
+
return setUploadProgress('ready');
|
|
337
|
+
}, DISABLE_TIME_AFTER_UPLOAD);
|
|
327
338
|
return;
|
|
328
|
-
|
|
329
339
|
case 'Error':
|
|
330
340
|
setUploadProgress('error');
|
|
331
341
|
openPort(state.current.uploadingPortName);
|
|
332
342
|
state.current.uploadingPortName = null;
|
|
333
|
-
window.setTimeout(
|
|
343
|
+
window.setTimeout(function () {
|
|
344
|
+
return setUploadProgress('ready');
|
|
345
|
+
}, DISABLE_TIME_AFTER_UPLOAD);
|
|
334
346
|
return;
|
|
335
347
|
}
|
|
336
348
|
};
|
|
337
349
|
/**
|
|
338
350
|
* Handle arduino agent websocket message. (D)
|
|
339
351
|
*/
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
const handleAgentMsgD = msg => {
|
|
352
|
+
var handleAgentMsgD = function handleAgentMsgD(msg) {
|
|
343
353
|
writeTerminal(msg.D);
|
|
344
|
-
};
|
|
354
|
+
};
|
|
355
|
+
//
|
|
345
356
|
// Sync `openedPortName` recoil state with internal ref.
|
|
346
357
|
//
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
useEffect(() => {
|
|
358
|
+
useEffect(function () {
|
|
350
359
|
state.current.openedPortName = openedPortName;
|
|
351
|
-
}, [openedPortName]);
|
|
360
|
+
}, [openedPortName]);
|
|
361
|
+
//
|
|
352
362
|
// Sync `ports` recoil state with internal ref.
|
|
353
363
|
//
|
|
354
|
-
|
|
355
|
-
useEffect(() => {
|
|
364
|
+
useEffect(function () {
|
|
356
365
|
state.current.ports = ports;
|
|
357
|
-
}, [ports]);
|
|
366
|
+
}, [ports]);
|
|
367
|
+
//
|
|
358
368
|
// Discover arduino agent port.
|
|
359
369
|
//
|
|
360
|
-
|
|
361
|
-
useEffect(() => {
|
|
370
|
+
useEffect(function () {
|
|
362
371
|
if (!enabled) {
|
|
363
372
|
return;
|
|
364
373
|
}
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
let reconnectTimeout = null;
|
|
374
|
+
var abortCtrl = new AbortController();
|
|
375
|
+
var reconnectTimeout = null;
|
|
368
376
|
/** Scan port. */
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
377
|
+
var _scan = /*#__PURE__*/function () {
|
|
378
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
379
|
+
var _iterator, _step, port;
|
|
380
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
381
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
382
|
+
case 0:
|
|
383
|
+
_iterator = _createForOfIteratorHelper(ARDUINO_AGENT_PORTS);
|
|
384
|
+
_context2.prev = 1;
|
|
385
|
+
_iterator.s();
|
|
386
|
+
case 3:
|
|
387
|
+
if ((_step = _iterator.n()).done) {
|
|
388
|
+
_context2.next = 17;
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
port = _step.value;
|
|
392
|
+
_context2.prev = 5;
|
|
393
|
+
_context2.next = 8;
|
|
394
|
+
return fetch(createArduinoUrl({
|
|
395
|
+
protocol: 'http',
|
|
396
|
+
pathname: '/info',
|
|
397
|
+
port: port
|
|
398
|
+
}), {
|
|
399
|
+
signal: abortCtrl.signal
|
|
400
|
+
});
|
|
401
|
+
case 8:
|
|
402
|
+
return _context2.abrupt("return", port);
|
|
403
|
+
case 11:
|
|
404
|
+
_context2.prev = 11;
|
|
405
|
+
_context2.t0 = _context2["catch"](5);
|
|
406
|
+
if (!(_context2.t0.name === 'AbortError')) {
|
|
407
|
+
_context2.next = 15;
|
|
408
|
+
break;
|
|
409
|
+
}
|
|
410
|
+
throw _context2.t0;
|
|
411
|
+
case 15:
|
|
412
|
+
_context2.next = 3;
|
|
413
|
+
break;
|
|
414
|
+
case 17:
|
|
415
|
+
_context2.next = 22;
|
|
416
|
+
break;
|
|
417
|
+
case 19:
|
|
418
|
+
_context2.prev = 19;
|
|
419
|
+
_context2.t1 = _context2["catch"](1);
|
|
420
|
+
_iterator.e(_context2.t1);
|
|
421
|
+
case 22:
|
|
422
|
+
_context2.prev = 22;
|
|
423
|
+
_iterator.f();
|
|
424
|
+
return _context2.finish(22);
|
|
425
|
+
case 25:
|
|
426
|
+
return _context2.abrupt("return", null);
|
|
427
|
+
case 26:
|
|
428
|
+
case "end":
|
|
429
|
+
return _context2.stop();
|
|
385
430
|
}
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
431
|
+
}, _callee2, null, [[1, 19, 22, 25], [5, 11]]);
|
|
432
|
+
}));
|
|
433
|
+
return function _scan() {
|
|
434
|
+
return _ref3.apply(this, arguments);
|
|
435
|
+
};
|
|
436
|
+
}();
|
|
391
437
|
/** Scan port to discover until found. */
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
438
|
+
var _discover = /*#__PURE__*/function () {
|
|
439
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
440
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
441
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
442
|
+
case 0:
|
|
443
|
+
void _scan().then(function (port) {
|
|
444
|
+
// if port found, stop scanning and set port
|
|
445
|
+
if (port) {
|
|
446
|
+
setAgentHttpPort(port);
|
|
447
|
+
}
|
|
448
|
+
// or start scanning again
|
|
449
|
+
else {
|
|
450
|
+
reconnectTimeout = window.setTimeout(function () {
|
|
451
|
+
return void _discover();
|
|
452
|
+
}, AGENT_REDISCOVER_DELAY);
|
|
453
|
+
}
|
|
454
|
+
}).catch(function () {
|
|
455
|
+
return void 0;
|
|
456
|
+
});
|
|
457
|
+
case 1:
|
|
458
|
+
case "end":
|
|
459
|
+
return _context3.stop();
|
|
460
|
+
}
|
|
461
|
+
}, _callee3);
|
|
462
|
+
}));
|
|
463
|
+
return function _discover() {
|
|
464
|
+
return _ref4.apply(this, arguments);
|
|
465
|
+
};
|
|
466
|
+
}();
|
|
467
|
+
// start scanning...
|
|
407
468
|
setAgentConnectionStatus('connecting');
|
|
408
469
|
void _discover();
|
|
409
|
-
return ()
|
|
470
|
+
return function () {
|
|
410
471
|
abortCtrl.abort();
|
|
411
|
-
|
|
412
472
|
if (reconnectTimeout) {
|
|
413
473
|
window.clearTimeout(reconnectTimeout);
|
|
414
474
|
}
|
|
415
|
-
|
|
416
475
|
setAgentHttpPort(null);
|
|
417
476
|
};
|
|
418
|
-
},
|
|
419
|
-
|
|
477
|
+
},
|
|
478
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
479
|
+
[enabled]);
|
|
480
|
+
//
|
|
420
481
|
// Initialize arduino agent websocket.
|
|
421
482
|
//
|
|
422
|
-
|
|
423
|
-
useEffect(() => {
|
|
483
|
+
useEffect(function () {
|
|
424
484
|
if (!enabled || !agentHttpPort) {
|
|
425
485
|
return;
|
|
426
486
|
}
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
487
|
+
var _init = /*#__PURE__*/function () {
|
|
488
|
+
var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
489
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
490
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
491
|
+
case 0:
|
|
492
|
+
_context4.next = 2;
|
|
493
|
+
return new Promise(function (r) {
|
|
494
|
+
return window.setTimeout(r, AGENT_INIT_DELAY);
|
|
495
|
+
});
|
|
496
|
+
case 2:
|
|
497
|
+
setAgentConnectionStatus('connecting');
|
|
498
|
+
// connect socket.io-client to the agent.
|
|
499
|
+
socket.current = io(createArduinoUrl({
|
|
500
|
+
protocol: 'ws',
|
|
501
|
+
port: agentHttpPort
|
|
502
|
+
}));
|
|
503
|
+
// agent - on message
|
|
504
|
+
socket.current.on('message', function (message) {
|
|
505
|
+
try {
|
|
506
|
+
var msg = JSON.parse(message);
|
|
507
|
+
handleAgentMsg(msg);
|
|
508
|
+
} catch (e) {
|
|
509
|
+
// console.warn(e);
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
// agent - on connect
|
|
513
|
+
_context4.next = 7;
|
|
514
|
+
return new Promise(function (resolve) {
|
|
515
|
+
var _a;
|
|
516
|
+
return (_a = socket.current) === null || _a === void 0 ? void 0 : _a.on('connect', resolve);
|
|
517
|
+
}).then(ping).then(function () {
|
|
518
|
+
var _a, _b, _c, _d, _e;
|
|
519
|
+
(_a = socket.current) === null || _a === void 0 ? void 0 : _a.emit('command', 'downloadtool windows-drivers latest arduino keep');
|
|
520
|
+
(_b = socket.current) === null || _b === void 0 ? void 0 : _b.emit('command', 'downloadtool bossac 1.7.0 arduino keep');
|
|
521
|
+
(_c = socket.current) === null || _c === void 0 ? void 0 : _c.emit('command', 'downloadtool fwupdater latest arduino keep');
|
|
522
|
+
(_d = socket.current) === null || _d === void 0 ? void 0 : _d.emit('command', 'downloadtool rp2040tools latest arduino keep');
|
|
523
|
+
(_e = socket.current) === null || _e === void 0 ? void 0 : _e.emit('command', 'downloadtool avrdude 6.3.0-arduino15 arduino keep');
|
|
524
|
+
});
|
|
525
|
+
case 7:
|
|
526
|
+
setAgentConnectionStatus('connected');
|
|
527
|
+
pingInterval.current = window.setInterval(function () {
|
|
528
|
+
return void ping();
|
|
529
|
+
}, AGENT_CHECK_PING_INTERVAL);
|
|
530
|
+
case 9:
|
|
531
|
+
case "end":
|
|
532
|
+
return _context4.stop();
|
|
533
|
+
}
|
|
534
|
+
}, _callee4);
|
|
535
|
+
}));
|
|
536
|
+
return function _init() {
|
|
537
|
+
return _ref5.apply(this, arguments);
|
|
538
|
+
};
|
|
539
|
+
}();
|
|
462
540
|
void _init();
|
|
463
|
-
return ()
|
|
541
|
+
return function () {
|
|
464
542
|
reset();
|
|
465
543
|
};
|
|
466
|
-
},
|
|
467
|
-
|
|
468
|
-
|
|
544
|
+
},
|
|
545
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
546
|
+
[enabled, agentHttpPort,
|
|
547
|
+
// reload agent on port or baud rate change
|
|
548
|
+
preference.port, preference.baudRate]);
|
|
549
|
+
//
|
|
469
550
|
// Print message to terminal according to the message type.
|
|
470
551
|
//
|
|
471
|
-
|
|
472
|
-
useEffect(() => {
|
|
552
|
+
useEffect(function () {
|
|
473
553
|
if (previousUploadProgress === uploadProgress) {
|
|
474
554
|
return;
|
|
475
555
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
writeTerminal(`\x1b[1m\x1b[38;5;221m${text}\x1b[0m`);
|
|
556
|
+
var _write = function _write(text) {
|
|
557
|
+
writeTerminal("\x1B[1m\x1B[38;5;221m".concat(text, "\x1B[0m"));
|
|
479
558
|
};
|
|
480
|
-
|
|
481
559
|
switch (uploadProgress) {
|
|
482
560
|
case 'receivedHex':
|
|
483
561
|
_write('/* 컴파일이 완료되었습니다. */\n');
|
|
484
|
-
|
|
485
562
|
return;
|
|
486
|
-
|
|
487
563
|
case 'starting':
|
|
488
564
|
_write('/* 업로드를 시작합니다. */\n');
|
|
489
|
-
|
|
490
565
|
return;
|
|
491
|
-
|
|
492
566
|
case 'busy':
|
|
493
567
|
_write('/* 업로드 중입니다... */\n');
|
|
494
|
-
|
|
495
568
|
return;
|
|
496
|
-
|
|
497
569
|
case 'done':
|
|
498
570
|
_write('/* 업로드가 완료되었습니다. */\n');
|
|
499
|
-
|
|
500
571
|
return;
|
|
501
|
-
|
|
502
572
|
case 'error':
|
|
503
573
|
_write('/* 에러가 발생했습니다. */\n');
|
|
504
|
-
|
|
505
574
|
return;
|
|
506
575
|
}
|
|
507
|
-
},
|
|
576
|
+
},
|
|
577
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
508
578
|
[previousUploadProgress, uploadProgress]);
|
|
509
|
-
setOnSelectPort(()
|
|
579
|
+
setOnSelectPort(function () {
|
|
580
|
+
return onSelectPort;
|
|
581
|
+
});
|
|
582
|
+
//
|
|
510
583
|
//
|
|
511
584
|
//
|
|
512
|
-
|
|
513
585
|
_return.current.init = init;
|
|
514
586
|
_return.current.destroy = destroy;
|
|
515
587
|
_return.current.reload = reload;
|