@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
|
@@ -2,19 +2,19 @@ import { Text, Flex, IconButton } from '@elice/blocks';
|
|
|
2
2
|
import { base } from '@elice/design-tokens';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
var StyledModalWrapper = styled.div.withConfig({
|
|
6
6
|
componentId: "sc-1ej7kso-0"
|
|
7
7
|
})(["position:relative;display:flex;flex-flow:column nowrap;width:90vw;height:90vh;padding:0;background-color:", ";border-radius:0.375rem;"], base.color.gray8);
|
|
8
|
-
|
|
8
|
+
var StyledModalHeader = styled(Text).withConfig({
|
|
9
9
|
componentId: "sc-1ej7kso-1"
|
|
10
10
|
})(["flex:0 1 auto;width:100%;height:3.25rem;min-height:3.25rem;line-height:3.25rem;border-top-left-radius:0.375rem;border-top-right-radius:0.375rem;border-bottom:1px solid ", ";text-align:center;color:", ";"], base.color.navy9, base.color.white);
|
|
11
|
-
|
|
11
|
+
var StyledModalBody = styled.div.withConfig({
|
|
12
12
|
componentId: "sc-1ej7kso-2"
|
|
13
13
|
})(["position:relative;flex:1 1 auto;width:100%;height:80%;"]);
|
|
14
|
-
|
|
14
|
+
var StyledModalFooter = styled(Flex).withConfig({
|
|
15
15
|
componentId: "sc-1ej7kso-3"
|
|
16
16
|
})(["flex:0 1 auto;width:100%;height:3.75rem;min-height:3.75rem;border-bottom-left-radius:0.375rem;border-bottom-right-radius:0.375rem;border-top:1px solid ", ";padding:0.5rem 1.5rem;overflow:hidden;text-align:right;align-items:center;justify-content:flex-end;"], base.color.navy9);
|
|
17
|
-
|
|
17
|
+
var StyledCloseButton = styled(IconButton).withConfig({
|
|
18
18
|
componentId: "sc-1ej7kso-4"
|
|
19
19
|
})(["position:absolute;top:0;right:0;color:", " !important;"], base.color.gray4);
|
|
20
20
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React, { forwardRef } from 'react';
|
|
2
3
|
import { base } from '@elice/design-tokens';
|
|
3
4
|
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
|
@@ -15,120 +16,109 @@ import initMonacoLanguages from './editor-languages/index.js';
|
|
|
15
16
|
import { useEditorOptions } from './hooks/useEditorOptions.js';
|
|
16
17
|
import { getLanguageFromFilename } from './utils/monacoLanguage.js';
|
|
17
18
|
|
|
19
|
+
//
|
|
18
20
|
//
|
|
19
21
|
//
|
|
20
22
|
// pre-init monaco editor
|
|
21
|
-
|
|
22
23
|
initMonacoLanguages();
|
|
23
|
-
initMonacoGrammars().catch(console.warn);
|
|
24
|
+
initMonacoGrammars().catch(console.warn);
|
|
24
25
|
//
|
|
25
26
|
//
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
//
|
|
28
|
+
var StyledMonacoEditorWrapper = styled.div.withConfig({
|
|
28
29
|
componentId: "sc-1j3uyex-0"
|
|
29
30
|
})(["width:100%;height:100%;"]);
|
|
30
|
-
|
|
31
|
+
var StyledMonacoEditor = styled.div.withConfig({
|
|
31
32
|
componentId: "sc-1j3uyex-1"
|
|
32
33
|
})(["width:100%;height:100%;background-color:", ";", ""], base.color.navy9, cssRemoteMarker);
|
|
33
34
|
/**
|
|
34
35
|
*
|
|
35
36
|
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
37
|
+
var MonacoEditor = forwardRef(function (_ref, ref) {
|
|
38
|
+
var _ref$defaultValue = _ref.defaultValue,
|
|
39
|
+
defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
|
|
40
|
+
_ref$filename = _ref.filename,
|
|
41
|
+
filename = _ref$filename === void 0 ? '/noname.txt' : _ref$filename,
|
|
42
|
+
_ref$preference = _ref.preference,
|
|
43
|
+
preference = _ref$preference === void 0 ? DEFAULT_MONACO_EDITOR_PREFERENCE : _ref$preference,
|
|
44
|
+
_ref$markers = _ref.markers,
|
|
45
|
+
markers = _ref$markers === void 0 ? [] : _ref$markers,
|
|
46
|
+
_ref$width = _ref.width,
|
|
47
|
+
width = _ref$width === void 0 ? '100%' : _ref$width,
|
|
48
|
+
_ref$height = _ref.height,
|
|
49
|
+
height = _ref$height === void 0 ? '100%' : _ref$height,
|
|
50
|
+
_ref$noLanguageIntell = _ref.noLanguageIntellisense,
|
|
51
|
+
noLanguageIntellisense = _ref$noLanguageIntell === void 0 ? false : _ref$noLanguageIntell,
|
|
52
|
+
onLoad = _ref.onLoad,
|
|
53
|
+
onChange = _ref.onChange,
|
|
54
|
+
onSave = _ref.onSave,
|
|
55
|
+
onCursor = _ref.onCursor,
|
|
56
|
+
onScroll = _ref.onScroll,
|
|
57
|
+
onThemeChange = _ref.onThemeChange;
|
|
52
58
|
/** Ref of element which wraps editor. */
|
|
53
|
-
|
|
59
|
+
var editorElRef = React.useRef(null);
|
|
54
60
|
/** Ref of editor exposed APIs. */
|
|
55
|
-
|
|
56
|
-
const editorApis = React.useRef({});
|
|
61
|
+
var editorApis = React.useRef({});
|
|
57
62
|
/** Ref of monaco editor. */
|
|
58
|
-
|
|
59
|
-
const editor = React.useRef(null);
|
|
63
|
+
var editor = React.useRef(null);
|
|
60
64
|
/** Editor options. */
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
noLanguageIntellisense
|
|
65
|
+
var editorOptions = useEditorOptions({
|
|
66
|
+
width: width,
|
|
67
|
+
height: height,
|
|
68
|
+
preference: preference,
|
|
69
|
+
noLanguageIntellisense: noLanguageIntellisense
|
|
67
70
|
});
|
|
68
71
|
/** Ref for preventing change event. */
|
|
69
|
-
|
|
70
|
-
const suppress = React.useRef(false);
|
|
72
|
+
var suppress = React.useRef(false);
|
|
71
73
|
/** Is editor ready? */
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
var _React$useState = React.useState(false),
|
|
75
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
76
|
+
isReady = _React$useState2[0],
|
|
77
|
+
setReady = _React$useState2[1];
|
|
74
78
|
/**
|
|
75
79
|
* Get model of editor.
|
|
76
80
|
*/
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
const uri = monaco.Uri.file(filename || '/noname.txt');
|
|
81
|
+
var getMonacoModel = function getMonacoModel() {
|
|
82
|
+
var uri = monaco.Uri.file(filename || '/noname.txt');
|
|
80
83
|
return monaco.editor.getModel(uri);
|
|
81
84
|
};
|
|
82
85
|
/**
|
|
83
86
|
* Has editor undo/redo history?
|
|
84
87
|
* @public
|
|
85
88
|
*/
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
const hasHistory = () => {
|
|
89
|
+
var hasHistory = function hasHistory() {
|
|
89
90
|
var _a;
|
|
90
|
-
|
|
91
91
|
return (((_a = getMonacoModel()) === null || _a === void 0 ? void 0 : _a.getAlternativeVersionId()) || 0) > 1;
|
|
92
92
|
};
|
|
93
93
|
/**
|
|
94
94
|
* Clear editor undo/redo history.
|
|
95
95
|
* @public
|
|
96
96
|
*/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
const clearHistory = () => {
|
|
97
|
+
var clearHistory = function clearHistory() {
|
|
100
98
|
getMonacoModel();
|
|
101
99
|
};
|
|
102
100
|
/**
|
|
103
101
|
* Get current value of editor.
|
|
104
102
|
* @public
|
|
105
103
|
*/
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
const getValue = () => {
|
|
104
|
+
var getValue = function getValue() {
|
|
109
105
|
var _a;
|
|
110
|
-
|
|
111
106
|
return ((_a = getMonacoModel()) === null || _a === void 0 ? void 0 : _a.getValue()) || '';
|
|
112
107
|
};
|
|
113
108
|
/**
|
|
114
109
|
* Get value in range of editor.
|
|
115
110
|
* @public
|
|
116
111
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const getValueInRange = (from, to) => {
|
|
120
|
-
const model = getMonacoModel();
|
|
121
|
-
|
|
112
|
+
var getValueInRange = function getValueInRange(from, to) {
|
|
113
|
+
var model = getMonacoModel();
|
|
122
114
|
if (!model) {
|
|
123
115
|
return '';
|
|
124
116
|
}
|
|
125
|
-
|
|
126
117
|
if (from === to) {
|
|
127
118
|
return '';
|
|
128
119
|
}
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const endPosition = model.getPositionAt(to);
|
|
120
|
+
var startPosition = model.getPositionAt(from);
|
|
121
|
+
var endPosition = model.getPositionAt(to);
|
|
132
122
|
return model.getValueInRange({
|
|
133
123
|
startLineNumber: startPosition.lineNumber,
|
|
134
124
|
startColumn: startPosition.column,
|
|
@@ -140,22 +130,18 @@ const MonacoEditor = forwardRef(({
|
|
|
140
130
|
* Set (overwrite) value to editor.
|
|
141
131
|
* @public
|
|
142
132
|
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const setValue = newValue => {
|
|
133
|
+
var setValue = function setValue(newValue) {
|
|
146
134
|
if (!editor.current) {
|
|
147
135
|
return;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
|
|
136
|
+
}
|
|
137
|
+
// Replace value EOL as LF.
|
|
151
138
|
newValue = newValue.replace(/\r\n/g, '\n');
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
139
|
+
var uri = monaco.Uri.file(filename || '/noname.txt');
|
|
140
|
+
var model = monaco.editor.getModel(uri);
|
|
155
141
|
if (model && !model.isDisposed()) {
|
|
156
142
|
// Override EOL as LF to prevent error at Windows env.
|
|
157
|
-
model.setEOL(monaco.editor.EndOfLineSequence.LF);
|
|
158
|
-
|
|
143
|
+
model.setEOL(monaco.editor.EndOfLineSequence.LF);
|
|
144
|
+
// Overwirte current whole value with new one.
|
|
159
145
|
if (typeof newValue === 'string') {
|
|
160
146
|
suppress.current = true;
|
|
161
147
|
editor.current.pushUndoStop();
|
|
@@ -163,17 +149,20 @@ const MonacoEditor = forwardRef(({
|
|
|
163
149
|
range: model.getFullModelRange(),
|
|
164
150
|
text: newValue,
|
|
165
151
|
forceMoveMarkers: true
|
|
166
|
-
}], ()
|
|
152
|
+
}], function () {
|
|
153
|
+
return null;
|
|
154
|
+
});
|
|
167
155
|
editor.current.pushUndoStop();
|
|
168
156
|
suppress.current = false;
|
|
169
157
|
editor.current.setModel(model);
|
|
170
158
|
editor.current.focus();
|
|
171
159
|
}
|
|
172
|
-
}
|
|
160
|
+
}
|
|
161
|
+
// If model has not created yet for this file,
|
|
173
162
|
// create new model.
|
|
174
163
|
else {
|
|
175
|
-
|
|
176
|
-
|
|
164
|
+
var lang = getLanguageFromFilename(filename);
|
|
165
|
+
var newModel = monaco.editor.createModel(newValue, lang, uri);
|
|
177
166
|
newModel.setEOL(monaco.editor.EndOfLineSequence.LF);
|
|
178
167
|
editor.current.setModel(newModel);
|
|
179
168
|
}
|
|
@@ -182,26 +171,24 @@ const MonacoEditor = forwardRef(({
|
|
|
182
171
|
* Insert value at specific position.
|
|
183
172
|
* @public
|
|
184
173
|
*/
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
const insertValue = (offset, newValue) => {
|
|
174
|
+
var insertValue = function insertValue(offset, newValue) {
|
|
188
175
|
if (!editor.current) {
|
|
189
176
|
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
177
|
+
}
|
|
178
|
+
// Replace value EOL as LF.
|
|
193
179
|
newValue = newValue.replace(/\r\n/g, '\n');
|
|
194
|
-
|
|
195
|
-
|
|
180
|
+
var model = getMonacoModel();
|
|
196
181
|
if (model) {
|
|
197
|
-
|
|
182
|
+
var position = model.getPositionAt(offset);
|
|
198
183
|
suppress.current = true;
|
|
199
184
|
editor.current.pushUndoStop();
|
|
200
185
|
model.pushEditOperations([], [{
|
|
201
186
|
range: new monaco.Range(position.lineNumber, position.column, position.lineNumber, position.column),
|
|
202
187
|
text: newValue,
|
|
203
188
|
forceMoveMarkers: true
|
|
204
|
-
}], ()
|
|
189
|
+
}], function () {
|
|
190
|
+
return null;
|
|
191
|
+
});
|
|
205
192
|
editor.current.pushUndoStop();
|
|
206
193
|
suppress.current = false;
|
|
207
194
|
}
|
|
@@ -210,25 +197,23 @@ const MonacoEditor = forwardRef(({
|
|
|
210
197
|
* Remove value at specific range.
|
|
211
198
|
* @public
|
|
212
199
|
*/
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
const removeValue = (from, to) => {
|
|
200
|
+
var removeValue = function removeValue(from, to) {
|
|
216
201
|
if (!editor.current) {
|
|
217
202
|
return;
|
|
218
203
|
}
|
|
219
|
-
|
|
220
|
-
const model = getMonacoModel();
|
|
221
|
-
|
|
204
|
+
var model = getMonacoModel();
|
|
222
205
|
if (model) {
|
|
223
|
-
|
|
224
|
-
|
|
206
|
+
var startPosition = model.getPositionAt(from);
|
|
207
|
+
var endPosition = model.getPositionAt(to);
|
|
225
208
|
suppress.current = true;
|
|
226
209
|
editor.current.pushUndoStop();
|
|
227
210
|
model.pushEditOperations([], [{
|
|
228
211
|
range: new monaco.Range(startPosition.lineNumber, startPosition.column, endPosition.lineNumber, endPosition.column),
|
|
229
212
|
text: '',
|
|
230
213
|
forceMoveMarkers: true
|
|
231
|
-
}], ()
|
|
214
|
+
}], function () {
|
|
215
|
+
return null;
|
|
216
|
+
});
|
|
232
217
|
editor.current.pushUndoStop();
|
|
233
218
|
suppress.current = false;
|
|
234
219
|
}
|
|
@@ -237,33 +222,24 @@ const MonacoEditor = forwardRef(({
|
|
|
237
222
|
* Get offset of current cursor position.
|
|
238
223
|
* @public
|
|
239
224
|
*/
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
const getPositionOffset = () => {
|
|
225
|
+
var getPositionOffset = function getPositionOffset() {
|
|
243
226
|
var _a;
|
|
244
|
-
|
|
245
|
-
const model = getMonacoModel();
|
|
246
|
-
|
|
227
|
+
var model = getMonacoModel();
|
|
247
228
|
if (!editor.current || !model) {
|
|
248
229
|
return 0;
|
|
249
230
|
}
|
|
250
|
-
|
|
251
231
|
return model.getOffsetAt((_a = editor.current.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0));
|
|
252
232
|
};
|
|
253
233
|
/**
|
|
254
234
|
* Set selection of editor with specific range.
|
|
255
235
|
* @public
|
|
256
236
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const setSelection = (from, to) => {
|
|
237
|
+
var setSelection = function setSelection(from, to) {
|
|
260
238
|
var _a;
|
|
261
|
-
|
|
262
|
-
const model = getMonacoModel();
|
|
263
|
-
|
|
239
|
+
var model = getMonacoModel();
|
|
264
240
|
if (model) {
|
|
265
|
-
|
|
266
|
-
|
|
241
|
+
var markerStartPosition = model.getPositionAt(from);
|
|
242
|
+
var markerEndPosition = model.getPositionAt(to);
|
|
267
243
|
(_a = editor.current) === null || _a === void 0 ? void 0 : _a.setSelection(new monaco.Range(markerStartPosition.lineNumber, markerStartPosition.column, markerEndPosition.lineNumber, markerEndPosition.column));
|
|
268
244
|
}
|
|
269
245
|
};
|
|
@@ -271,80 +247,74 @@ const MonacoEditor = forwardRef(({
|
|
|
271
247
|
* Scroll editor to specific `scrollTop`.
|
|
272
248
|
* @public
|
|
273
249
|
*/
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
const scrollTo = scrollTop => {
|
|
250
|
+
var scrollTo = function scrollTo(scrollTop) {
|
|
277
251
|
var _a;
|
|
278
|
-
|
|
279
252
|
(_a = editor.current) === null || _a === void 0 ? void 0 : _a.setScrollTop(scrollTop);
|
|
280
|
-
};
|
|
253
|
+
};
|
|
254
|
+
//
|
|
281
255
|
// Editor hooks.
|
|
282
256
|
//
|
|
283
|
-
|
|
284
|
-
|
|
285
257
|
useMonacoOptions(editor, editorOptions);
|
|
286
258
|
useMonacoTheme(preference.theme, onThemeChange);
|
|
287
259
|
useMonacoEventChange(editor, onChange, suppress, [isReady]);
|
|
288
260
|
useMonacoEventCursor(editor, onCursor, [isReady]);
|
|
289
261
|
useMonacoEventScroll(editor, onScroll, [isReady]);
|
|
290
|
-
|
|
262
|
+
var remoteMarker = useMonacoMarkers(editor, markers);
|
|
263
|
+
//
|
|
291
264
|
// Init and dispose editor.
|
|
292
265
|
//
|
|
293
|
-
|
|
294
|
-
React.useEffect(() => {
|
|
266
|
+
React.useEffect(function () {
|
|
295
267
|
try {
|
|
296
268
|
if (!editorElRef.current) {
|
|
297
269
|
return;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
|
|
270
|
+
}
|
|
271
|
+
// create monaco editor instance and render it.
|
|
301
272
|
editor.current = monaco.editor.create(editorElRef.current, Object.assign(Object.assign({}, editorOptions), {
|
|
302
273
|
value: defaultValue,
|
|
303
274
|
language: getLanguageFromFilename(filename)
|
|
304
|
-
}));
|
|
305
|
-
|
|
306
|
-
editor.current.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, ()
|
|
275
|
+
}));
|
|
276
|
+
// add keyboard shortcut.
|
|
277
|
+
editor.current.addCommand(monaco.KeyMod.CtrlCmd | monaco.KeyCode.KeyS, function () {
|
|
307
278
|
var _a, _b, _c;
|
|
308
|
-
|
|
309
279
|
(_b = (_a = editor.current) === null || _a === void 0 ? void 0 : _a.getAction('editor.action.formatDocument')) === null || _b === void 0 ? void 0 : _b.run();
|
|
310
|
-
|
|
311
280
|
if (typeof onSave === 'function') {
|
|
312
|
-
|
|
281
|
+
var content = ((_c = getMonacoModel()) === null || _c === void 0 ? void 0 : _c.getValue()) || '';
|
|
313
282
|
onSave(content);
|
|
314
283
|
}
|
|
315
284
|
});
|
|
316
|
-
remoteMarker.init();
|
|
317
|
-
|
|
285
|
+
remoteMarker.init();
|
|
286
|
+
// emit on load event.
|
|
318
287
|
if (typeof onLoad === 'function') {
|
|
319
288
|
onLoad(editor.current);
|
|
320
289
|
}
|
|
321
|
-
|
|
322
290
|
setReady(true);
|
|
323
291
|
} catch (_) {
|
|
324
292
|
setReady(false);
|
|
325
293
|
}
|
|
326
|
-
|
|
327
|
-
return () => {
|
|
294
|
+
return function () {
|
|
328
295
|
var _a;
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
296
|
+
setReady(false);
|
|
297
|
+
// dispose remote marker
|
|
298
|
+
remoteMarker.dispose();
|
|
299
|
+
// dispose editor
|
|
334
300
|
if (typeof ((_a = editor.current) === null || _a === void 0 ? void 0 : _a.dispose) === 'function') {
|
|
335
301
|
editor.current.dispose();
|
|
336
302
|
}
|
|
337
303
|
};
|
|
338
|
-
},
|
|
339
|
-
|
|
304
|
+
},
|
|
305
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
306
|
+
[]);
|
|
307
|
+
//
|
|
340
308
|
// Set value whenevet filename or value changed.
|
|
341
309
|
//
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
310
|
+
React.useEffect(function () {
|
|
311
|
+
return setValue(defaultValue);
|
|
312
|
+
},
|
|
313
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
314
|
+
[filename, defaultValue]);
|
|
315
|
+
//
|
|
345
316
|
//
|
|
346
317
|
//
|
|
347
|
-
|
|
348
318
|
editorApis.current.editor = editor.current;
|
|
349
319
|
editorApis.current.getMonacoModel = getMonacoModel;
|
|
350
320
|
editorApis.current.hasHistory = hasHistory;
|
|
@@ -357,14 +327,16 @@ const MonacoEditor = forwardRef(({
|
|
|
357
327
|
editorApis.current.getPositionOffset = getPositionOffset;
|
|
358
328
|
editorApis.current.setSelection = setSelection;
|
|
359
329
|
editorApis.current.scrollTo = scrollTo;
|
|
360
|
-
React.useImperativeHandle(ref, ()
|
|
330
|
+
React.useImperativeHandle(ref, function () {
|
|
331
|
+
return editorApis.current;
|
|
332
|
+
}, [editorApis]);
|
|
333
|
+
//
|
|
361
334
|
//
|
|
362
335
|
//
|
|
363
|
-
|
|
364
336
|
return React.createElement(StyledMonacoEditorWrapper, null, React.createElement(StyledMonacoEditor, {
|
|
365
337
|
style: {
|
|
366
|
-
width,
|
|
367
|
-
height
|
|
338
|
+
width: width,
|
|
339
|
+
height: height
|
|
368
340
|
},
|
|
369
341
|
ref: editorElRef
|
|
370
342
|
}));
|
|
@@ -8,12 +8,14 @@ import '../exercise-shimmer/ExerciseFileTreeListItemShimmer.js';
|
|
|
8
8
|
|
|
9
9
|
//
|
|
10
10
|
//
|
|
11
|
-
|
|
12
|
-
const AsyncMonacoEditor = React.lazy(() => FlutterApp.checkWebview() ? import('./MonacoEditorMobile.js') : import('./MonacoEditor.js')); //
|
|
13
11
|
//
|
|
12
|
+
var AsyncMonacoEditor = React.lazy(function () {
|
|
13
|
+
return FlutterApp.checkWebview() ? import('./MonacoEditorMobile.js') : import('./MonacoEditor.js');
|
|
14
|
+
});
|
|
14
15
|
//
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
var MonacoEditorLazy = forwardRef(function (props, ref) {
|
|
17
19
|
return React.createElement(React.Suspense, {
|
|
18
20
|
fallback: React.createElement(ExerciseFileShimmer, null)
|
|
19
21
|
}, React.createElement(AsyncMonacoEditor, Object.assign({}, props, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React, { forwardRef } from 'react';
|
|
2
3
|
import { useEnsuredForwardedRef } from 'react-use';
|
|
3
4
|
import * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
|
|
@@ -5,8 +6,8 @@ import MonacoEditor from './MonacoEditor.js';
|
|
|
5
6
|
|
|
6
7
|
//
|
|
7
8
|
//
|
|
8
|
-
|
|
9
|
-
|
|
9
|
+
//
|
|
10
|
+
var MOBILE_EDITOR_PREFERENCE = Object.freeze({
|
|
10
11
|
autoClosingBrackets: 'always',
|
|
11
12
|
cursorSmoothCaretAnimation: false,
|
|
12
13
|
detectIndentation: true,
|
|
@@ -19,34 +20,39 @@ const MOBILE_EDITOR_PREFERENCE = Object.freeze({
|
|
|
19
20
|
theme: 'elice',
|
|
20
21
|
wordWrap: 'on'
|
|
21
22
|
});
|
|
22
|
-
|
|
23
|
+
var IS_IOS = ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || navigator.userAgent.includes('Mac') && 'ontouchend' in document;
|
|
23
24
|
//
|
|
24
25
|
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
//
|
|
27
|
+
var MonacoEditorMobile = forwardRef(function (props, ref) {
|
|
28
|
+
var editorApiRef = useEnsuredForwardedRef(ref);
|
|
29
|
+
var _React$useState = React.useState(MOBILE_EDITOR_PREFERENCE),
|
|
30
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
31
|
+
preference = _React$useState2[0],
|
|
32
|
+
setPreference = _React$useState2[1];
|
|
29
33
|
/**
|
|
30
34
|
* Add a button to show keyboard on non-Apple devices.
|
|
31
35
|
*/
|
|
32
|
-
|
|
33
|
-
const addKeyboardButtonOverlayWidget = editor => {
|
|
36
|
+
var addKeyboardButtonOverlayWidget = function addKeyboardButtonOverlayWidget(editor) {
|
|
34
37
|
if (IS_IOS) {
|
|
35
38
|
return;
|
|
36
39
|
}
|
|
37
|
-
|
|
38
40
|
editor.addOverlayWidget({
|
|
39
|
-
getId: ()
|
|
41
|
+
getId: function getId() {
|
|
40
42
|
return 'editor.contrib.ShowKeyboardWidget';
|
|
41
43
|
},
|
|
42
|
-
getDomNode: ()
|
|
43
|
-
|
|
44
|
+
getDomNode: function getDomNode() {
|
|
45
|
+
var domNode = document.createElement('textarea');
|
|
44
46
|
domNode.className = 'iPadShowKeyboard';
|
|
45
|
-
domNode.addEventListener('touchstart', ()
|
|
46
|
-
|
|
47
|
+
domNode.addEventListener('touchstart', function () {
|
|
48
|
+
return editor.focus();
|
|
49
|
+
});
|
|
50
|
+
domNode.addEventListener('focus', function () {
|
|
51
|
+
return editor.focus();
|
|
52
|
+
});
|
|
47
53
|
return domNode;
|
|
48
54
|
},
|
|
49
|
-
getPosition: ()
|
|
55
|
+
getPosition: function getPosition() {
|
|
50
56
|
return {
|
|
51
57
|
preference: monaco.editor.OverlayWidgetPositionPreference.BOTTOM_RIGHT_CORNER
|
|
52
58
|
};
|
|
@@ -56,58 +62,45 @@ const MonacoEditorMobile = forwardRef((props, ref) => {
|
|
|
56
62
|
/**
|
|
57
63
|
* Export window-level event functions for mobile app.
|
|
58
64
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const exposeWindowGlobalEvents = editor => {
|
|
62
|
-
const editorApi = editorApiRef.current;
|
|
63
|
-
|
|
65
|
+
var exposeWindowGlobalEvents = function exposeWindowGlobalEvents(editor) {
|
|
66
|
+
var editorApi = editorApiRef.current;
|
|
64
67
|
if (!editorApi) {
|
|
65
68
|
return;
|
|
66
69
|
}
|
|
67
|
-
|
|
68
|
-
window.cursorCharLeft = () => {
|
|
70
|
+
window.cursorCharLeft = function () {
|
|
69
71
|
var _a;
|
|
70
|
-
|
|
71
|
-
const pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
72
|
+
var pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
72
73
|
editor.setPosition(new monaco.Position(pos.lineNumber, pos.column - 1));
|
|
73
74
|
};
|
|
74
|
-
|
|
75
|
-
window.cursorCharRight = () => {
|
|
75
|
+
window.cursorCharRight = function () {
|
|
76
76
|
var _a;
|
|
77
|
-
|
|
78
|
-
const pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
77
|
+
var pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
79
78
|
editor.setPosition(new monaco.Position(pos.lineNumber, pos.column + 1));
|
|
80
79
|
};
|
|
81
|
-
|
|
82
|
-
window.cursorLineUp = () => {
|
|
80
|
+
window.cursorLineUp = function () {
|
|
83
81
|
var _a;
|
|
84
|
-
|
|
85
|
-
const pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
82
|
+
var pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
86
83
|
editor.setPosition(new monaco.Position(pos.lineNumber - 1, pos.column));
|
|
87
84
|
};
|
|
88
|
-
|
|
89
|
-
window.cursorLineDown = () => {
|
|
85
|
+
window.cursorLineDown = function () {
|
|
90
86
|
var _a;
|
|
91
|
-
|
|
92
|
-
const pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
87
|
+
var pos = (_a = editor.getPosition()) !== null && _a !== void 0 ? _a : new monaco.Position(0, 0);
|
|
93
88
|
editor.setPosition(new monaco.Position(pos.lineNumber + 1, pos.column));
|
|
94
89
|
};
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
90
|
+
window.dispatchReconfigureFontSize = function (fontSize) {
|
|
91
|
+
setPreference(function (prev) {
|
|
92
|
+
return Object.assign(Object.assign({}, prev), {
|
|
93
|
+
fontSize: fontSize
|
|
94
|
+
});
|
|
95
|
+
});
|
|
100
96
|
};
|
|
101
|
-
|
|
102
|
-
window.dispatchChangeInsert = insert => {
|
|
97
|
+
window.dispatchChangeInsert = function (insert) {
|
|
103
98
|
editorApi.insertValue(editorApi.getPositionOffset(), insert);
|
|
104
99
|
};
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
const model = editorApi.getMonacoModel();
|
|
108
|
-
|
|
100
|
+
window.insertTab = function () {
|
|
101
|
+
var model = editorApi.getMonacoModel();
|
|
109
102
|
if (model) {
|
|
110
|
-
|
|
103
|
+
var modelOptions = model.getOptions();
|
|
111
104
|
editorApi.insertValue(editorApi.getPositionOffset(), modelOptions.insertSpaces ? ' '.repeat(modelOptions.tabSize) : '\t');
|
|
112
105
|
}
|
|
113
106
|
};
|
|
@@ -115,20 +108,16 @@ const MonacoEditorMobile = forwardRef((props, ref) => {
|
|
|
115
108
|
/**
|
|
116
109
|
*
|
|
117
110
|
*/
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
const handleLoad = editor => {
|
|
111
|
+
var handleLoad = function handleLoad(editor) {
|
|
121
112
|
if (typeof props.onLoad === 'function') {
|
|
122
113
|
props.onLoad(editor);
|
|
123
114
|
}
|
|
124
|
-
|
|
125
115
|
addKeyboardButtonOverlayWidget(editor);
|
|
126
116
|
exposeWindowGlobalEvents(editor);
|
|
127
|
-
};
|
|
117
|
+
};
|
|
118
|
+
//
|
|
128
119
|
//
|
|
129
120
|
//
|
|
130
|
-
|
|
131
|
-
|
|
132
121
|
return React.createElement(MonacoEditor, Object.assign({}, props, {
|
|
133
122
|
noLanguageIntellisense: true,
|
|
134
123
|
preference: preference,
|