@elice/material-exercise 1.230325.0 → 1.230418.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/_virtual/_rollupPluginBabelHelpers.js +526 -0
- package/cjs/components/material-exercise/MaterialExercise.js +44 -63
- package/cjs/components/material-exercise/MaterialExercise.styled.js +20 -23
- package/cjs/components/material-exercise/MaterialExerciseMobile.js +19 -15
- package/cjs/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
- package/cjs/components/material-exercise/context/ExerciseProvider.js +83 -81
- package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +16 -16
- package/cjs/components/material-exercise/context/context.js +1 -1
- package/cjs/components/material-exercise/context/locales/noImage.en.json.js +3 -1
- package/cjs/components/material-exercise/context/locales/noImage.ko.json.js +3 -1
- package/cjs/components/material-exercise/context/recoil.d.ts +2 -1
- package/cjs/components/material-exercise/context/recoil.js +562 -373
- package/cjs/components/material-exercise/context/recoilTypes.js +0 -5
- package/cjs/components/material-exercise/context/subjects.js +3 -6
- package/cjs/components/material-exercise/context/types.d.ts +8 -1
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -65
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/cjs/components/material-exercise/exercise-code-history/locales/en.json.js +7 -0
- package/cjs/components/material-exercise/exercise-code-history/locales/ko.json.js +7 -0
- package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +20 -21
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +228 -199
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +8 -10
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +35 -32
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +57 -48
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +6 -4
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tabs/locales/fileTreeButton.ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +327 -231
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +6 -4
- package/cjs/components/material-exercise/exercise-file-tree/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-tree/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +17 -17
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +13 -14
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +6 -6
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +47 -38
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +60 -42
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +29 -22
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +45 -56
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +28 -20
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +5 -3
- package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +30 -41
- package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +17 -12
- package/cjs/components/material-exercise/exercise-preview/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-preview/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +24 -33
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +13 -8
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +84 -83
- package/cjs/components/material-exercise/exercise-rightpane/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-rightpane/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +20 -12
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +239 -147
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +92 -63
- package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
- package/cjs/components/material-exercise/exercise-room/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-room/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +224 -223
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +13 -13
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +30 -26
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +26 -26
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +79 -95
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +27 -27
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +54 -60
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +5 -5
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +10 -13
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +29 -26
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +3 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +3 -1
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +290 -180
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +41 -45
- package/cjs/components/material-exercise/exercise-submit-history/locales/en.json.js +7 -0
- package/cjs/components/material-exercise/exercise-submit-history/locales/ko.json.js +7 -0
- package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +19 -17
- package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +5 -4
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +15 -14
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +7 -6
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +17 -16
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +18 -11
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -4
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +8 -7
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
- package/cjs/components/shared/file-icon/FileIcon.js +23 -23
- package/cjs/components/shared/file-tabs/FileTab.js +32 -43
- package/cjs/components/shared/file-tabs/FileTab.styled.js +26 -22
- package/cjs/components/shared/file-tabs/FileTabs.js +55 -49
- package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/cjs/components/shared/file-tabs/util.js +29 -18
- package/cjs/components/shared/file-tree/FileTree.js +11 -11
- package/cjs/components/shared/file-tree/FileTreeConfig.js +24 -23
- package/cjs/components/shared/file-tree/FileTreeList.js +35 -41
- package/cjs/components/shared/file-tree/FileTreeListItemContent.js +75 -91
- package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +77 -101
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +51 -86
- package/cjs/components/shared/file-tree/FileTreeListItems.js +150 -153
- package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/cjs/components/shared/file-tree/FileTreeToolbar.js +30 -41
- package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/cjs/components/shared/file-tree/context/FileTreeContext.js +91 -97
- package/cjs/components/shared/file-tree/locales/en.json.js +3 -1
- package/cjs/components/shared/file-tree/locales/ko.json.js +3 -1
- package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
- package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
- package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -1
- package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/cjs/components/shared/file-tree/utils/fileTreePath.js +5 -7
- package/cjs/components/shared/file-viewer/FileViewer.js +59 -60
- package/cjs/components/shared/file-viewer/FileViewerCsv.js +145 -101
- package/cjs/components/shared/file-viewer/FileViewerImage.js +7 -8
- package/cjs/components/shared/file-viewer/FileViewerIpynb.js +20 -14
- package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +28 -34
- package/cjs/components/shared/file-viewer/FileViewerText.js +23 -16
- package/cjs/components/shared/file-viewer/locales/en.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/ko.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.en.json.js +3 -1
- package/cjs/components/shared/file-viewer/locales/nonViewable.ko.json.js +3 -1
- package/cjs/components/shared/material-modal/MaterialModal.js +10 -12
- package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/cjs/components/shared/monaco-editor/MonacoEditor.js +123 -149
- package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +10 -8
- package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +49 -58
- package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +78 -85
- package/cjs/components/shared/monaco-editor/constants/grammars/index.js +131 -52
- package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
- package/cjs/components/shared/monaco-editor/constants/themes/index.js +80 -32
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
- package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +5 -8
- package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +3 -6
- package/cjs/components/shared/monaco-editor/editor-languages/index.js +3 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +3 -2
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +36 -12
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +18 -24
- package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
- package/cjs/components/shared/monaco-editor/locales/en.json.js +3 -1
- package/cjs/components/shared/monaco-editor/locales/ko.json.js +3 -1
- package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
- package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
- package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
- package/cjs/components/shared/monaco-editor/utils/grammar/index.js +70 -32
- package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
- package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
- package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
- package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -3
- package/cjs/components/shared/monaco-editor/utils/prettier/index.js +30 -9
- package/cjs/components/shared/monaco-editor/utils/theme/convert.js +20 -26
- package/cjs/components/shared/monaco-editor/utils/theme/index.js +22 -5
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +218 -329
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
- package/cjs/components/shared/no-vnc/NoVnc.js +93 -90
- package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -5
- package/cjs/components/shared/preview-container/PreviewContainer.js +7 -10
- package/cjs/components/shared/web-browser/WebBrowser.js +54 -59
- package/cjs/components/shared/xterm/Xterm.js +112 -105
- package/cjs/components/shared/xterm/XtermLazy.js +7 -5
- package/cjs/components/shared/xterm/locales/en.json.js +3 -1
- package/cjs/components/shared/xterm/locales/ko.json.js +3 -1
- package/cjs/constants/arduino.js +10 -10
- package/cjs/constants/shortcutKeyMap.js +5 -5
- package/cjs/constants/stylesheets.js +7 -10
- package/cjs/hooks/useArduino.js +327 -255
- package/cjs/hooks/useExerciseFile.js +24 -24
- package/cjs/hooks/useExericseShortcut.js +6 -5
- package/cjs/hooks/useMaterialExerciseFileUrl.js +54 -37
- package/cjs/hooks/useRunnerRoomWebSocket.js +58 -56
- package/cjs/hooks/useStdioTextConcator.js +18 -12
- package/cjs/hooks/useStdioWebSocket.js +41 -67
- package/cjs/hooks/useUsercodeEditWebSocket.js +230 -252
- package/cjs/hooks/useUsercodeHistory.js +121 -82
- package/cjs/index.js +4 -4
- package/cjs/utils/arduino.js +23 -25
- package/cjs/utils/exerciseFile.js +8 -16
- package/cjs/utils/runner.js +29 -25
- package/es/_virtual/_rollupPluginBabelHelpers.js +504 -0
- package/es/components/material-exercise/MaterialExercise.js +33 -54
- package/es/components/material-exercise/MaterialExercise.styled.js +20 -23
- package/es/components/material-exercise/MaterialExerciseMobile.js +15 -13
- package/es/components/material-exercise/context/ExerciseIntlProvider.js +9 -13
- package/es/components/material-exercise/context/ExerciseProvider.js +79 -79
- package/es/components/material-exercise/context/ExerciseProviderNoImage.js +11 -13
- package/es/components/material-exercise/context/context.js +1 -1
- package/es/components/material-exercise/context/recoil.d.ts +2 -1
- package/es/components/material-exercise/context/recoil.js +563 -374
- package/es/components/material-exercise/context/recoilTypes.js +0 -5
- package/es/components/material-exercise/context/subjects.js +3 -6
- package/es/components/material-exercise/context/types.d.ts +8 -1
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.d.ts +2 -2
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +73 -62
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-code-history/locales/en.json.js +3 -0
- package/es/components/material-exercise/exercise-code-history/locales/ko.json.js +3 -0
- package/es/components/material-exercise/exercise-file/ExerciseFile.js +15 -18
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +222 -195
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +5 -9
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +31 -28
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsFileTreeButton.js +52 -45
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +321 -225
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +1 -1
- package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +12 -14
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +7 -10
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +3 -5
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +43 -36
- package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +53 -37
- package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +25 -20
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +41 -54
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +12 -12
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +25 -19
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +1 -1
- package/es/components/material-exercise/exercise-preview/ExercisePreview.js +21 -34
- package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +13 -10
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +17 -28
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +9 -6
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +81 -82
- package/es/components/material-exercise/exercise-room/ExerciseRoom.js +13 -7
- package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +14 -12
- package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +236 -146
- package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +90 -63
- package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -8
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +218 -219
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +7 -9
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +27 -25
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +22 -24
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +76 -94
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +24 -26
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +51 -59
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -4
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +6 -11
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +26 -25
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.d.ts +2 -2
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +284 -174
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +38 -44
- package/es/components/material-exercise/exercise-submit-history/locales/en.json.js +3 -0
- package/es/components/material-exercise/exercise-submit-history/locales/ko.json.js +3 -0
- package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +16 -16
- package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +2 -3
- package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +12 -13
- package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +2 -3
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +14 -15
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +15 -10
- package/es/components/shared/exercise-version-list/ExerciseVersionList.js +2 -3
- package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +5 -6
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +9 -5
- package/es/components/shared/file-icon/FileIcon.js +20 -22
- package/es/components/shared/file-tabs/FileTab.js +28 -41
- package/es/components/shared/file-tabs/FileTab.styled.js +26 -22
- package/es/components/shared/file-tabs/FileTabs.js +52 -48
- package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/es/components/shared/file-tabs/util.js +29 -18
- package/es/components/shared/file-tree/FileTree.js +3 -5
- package/es/components/shared/file-tree/FileTreeConfig.js +21 -22
- package/es/components/shared/file-tree/FileTreeList.js +31 -39
- package/es/components/shared/file-tree/FileTreeListItemContent.js +67 -85
- package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +29 -40
- package/es/components/shared/file-tree/FileTreeListItemContentInput.js +74 -100
- package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +48 -85
- package/es/components/shared/file-tree/FileTreeListItems.js +147 -152
- package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/es/components/shared/file-tree/FileTreeToolbar.js +24 -37
- package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.js +91 -97
- package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -22
- package/es/components/shared/file-tree/utils/fileTreeGenerator.js +193 -173
- package/es/components/shared/file-tree/utils/fileTreeInput.js +0 -1
- package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/es/components/shared/file-tree/utils/fileTreePath.js +5 -7
- package/es/components/shared/file-viewer/FileViewer.js +52 -53
- package/es/components/shared/file-viewer/FileViewerCsv.js +141 -99
- package/es/components/shared/file-viewer/FileViewerImage.js +3 -6
- package/es/components/shared/file-viewer/FileViewerIpynb.js +16 -12
- package/es/components/shared/file-viewer/FileViewerNonViewable.js +22 -30
- package/es/components/shared/file-viewer/FileViewerText.js +18 -13
- package/es/components/shared/material-modal/MaterialModal.js +7 -11
- package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/es/components/shared/monaco-editor/MonacoEditor.js +119 -147
- package/es/components/shared/monaco-editor/MonacoEditorLazy.js +6 -4
- package/es/components/shared/monaco-editor/MonacoEditorMobile.js +45 -56
- package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +73 -82
- package/es/components/shared/monaco-editor/constants/grammars/index.js +131 -52
- package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -9
- package/es/components/shared/monaco-editor/constants/themes/index.js +80 -32
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -13
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -18
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +54 -72
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +14 -15
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +8 -9
- package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/css/index.js +2 -5
- package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/html/index.js +2 -5
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/express.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/propTypes.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/react.js +0 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +33 -11
- package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -16
- package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +12 -9
- package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +18 -28
- package/es/components/shared/monaco-editor/utils/emmet/emmet.js +0 -3
- package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +12 -8
- package/es/components/shared/monaco-editor/utils/grammar/index.js +67 -31
- package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +25 -7
- package/es/components/shared/monaco-editor/utils/grammar/textmate.js +67 -43
- package/es/components/shared/monaco-editor/utils/monacoLanguage.js +9 -19
- package/es/components/shared/monaco-editor/utils/monacoPreference.js +6 -5
- package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -3
- package/es/components/shared/monaco-editor/utils/prettier/index.js +27 -8
- package/es/components/shared/monaco-editor/utils/theme/convert.js +20 -26
- package/es/components/shared/monaco-editor/utils/theme/index.js +22 -5
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +77 -75
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +82 -93
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +125 -135
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +148 -160
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +104 -118
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/styles.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +1 -3
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -3
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +219 -330
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -6
- package/es/components/shared/no-vnc/NoVnc.js +89 -88
- package/es/components/shared/no-vnc/NoVncLazy.js +4 -2
- package/es/components/shared/preview-container/PreviewContainer.js +7 -10
- package/es/components/shared/web-browser/WebBrowser.js +49 -56
- package/es/components/shared/xterm/Xterm.js +107 -102
- package/es/components/shared/xterm/XtermLazy.js +4 -2
- package/es/constants/arduino.js +10 -10
- package/es/constants/shortcutKeyMap.js +3 -5
- package/es/constants/stylesheets.js +7 -10
- package/es/hooks/useArduino.js +327 -255
- package/es/hooks/useExerciseFile.js +24 -24
- package/es/hooks/useExericseShortcut.js +6 -5
- package/es/hooks/useMaterialExerciseFileUrl.js +55 -38
- package/es/hooks/useRunnerRoomWebSocket.js +58 -56
- package/es/hooks/useStdioTextConcator.js +18 -12
- package/es/hooks/useStdioWebSocket.js +41 -67
- package/es/hooks/useUsercodeEditWebSocket.js +230 -252
- package/es/hooks/useUsercodeHistory.js +122 -83
- package/es/utils/arduino.js +23 -25
- package/es/utils/exerciseFile.js +8 -16
- package/es/utils/runner.js +29 -25
- package/package.json +8 -8
package/cjs/hooks/useArduino.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var _rollupPluginBabelHelpers = require('../_virtual/_rollupPluginBabelHelpers.js');
|
|
5
6
|
var React = require('react');
|
|
6
7
|
var reactUse = require('react-use');
|
|
7
8
|
var recoil = require('recoil');
|
|
@@ -20,83 +21,90 @@ var io__default = /*#__PURE__*/_interopDefaultLegacy(io);
|
|
|
20
21
|
|
|
21
22
|
//
|
|
22
23
|
//
|
|
23
|
-
|
|
24
|
-
const AGENT_INIT_DELAY = 500;
|
|
25
|
-
const AGENT_REDISCOVER_DELAY = 10000;
|
|
26
|
-
const AGENT_CHECK_PING_INTERVAL = 2000; //
|
|
27
24
|
//
|
|
25
|
+
var AGENT_INIT_DELAY = 500;
|
|
26
|
+
var AGENT_REDISCOVER_DELAY = 10000;
|
|
27
|
+
var AGENT_CHECK_PING_INTERVAL = 2000;
|
|
28
28
|
//
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
29
|
+
//
|
|
30
|
+
//
|
|
31
|
+
var useArduino = function useArduino(_ref) {
|
|
32
|
+
var writeTerminal = _ref.writeTerminal;
|
|
33
|
+
var _return = React.useRef({});
|
|
34
|
+
// ports
|
|
35
|
+
var _useRecoilState = recoil.useRecoilState(recoil$1.exerciseArduinoPortsState),
|
|
36
|
+
_useRecoilState2 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState, 2),
|
|
37
|
+
ports = _useRecoilState2[0],
|
|
38
|
+
setPorts = _useRecoilState2[1];
|
|
39
|
+
var _useRecoilState3 = recoil.useRecoilState(recoil$1.exerciseArduinoOpenedPortNameState),
|
|
40
|
+
_useRecoilState4 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState3, 2),
|
|
41
|
+
openedPortName = _useRecoilState4[0],
|
|
42
|
+
setOpenedPortName = _useRecoilState4[1];
|
|
43
|
+
// connection state
|
|
44
|
+
var setAgentConnectionStatus = recoil.useSetRecoilState(recoil$1.exerciseArduinoAgentConnectionState);
|
|
45
|
+
// upload progress
|
|
46
|
+
var _useRecoilState5 = recoil.useRecoilState(recoil$1.exerciseArduinoUploadProgressState),
|
|
47
|
+
_useRecoilState6 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState5, 2),
|
|
48
|
+
uploadProgress = _useRecoilState6[0],
|
|
49
|
+
setUploadProgress = _useRecoilState6[1];
|
|
50
|
+
var previousUploadProgress = reactUse.usePrevious(uploadProgress);
|
|
51
|
+
// preferences
|
|
52
|
+
var _useRecoilState7 = recoil.useRecoilState(recoil$1.exerciseArduinoPreferenceState),
|
|
53
|
+
_useRecoilState8 = _rollupPluginBabelHelpers.slicedToArray(_useRecoilState7, 2),
|
|
54
|
+
preference = _useRecoilState8[0],
|
|
55
|
+
setPreference = _useRecoilState8[1];
|
|
56
|
+
var setOnSelectPort = recoil.useSetRecoilState(recoil$1.exerciseArduinoOnSelectPortState);
|
|
57
|
+
// internal state
|
|
58
|
+
var state = React.useRef({
|
|
48
59
|
openedPortName: null,
|
|
49
60
|
uploadingPortName: null,
|
|
50
61
|
ports: []
|
|
51
62
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
63
|
+
var socket = React.useRef(null);
|
|
64
|
+
var pingInterval = React.useRef(null);
|
|
65
|
+
var _useState = React.useState(false),
|
|
66
|
+
_useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
|
|
67
|
+
enabled = _useState2[0],
|
|
68
|
+
setEnabled = _useState2[1];
|
|
69
|
+
var _useState3 = React.useState(null),
|
|
70
|
+
_useState4 = _rollupPluginBabelHelpers.slicedToArray(_useState3, 2),
|
|
71
|
+
agentHttpPort = _useState4[0],
|
|
72
|
+
setAgentHttpPort = _useState4[1];
|
|
56
73
|
/**
|
|
57
74
|
* Discovers arduino agent and connects.
|
|
58
75
|
*/
|
|
59
|
-
|
|
60
|
-
const init = () => {
|
|
76
|
+
var init = function init() {
|
|
61
77
|
setEnabled(true);
|
|
62
78
|
};
|
|
63
79
|
/**
|
|
64
80
|
* Closes all connection and destroys arduino agent.
|
|
65
81
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const destroy = () => {
|
|
82
|
+
var destroy = function destroy() {
|
|
69
83
|
setEnabled(false);
|
|
70
84
|
};
|
|
71
85
|
/**
|
|
72
86
|
* Re-initializes arduino agent.
|
|
73
87
|
*/
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const reload = () => {
|
|
88
|
+
var reload = function reload() {
|
|
77
89
|
setEnabled(false);
|
|
78
90
|
setTimeout(init, 1000);
|
|
79
91
|
};
|
|
80
92
|
/**
|
|
81
93
|
* Close port, websocket and clear the state.
|
|
82
94
|
*/
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
const reset = () => {
|
|
95
|
+
var reset = function reset() {
|
|
86
96
|
// close port
|
|
87
|
-
closePort(state.current.openedPortName);
|
|
88
|
-
|
|
97
|
+
closePort(state.current.openedPortName);
|
|
98
|
+
// close websocket
|
|
89
99
|
if (socket.current) {
|
|
90
100
|
socket.current.close();
|
|
91
101
|
socket.current = null;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
|
|
102
|
+
}
|
|
103
|
+
// clear ping interval
|
|
95
104
|
if (pingInterval.current) {
|
|
96
105
|
window.clearInterval(pingInterval.current);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
106
|
+
}
|
|
107
|
+
// reset states
|
|
100
108
|
setPorts([]);
|
|
101
109
|
setOpenedPortName(null);
|
|
102
110
|
setAgentConnectionStatus('disconnected');
|
|
@@ -105,21 +113,19 @@ const useArduino = ({
|
|
|
105
113
|
/**
|
|
106
114
|
* Send command to arduino agent.
|
|
107
115
|
*/
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const send = (command, ...args) => {
|
|
116
|
+
var send = function send(command) {
|
|
111
117
|
var _a, _b;
|
|
112
|
-
|
|
113
118
|
if ((_a = socket.current) === null || _a === void 0 ? void 0 : _a.connected) {
|
|
114
|
-
(
|
|
119
|
+
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
120
|
+
args[_key - 1] = arguments[_key];
|
|
121
|
+
}
|
|
122
|
+
(_b = socket.current) === null || _b === void 0 ? void 0 : _b.emit('command', [command].concat(args).join(' '));
|
|
115
123
|
}
|
|
116
124
|
};
|
|
117
125
|
/**
|
|
118
126
|
* Send text to arduino agent.
|
|
119
127
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const sendText = text => {
|
|
128
|
+
var sendText = function sendText(text) {
|
|
123
129
|
if (state.current.openedPortName) {
|
|
124
130
|
send('send', state.current.openedPortName, text);
|
|
125
131
|
}
|
|
@@ -127,9 +133,7 @@ const useArduino = ({
|
|
|
127
133
|
/**
|
|
128
134
|
* Open port.
|
|
129
135
|
*/
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
const openPort = portName => {
|
|
136
|
+
var openPort = function openPort(portName) {
|
|
133
137
|
if (portName) {
|
|
134
138
|
setOpenedPortName(portName);
|
|
135
139
|
send('open', portName, preference.baudRate);
|
|
@@ -138,9 +142,7 @@ const useArduino = ({
|
|
|
138
142
|
/**
|
|
139
143
|
* Close port.
|
|
140
144
|
*/
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const closePort = portName => {
|
|
145
|
+
var closePort = function closePort(portName) {
|
|
144
146
|
if (portName) {
|
|
145
147
|
send('close', portName);
|
|
146
148
|
}
|
|
@@ -148,66 +150,78 @@ const useArduino = ({
|
|
|
148
150
|
/**
|
|
149
151
|
* Send list command to the agent.
|
|
150
152
|
*/
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
153
|
+
var ping = /*#__PURE__*/function () {
|
|
154
|
+
var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
|
|
155
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
|
|
156
|
+
while (1) switch (_context.prev = _context.next) {
|
|
157
|
+
case 0:
|
|
158
|
+
if (agentHttpPort) {
|
|
159
|
+
_context.next = 2;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
return _context.abrupt("return");
|
|
163
|
+
case 2:
|
|
164
|
+
if (!state.current.uploadingPortName) {
|
|
165
|
+
_context.next = 4;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
return _context.abrupt("return");
|
|
169
|
+
case 4:
|
|
170
|
+
_context.prev = 4;
|
|
171
|
+
_context.next = 7;
|
|
172
|
+
return fetch(arduino.createArduinoUrl({
|
|
173
|
+
protocol: 'http',
|
|
174
|
+
pathname: '/info',
|
|
175
|
+
port: agentHttpPort
|
|
176
|
+
}));
|
|
177
|
+
case 7:
|
|
178
|
+
send('list');
|
|
179
|
+
_context.next = 14;
|
|
180
|
+
break;
|
|
181
|
+
case 10:
|
|
182
|
+
_context.prev = 10;
|
|
183
|
+
_context.t0 = _context["catch"](4);
|
|
184
|
+
// if ping fails, reconnect the agent.
|
|
185
|
+
reload();
|
|
186
|
+
setAgentConnectionStatus('reconnecting');
|
|
187
|
+
case 14:
|
|
188
|
+
case "end":
|
|
189
|
+
return _context.stop();
|
|
190
|
+
}
|
|
191
|
+
}, _callee, null, [[4, 10]]);
|
|
192
|
+
}));
|
|
193
|
+
return function ping() {
|
|
194
|
+
return _ref2.apply(this, arguments);
|
|
195
|
+
};
|
|
196
|
+
}();
|
|
175
197
|
/**
|
|
176
198
|
* Upload hex file to the agent.
|
|
177
199
|
*/
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
const uploadHexFile = hexFile => {
|
|
200
|
+
var uploadHexFile = function uploadHexFile(hexFile) {
|
|
181
201
|
if (!agentHttpPort || !state.current.openedPortName) {
|
|
182
202
|
return;
|
|
183
203
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
204
|
+
var port = state.current.ports.find(function (port) {
|
|
205
|
+
return port.Name === state.current.openedPortName;
|
|
206
|
+
});
|
|
187
207
|
if (!port) {
|
|
188
208
|
return;
|
|
189
209
|
}
|
|
190
|
-
|
|
191
210
|
if (!hexFile.filename.includes(arduino.getArduinoBoardType(port) || 'not found')) {
|
|
192
211
|
return;
|
|
193
212
|
}
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
213
|
+
setUploadProgress('receivedHex');
|
|
214
|
+
// if port opened, close it.
|
|
197
215
|
state.current.uploadingPortName = state.current.openedPortName;
|
|
198
|
-
|
|
199
216
|
if (port.IsOpen) {
|
|
200
217
|
closePort(state.current.openedPortName);
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
const boradType = arduino.getArduinoBoardType(port);
|
|
206
|
-
|
|
218
|
+
}
|
|
219
|
+
// get board type and content.
|
|
220
|
+
var content = arduino.getFileContent(hexFile.data);
|
|
221
|
+
var boradType = arduino.getArduinoBoardType(port);
|
|
207
222
|
if (!boradType) {
|
|
208
223
|
return;
|
|
209
224
|
}
|
|
210
|
-
|
|
211
225
|
fetch(arduino.createArduinoUrl({
|
|
212
226
|
protocol: 'http',
|
|
213
227
|
pathname: '/upload',
|
|
@@ -229,24 +243,24 @@ const useArduino = ({
|
|
|
229
243
|
extrafiles: [],
|
|
230
244
|
signature: arduino$1.AVR_SIGNATURE[boradType]
|
|
231
245
|
})
|
|
232
|
-
}).then(
|
|
233
|
-
|
|
246
|
+
}).then(function (res) {
|
|
247
|
+
return res.json();
|
|
248
|
+
}).then(function () {
|
|
249
|
+
// no response (202 accepted)
|
|
250
|
+
}).catch(function () {
|
|
251
|
+
//
|
|
234
252
|
});
|
|
235
253
|
};
|
|
236
254
|
/**
|
|
237
255
|
* Handler called when user (re-)selects arduino device.
|
|
238
256
|
*/
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
const onSelectPort = name => {
|
|
257
|
+
var onSelectPort = function onSelectPort(name) {
|
|
242
258
|
if (name === state.current.openedPortName) {
|
|
243
259
|
return;
|
|
244
260
|
}
|
|
245
|
-
|
|
246
261
|
if (state.current.openedPortName) {
|
|
247
262
|
closePort(state.current.openedPortName);
|
|
248
263
|
}
|
|
249
|
-
|
|
250
264
|
if (name !== null) {
|
|
251
265
|
openPort(name);
|
|
252
266
|
}
|
|
@@ -254,19 +268,20 @@ const useArduino = ({
|
|
|
254
268
|
/**
|
|
255
269
|
* Handle arduino agent websocket message.
|
|
256
270
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const handleAgentMsg = msg => {
|
|
271
|
+
var handleAgentMsg = function handleAgentMsg(msg) {
|
|
260
272
|
// Ports
|
|
261
273
|
if ('Ports' in msg && msg.Network === false) {
|
|
262
274
|
handleAgentMsgPorts(msg);
|
|
263
|
-
}
|
|
275
|
+
}
|
|
276
|
+
// Cmd
|
|
264
277
|
else if ('Cmd' in msg && 'Desc' in msg) {
|
|
265
278
|
handleAgentMsgCmd(msg);
|
|
266
|
-
}
|
|
279
|
+
}
|
|
280
|
+
// Programmer Status
|
|
267
281
|
else if ('ProgrammerStatus' in msg) {
|
|
268
282
|
handleAgentMsgProgram(msg);
|
|
269
|
-
}
|
|
283
|
+
}
|
|
284
|
+
// D
|
|
270
285
|
else if ('D' in msg) {
|
|
271
286
|
handleAgentMsgD(msg);
|
|
272
287
|
}
|
|
@@ -274,16 +289,16 @@ const useArduino = ({
|
|
|
274
289
|
/**
|
|
275
290
|
* Handle arduino agent websocket message. (Ports)
|
|
276
291
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
setPorts(msg.Ports); // if port not opened, open new port.
|
|
281
|
-
|
|
292
|
+
var handleAgentMsgPorts = function handleAgentMsgPorts(msg) {
|
|
293
|
+
setPorts(msg.Ports);
|
|
294
|
+
// if port not opened, open new port.
|
|
282
295
|
if (!state.current.openedPortName && !state.current.uploadingPortName) {
|
|
283
|
-
|
|
284
|
-
|
|
296
|
+
var prefPort = msg.Ports.find(function (port) {
|
|
297
|
+
return port.Name === preference.port;
|
|
298
|
+
});
|
|
299
|
+
var targetPort = prefPort ? prefPort :
|
|
300
|
+
// if preference port not found, open first port.
|
|
285
301
|
msg.Ports.length > 0 ? msg.Ports[0] : null;
|
|
286
|
-
|
|
287
302
|
if (targetPort) {
|
|
288
303
|
openPort(targetPort.Name);
|
|
289
304
|
}
|
|
@@ -292,21 +307,19 @@ const useArduino = ({
|
|
|
292
307
|
/**
|
|
293
308
|
* Handle arduino agent websocket message. (Cmd)
|
|
294
309
|
*/
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
const handleAgentMsgCmd = msg => {
|
|
310
|
+
var handleAgentMsgCmd = function handleAgentMsgCmd(msg) {
|
|
298
311
|
switch (msg.Cmd) {
|
|
299
312
|
case 'Open':
|
|
300
313
|
setOpenedPortName(msg.Port);
|
|
301
|
-
setPreference(
|
|
302
|
-
|
|
303
|
-
|
|
314
|
+
setPreference(function (prev) {
|
|
315
|
+
return Object.assign(Object.assign({}, prev), {
|
|
316
|
+
port: msg.Port
|
|
317
|
+
});
|
|
318
|
+
});
|
|
304
319
|
break;
|
|
305
|
-
|
|
306
320
|
case 'OpenFail':
|
|
307
321
|
closePort(msg.Port);
|
|
308
322
|
break;
|
|
309
|
-
|
|
310
323
|
case 'Close':
|
|
311
324
|
setOpenedPortName(null);
|
|
312
325
|
break;
|
|
@@ -315,209 +328,268 @@ const useArduino = ({
|
|
|
315
328
|
/**
|
|
316
329
|
* Handle arduino agent websocket message. (ProgrammerStatus)
|
|
317
330
|
*/
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const handleAgentMsgProgram = msg => {
|
|
331
|
+
var handleAgentMsgProgram = function handleAgentMsgProgram(msg) {
|
|
321
332
|
switch (msg.ProgrammerStatus) {
|
|
322
333
|
case 'Starting':
|
|
323
334
|
setUploadProgress('starting');
|
|
324
335
|
return;
|
|
325
|
-
|
|
326
336
|
case 'Busy':
|
|
327
337
|
setUploadProgress('busy');
|
|
328
338
|
return;
|
|
329
|
-
|
|
330
339
|
case 'Done':
|
|
331
340
|
setUploadProgress('done');
|
|
332
341
|
openPort(state.current.uploadingPortName);
|
|
333
342
|
state.current.uploadingPortName = null;
|
|
334
|
-
window.setTimeout(
|
|
343
|
+
window.setTimeout(function () {
|
|
344
|
+
return setUploadProgress('ready');
|
|
345
|
+
}, arduino$1.DISABLE_TIME_AFTER_UPLOAD);
|
|
335
346
|
return;
|
|
336
|
-
|
|
337
347
|
case 'Error':
|
|
338
348
|
setUploadProgress('error');
|
|
339
349
|
openPort(state.current.uploadingPortName);
|
|
340
350
|
state.current.uploadingPortName = null;
|
|
341
|
-
window.setTimeout(
|
|
351
|
+
window.setTimeout(function () {
|
|
352
|
+
return setUploadProgress('ready');
|
|
353
|
+
}, arduino$1.DISABLE_TIME_AFTER_UPLOAD);
|
|
342
354
|
return;
|
|
343
355
|
}
|
|
344
356
|
};
|
|
345
357
|
/**
|
|
346
358
|
* Handle arduino agent websocket message. (D)
|
|
347
359
|
*/
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
const handleAgentMsgD = msg => {
|
|
360
|
+
var handleAgentMsgD = function handleAgentMsgD(msg) {
|
|
351
361
|
writeTerminal(msg.D);
|
|
352
|
-
};
|
|
362
|
+
};
|
|
363
|
+
//
|
|
353
364
|
// Sync `openedPortName` recoil state with internal ref.
|
|
354
365
|
//
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
React.useEffect(() => {
|
|
366
|
+
React.useEffect(function () {
|
|
358
367
|
state.current.openedPortName = openedPortName;
|
|
359
|
-
}, [openedPortName]);
|
|
368
|
+
}, [openedPortName]);
|
|
369
|
+
//
|
|
360
370
|
// Sync `ports` recoil state with internal ref.
|
|
361
371
|
//
|
|
362
|
-
|
|
363
|
-
React.useEffect(() => {
|
|
372
|
+
React.useEffect(function () {
|
|
364
373
|
state.current.ports = ports;
|
|
365
|
-
}, [ports]);
|
|
374
|
+
}, [ports]);
|
|
375
|
+
//
|
|
366
376
|
// Discover arduino agent port.
|
|
367
377
|
//
|
|
368
|
-
|
|
369
|
-
React.useEffect(() => {
|
|
378
|
+
React.useEffect(function () {
|
|
370
379
|
if (!enabled) {
|
|
371
380
|
return;
|
|
372
381
|
}
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
let reconnectTimeout = null;
|
|
382
|
+
var abortCtrl = new AbortController();
|
|
383
|
+
var reconnectTimeout = null;
|
|
376
384
|
/** Scan port. */
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
385
|
+
var _scan = /*#__PURE__*/function () {
|
|
386
|
+
var _ref3 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee2() {
|
|
387
|
+
var _iterator, _step, port;
|
|
388
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
389
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
390
|
+
case 0:
|
|
391
|
+
_iterator = _rollupPluginBabelHelpers.createForOfIteratorHelper(arduino$1.ARDUINO_AGENT_PORTS);
|
|
392
|
+
_context2.prev = 1;
|
|
393
|
+
_iterator.s();
|
|
394
|
+
case 3:
|
|
395
|
+
if ((_step = _iterator.n()).done) {
|
|
396
|
+
_context2.next = 17;
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
port = _step.value;
|
|
400
|
+
_context2.prev = 5;
|
|
401
|
+
_context2.next = 8;
|
|
402
|
+
return fetch(arduino.createArduinoUrl({
|
|
403
|
+
protocol: 'http',
|
|
404
|
+
pathname: '/info',
|
|
405
|
+
port: port
|
|
406
|
+
}), {
|
|
407
|
+
signal: abortCtrl.signal
|
|
408
|
+
});
|
|
409
|
+
case 8:
|
|
410
|
+
return _context2.abrupt("return", port);
|
|
411
|
+
case 11:
|
|
412
|
+
_context2.prev = 11;
|
|
413
|
+
_context2.t0 = _context2["catch"](5);
|
|
414
|
+
if (!(_context2.t0.name === 'AbortError')) {
|
|
415
|
+
_context2.next = 15;
|
|
416
|
+
break;
|
|
417
|
+
}
|
|
418
|
+
throw _context2.t0;
|
|
419
|
+
case 15:
|
|
420
|
+
_context2.next = 3;
|
|
421
|
+
break;
|
|
422
|
+
case 17:
|
|
423
|
+
_context2.next = 22;
|
|
424
|
+
break;
|
|
425
|
+
case 19:
|
|
426
|
+
_context2.prev = 19;
|
|
427
|
+
_context2.t1 = _context2["catch"](1);
|
|
428
|
+
_iterator.e(_context2.t1);
|
|
429
|
+
case 22:
|
|
430
|
+
_context2.prev = 22;
|
|
431
|
+
_iterator.f();
|
|
432
|
+
return _context2.finish(22);
|
|
433
|
+
case 25:
|
|
434
|
+
return _context2.abrupt("return", null);
|
|
435
|
+
case 26:
|
|
436
|
+
case "end":
|
|
437
|
+
return _context2.stop();
|
|
393
438
|
}
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
439
|
+
}, _callee2, null, [[1, 19, 22, 25], [5, 11]]);
|
|
440
|
+
}));
|
|
441
|
+
return function _scan() {
|
|
442
|
+
return _ref3.apply(this, arguments);
|
|
443
|
+
};
|
|
444
|
+
}();
|
|
399
445
|
/** Scan port to discover until found. */
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
446
|
+
var _discover = /*#__PURE__*/function () {
|
|
447
|
+
var _ref4 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee3() {
|
|
448
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
449
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
450
|
+
case 0:
|
|
451
|
+
void _scan().then(function (port) {
|
|
452
|
+
// if port found, stop scanning and set port
|
|
453
|
+
if (port) {
|
|
454
|
+
setAgentHttpPort(port);
|
|
455
|
+
}
|
|
456
|
+
// or start scanning again
|
|
457
|
+
else {
|
|
458
|
+
reconnectTimeout = window.setTimeout(function () {
|
|
459
|
+
return void _discover();
|
|
460
|
+
}, AGENT_REDISCOVER_DELAY);
|
|
461
|
+
}
|
|
462
|
+
}).catch(function () {
|
|
463
|
+
return void 0;
|
|
464
|
+
});
|
|
465
|
+
case 1:
|
|
466
|
+
case "end":
|
|
467
|
+
return _context3.stop();
|
|
468
|
+
}
|
|
469
|
+
}, _callee3);
|
|
470
|
+
}));
|
|
471
|
+
return function _discover() {
|
|
472
|
+
return _ref4.apply(this, arguments);
|
|
473
|
+
};
|
|
474
|
+
}();
|
|
475
|
+
// start scanning...
|
|
415
476
|
setAgentConnectionStatus('connecting');
|
|
416
477
|
void _discover();
|
|
417
|
-
return ()
|
|
478
|
+
return function () {
|
|
418
479
|
abortCtrl.abort();
|
|
419
|
-
|
|
420
480
|
if (reconnectTimeout) {
|
|
421
481
|
window.clearTimeout(reconnectTimeout);
|
|
422
482
|
}
|
|
423
|
-
|
|
424
483
|
setAgentHttpPort(null);
|
|
425
484
|
};
|
|
426
|
-
},
|
|
427
|
-
|
|
485
|
+
},
|
|
486
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
487
|
+
[enabled]);
|
|
488
|
+
//
|
|
428
489
|
// Initialize arduino agent websocket.
|
|
429
490
|
//
|
|
430
|
-
|
|
431
|
-
React.useEffect(() => {
|
|
491
|
+
React.useEffect(function () {
|
|
432
492
|
if (!enabled || !agentHttpPort) {
|
|
433
493
|
return;
|
|
434
494
|
}
|
|
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
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
495
|
+
var _init = /*#__PURE__*/function () {
|
|
496
|
+
var _ref5 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee4() {
|
|
497
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
498
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
499
|
+
case 0:
|
|
500
|
+
_context4.next = 2;
|
|
501
|
+
return new Promise(function (r) {
|
|
502
|
+
return window.setTimeout(r, AGENT_INIT_DELAY);
|
|
503
|
+
});
|
|
504
|
+
case 2:
|
|
505
|
+
setAgentConnectionStatus('connecting');
|
|
506
|
+
// connect socket.io-client to the agent.
|
|
507
|
+
socket.current = io__default["default"](arduino.createArduinoUrl({
|
|
508
|
+
protocol: 'ws',
|
|
509
|
+
port: agentHttpPort
|
|
510
|
+
}));
|
|
511
|
+
// agent - on message
|
|
512
|
+
socket.current.on('message', function (message) {
|
|
513
|
+
try {
|
|
514
|
+
var msg = JSON.parse(message);
|
|
515
|
+
handleAgentMsg(msg);
|
|
516
|
+
} catch (e) {
|
|
517
|
+
// console.warn(e);
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
// agent - on connect
|
|
521
|
+
_context4.next = 7;
|
|
522
|
+
return new Promise(function (resolve) {
|
|
523
|
+
var _a;
|
|
524
|
+
return (_a = socket.current) === null || _a === void 0 ? void 0 : _a.on('connect', resolve);
|
|
525
|
+
}).then(ping).then(function () {
|
|
526
|
+
var _a, _b, _c, _d, _e;
|
|
527
|
+
(_a = socket.current) === null || _a === void 0 ? void 0 : _a.emit('command', 'downloadtool windows-drivers latest arduino keep');
|
|
528
|
+
(_b = socket.current) === null || _b === void 0 ? void 0 : _b.emit('command', 'downloadtool bossac 1.7.0 arduino keep');
|
|
529
|
+
(_c = socket.current) === null || _c === void 0 ? void 0 : _c.emit('command', 'downloadtool fwupdater latest arduino keep');
|
|
530
|
+
(_d = socket.current) === null || _d === void 0 ? void 0 : _d.emit('command', 'downloadtool rp2040tools latest arduino keep');
|
|
531
|
+
(_e = socket.current) === null || _e === void 0 ? void 0 : _e.emit('command', 'downloadtool avrdude 6.3.0-arduino15 arduino keep');
|
|
532
|
+
});
|
|
533
|
+
case 7:
|
|
534
|
+
setAgentConnectionStatus('connected');
|
|
535
|
+
pingInterval.current = window.setInterval(function () {
|
|
536
|
+
return void ping();
|
|
537
|
+
}, AGENT_CHECK_PING_INTERVAL);
|
|
538
|
+
case 9:
|
|
539
|
+
case "end":
|
|
540
|
+
return _context4.stop();
|
|
541
|
+
}
|
|
542
|
+
}, _callee4);
|
|
543
|
+
}));
|
|
544
|
+
return function _init() {
|
|
545
|
+
return _ref5.apply(this, arguments);
|
|
546
|
+
};
|
|
547
|
+
}();
|
|
470
548
|
void _init();
|
|
471
|
-
return ()
|
|
549
|
+
return function () {
|
|
472
550
|
reset();
|
|
473
551
|
};
|
|
474
|
-
},
|
|
475
|
-
|
|
476
|
-
|
|
552
|
+
},
|
|
553
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
554
|
+
[enabled, agentHttpPort,
|
|
555
|
+
// reload agent on port or baud rate change
|
|
556
|
+
preference.port, preference.baudRate]);
|
|
557
|
+
//
|
|
477
558
|
// Print message to terminal according to the message type.
|
|
478
559
|
//
|
|
479
|
-
|
|
480
|
-
React.useEffect(() => {
|
|
560
|
+
React.useEffect(function () {
|
|
481
561
|
if (previousUploadProgress === uploadProgress) {
|
|
482
562
|
return;
|
|
483
563
|
}
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
writeTerminal(`\x1b[1m\x1b[38;5;221m${text}\x1b[0m`);
|
|
564
|
+
var _write = function _write(text) {
|
|
565
|
+
writeTerminal("\x1B[1m\x1B[38;5;221m".concat(text, "\x1B[0m"));
|
|
487
566
|
};
|
|
488
|
-
|
|
489
567
|
switch (uploadProgress) {
|
|
490
568
|
case 'receivedHex':
|
|
491
569
|
_write('/* 컴파일이 완료되었습니다. */\n');
|
|
492
|
-
|
|
493
570
|
return;
|
|
494
|
-
|
|
495
571
|
case 'starting':
|
|
496
572
|
_write('/* 업로드를 시작합니다. */\n');
|
|
497
|
-
|
|
498
573
|
return;
|
|
499
|
-
|
|
500
574
|
case 'busy':
|
|
501
575
|
_write('/* 업로드 중입니다... */\n');
|
|
502
|
-
|
|
503
576
|
return;
|
|
504
|
-
|
|
505
577
|
case 'done':
|
|
506
578
|
_write('/* 업로드가 완료되었습니다. */\n');
|
|
507
|
-
|
|
508
579
|
return;
|
|
509
|
-
|
|
510
580
|
case 'error':
|
|
511
581
|
_write('/* 에러가 발생했습니다. */\n');
|
|
512
|
-
|
|
513
582
|
return;
|
|
514
583
|
}
|
|
515
|
-
},
|
|
584
|
+
},
|
|
585
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
516
586
|
[previousUploadProgress, uploadProgress]);
|
|
517
|
-
setOnSelectPort(()
|
|
587
|
+
setOnSelectPort(function () {
|
|
588
|
+
return onSelectPort;
|
|
589
|
+
});
|
|
590
|
+
//
|
|
518
591
|
//
|
|
519
592
|
//
|
|
520
|
-
|
|
521
593
|
_return.current.init = init;
|
|
522
594
|
_return.current.destroy = destroy;
|
|
523
595
|
_return.current.reload = reload;
|