@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
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
/* eslint-disable */
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* Default emmet configuration.
|
|
5
4
|
*/
|
|
6
|
-
|
|
5
|
+
var DEFAULT_CONFIG = {
|
|
7
6
|
showExpandedAbbreviation: 'always',
|
|
8
7
|
showAbbreviationSuggestions: true,
|
|
9
8
|
showSuggestionsAsSnippets: false
|
|
@@ -12,8 +11,7 @@ const DEFAULT_CONFIG = {
|
|
|
12
11
|
* Mapping between languages that support Emmet and completion trigger characters.
|
|
13
12
|
* - ref: https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/util.ts#L86
|
|
14
13
|
*/
|
|
15
|
-
|
|
16
|
-
const LANGUAGE_MODES = {
|
|
14
|
+
var LANGUAGE_MODES = {
|
|
17
15
|
html: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
|
|
18
16
|
jade: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
|
|
19
17
|
slim: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
|
|
@@ -32,8 +30,7 @@ const LANGUAGE_MODES = {
|
|
|
32
30
|
* Language specific extensions can provide emmet completion support.
|
|
33
31
|
* - ref: https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/util.ts#L124
|
|
34
32
|
*/
|
|
35
|
-
|
|
36
|
-
const MAPPED_MODES = {
|
|
33
|
+
var MAPPED_MODES = {
|
|
37
34
|
handlebars: 'html',
|
|
38
35
|
php: 'html',
|
|
39
36
|
twig: 'html'
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React, { forwardRef } from 'react';
|
|
2
3
|
import { useMeasure, useMount, useUnmount, useUpdateEffect } from 'react-use';
|
|
3
4
|
import { Text } from '@elice/blocks';
|
|
@@ -17,49 +18,53 @@ import PreviewContainer from '../preview-container/PreviewContainer.js';
|
|
|
17
18
|
|
|
18
19
|
//
|
|
19
20
|
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
//
|
|
22
|
+
var VNC_BACKGROUND_COLOR = base.color.navy7;
|
|
23
|
+
var StyledHeaderTitle = styled.div.withConfig({
|
|
23
24
|
componentId: "sc-1duy62f-0"
|
|
24
25
|
})(["flex:1;"]);
|
|
25
|
-
|
|
26
|
+
var StyledHeaderButtonGroup = styled.div.withConfig({
|
|
26
27
|
componentId: "sc-1duy62f-1"
|
|
27
28
|
})(["flex:0 0 auto;display:flex;align-items:center;"]);
|
|
28
|
-
|
|
29
|
+
var StyledVncWrap = styled.div.withConfig({
|
|
29
30
|
componentId: "sc-1duy62f-2"
|
|
30
31
|
})(["display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:", ";overflow:hidden;"], VNC_BACKGROUND_COLOR);
|
|
31
|
-
|
|
32
|
+
var StyledNoVncContainer = styled.div.withConfig({
|
|
32
33
|
componentId: "sc-1duy62f-3"
|
|
33
34
|
})([""]);
|
|
34
|
-
|
|
35
|
+
var StyledNoVnc = styled.div.withConfig({
|
|
35
36
|
componentId: "sc-1duy62f-4"
|
|
36
|
-
})(["position:relative;left:50%;top:50%;transform-origin:center center;transform:translate(-50%,-50%);"]);
|
|
37
|
+
})(["position:relative;left:50%;top:50%;transform-origin:center center;transform:translate(-50%,-50%);"]);
|
|
37
38
|
//
|
|
38
39
|
//
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
isRunning =
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
40
|
+
//
|
|
41
|
+
var NoVnc = forwardRef(function (_ref, ref) {
|
|
42
|
+
var _ref$isRunning = _ref.isRunning,
|
|
43
|
+
isRunning = _ref$isRunning === void 0 ? false : _ref$isRunning,
|
|
44
|
+
wsUri = _ref.wsUri,
|
|
45
|
+
roomToken = _ref.roomToken,
|
|
46
|
+
readyExerciseImage = _ref.readyExerciseImage,
|
|
47
|
+
_ref$exercisePreviewD = _ref.exercisePreviewDisplayModeButton,
|
|
48
|
+
exercisePreviewDisplayModeButton = _ref$exercisePreviewD === void 0 ? null : _ref$exercisePreviewD,
|
|
49
|
+
onConnect = _ref.onConnect,
|
|
50
|
+
onDisconnect = _ref.onDisconnect;
|
|
51
|
+
var vncRfb = React.useRef(null);
|
|
52
|
+
var vncElRef = React.useRef(null);
|
|
53
|
+
var _useMeasure = useMeasure(),
|
|
54
|
+
_useMeasure2 = _slicedToArray(_useMeasure, 2),
|
|
55
|
+
vncWrapRef = _useMeasure2[0],
|
|
56
|
+
_useMeasure2$ = _useMeasure2[1],
|
|
57
|
+
width = _useMeasure2$.width,
|
|
58
|
+
height = _useMeasure2$.height;
|
|
59
|
+
var _React$useState = React.useState(true),
|
|
60
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
61
|
+
isVncScaledFromLocal = _React$useState2[0],
|
|
62
|
+
setVncScaledFromLocal = _React$useState2[1];
|
|
56
63
|
/**
|
|
57
64
|
* Default size of VNC from exericse image.
|
|
58
65
|
*/
|
|
59
|
-
|
|
60
|
-
const vncDefaultSize = React.useMemo(() => {
|
|
66
|
+
var vncDefaultSize = React.useMemo(function () {
|
|
61
67
|
var _a, _b;
|
|
62
|
-
|
|
63
68
|
return {
|
|
64
69
|
width: (_a = readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.defaultVncWidth) !== null && _a !== void 0 ? _a : 300,
|
|
65
70
|
height: (_b = readyExerciseImage === null || readyExerciseImage === void 0 ? void 0 : readyExerciseImage.defaultVncHeight) !== null && _b !== void 0 ? _b : 300
|
|
@@ -68,86 +73,82 @@ const NoVnc = forwardRef(({
|
|
|
68
73
|
/**
|
|
69
74
|
* Transform scale to fit VNC to VNC wrap.
|
|
70
75
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
76
|
+
var vncTransformScale = React.useMemo(function () {
|
|
77
|
+
return Math.min(width / vncDefaultSize.width, height / vncDefaultSize.height);
|
|
78
|
+
}, [width, height, vncDefaultSize.width, vncDefaultSize.height]);
|
|
73
79
|
/**
|
|
74
80
|
* Element style of VNC and VNC wrap.
|
|
75
81
|
*/
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
82
|
+
var vncElementStyle = React.useMemo(function () {
|
|
83
|
+
return {
|
|
84
|
+
width: "".concat((vncDefaultSize.width * vncTransformScale).toFixed(3), "px"),
|
|
85
|
+
height: "".concat((vncDefaultSize.height * vncTransformScale).toFixed(3), "px")
|
|
86
|
+
};
|
|
87
|
+
}, [vncDefaultSize.width, vncDefaultSize.height, vncTransformScale]);
|
|
81
88
|
/**
|
|
82
89
|
* Connect VNC.
|
|
83
90
|
*/
|
|
84
|
-
|
|
85
|
-
const connect = React.useCallback(() => {
|
|
91
|
+
var connect = React.useCallback(function () {
|
|
86
92
|
if (!vncElRef.current || !wsUri || !roomToken) {
|
|
87
93
|
return;
|
|
88
94
|
}
|
|
89
|
-
|
|
90
|
-
|
|
95
|
+
var vncUrl = "".concat(wsUri, "/client/vnc/").concat(roomToken);
|
|
96
|
+
// The RFB object represents a single connection to a VNC server.
|
|
91
97
|
// It communicates using a WebSocket that must provide a standard RFB protocol stream.
|
|
92
98
|
// -ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#rfb-1
|
|
93
|
-
|
|
94
99
|
vncRfb.current = new RFB(vncElRef.current, vncUrl, {
|
|
95
100
|
wsProtocols: ['binary']
|
|
96
|
-
});
|
|
101
|
+
});
|
|
102
|
+
// ==============================
|
|
97
103
|
// VNC options
|
|
98
104
|
// ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#properties
|
|
99
105
|
// ==============================
|
|
100
106
|
// Is a boolean indicating if the remote session should be clipped to its container.
|
|
101
107
|
// When disabled scrollbars will be shown to handle the resulting overflow.
|
|
102
|
-
|
|
103
|
-
|
|
108
|
+
vncRfb.current.clipViewport = false;
|
|
109
|
+
// Is a boolean indicating if the remote session should be scaled locally so it fits its container.
|
|
104
110
|
// When disabled it will be centered if the remote session is smaller than its container,
|
|
105
111
|
// or handled according to `clipViewport` if it is larger.
|
|
106
|
-
|
|
107
112
|
vncRfb.current.scaleViewport = isVncScaledFromLocal; // NOTE: select one of `scaleViewport` or `resizeSession`, not both
|
|
108
113
|
// Is a boolean indicating if a request to resize the remote session should be sent
|
|
109
114
|
// whenever the container changes dimensions.
|
|
110
|
-
|
|
111
115
|
vncRfb.current.resizeSession = !isVncScaledFromLocal; // NOTE: select one of `scaleViewport` or `resizeSession`, not both
|
|
112
116
|
// Is a boolean indicating whether a dot cursor should be shown instead of a zero-sized
|
|
113
117
|
// or fully-transparent cursor if the server sets such invisible cursor.
|
|
114
|
-
|
|
115
|
-
|
|
118
|
+
vncRfb.current.showDotCursor = true;
|
|
119
|
+
// Is a valid CSS background style value indicating
|
|
116
120
|
// which background style should be applied to the element containing the remote session screen.
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
vncRfb.current.background = VNC_BACKGROUND_COLOR;
|
|
122
|
+
// ==============================
|
|
119
123
|
// VNC events
|
|
120
124
|
// ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#events
|
|
121
125
|
// ==============================
|
|
122
126
|
// The connect event is fired when the RFB object has completed the connection and handshaking with the server.
|
|
123
127
|
// - ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#connect
|
|
124
|
-
|
|
125
|
-
vncRfb.current.addEventListener('connect', () => {
|
|
128
|
+
vncRfb.current.addEventListener('connect', function () {
|
|
126
129
|
if (typeof onConnect === 'function') {
|
|
127
130
|
onConnect();
|
|
128
131
|
}
|
|
129
|
-
});
|
|
132
|
+
});
|
|
133
|
+
// The disconnect event is fired when the RFB object disconnects.
|
|
130
134
|
// - ref: https://github.com/novnc/noVNC/blob/master/docs/API.md#disconnect
|
|
131
|
-
|
|
132
|
-
vncRfb.current.addEventListener('disconnect', () => {
|
|
135
|
+
vncRfb.current.addEventListener('disconnect', function () {
|
|
133
136
|
if (typeof onDisconnect === 'function') {
|
|
134
137
|
onDisconnect();
|
|
135
138
|
}
|
|
136
139
|
});
|
|
137
|
-
},
|
|
140
|
+
},
|
|
141
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
138
142
|
[wsUri, roomToken, isVncScaledFromLocal]);
|
|
139
143
|
/**
|
|
140
144
|
* Disconnect VNC.
|
|
141
145
|
*/
|
|
142
|
-
|
|
143
|
-
const disconnect = React.useCallback(() => {
|
|
146
|
+
var disconnect = React.useCallback(function () {
|
|
144
147
|
var _a;
|
|
145
|
-
|
|
146
148
|
if (typeof ((_a = vncRfb.current) === null || _a === void 0 ? void 0 : _a.disconnect) === 'function') {
|
|
147
149
|
vncRfb.current.disconnect();
|
|
148
150
|
vncRfb.current = null;
|
|
149
151
|
}
|
|
150
|
-
|
|
151
152
|
if (vncElRef.current) {
|
|
152
153
|
vncElRef.current.innerHTML = '';
|
|
153
154
|
}
|
|
@@ -156,15 +157,13 @@ const NoVnc = forwardRef(({
|
|
|
156
157
|
* Reset VNC.
|
|
157
158
|
* - note: https://www.notion.so/elice/elice-runner-v3-forwarder-4907ba8546274956b2f55c586df1641a#d61df659d91644db85a52fc148a69e13
|
|
158
159
|
*/
|
|
159
|
-
|
|
160
|
-
const reset = React.useCallback(() => {
|
|
160
|
+
var reset = React.useCallback(function () {
|
|
161
161
|
if (!vncRfb.current) {
|
|
162
162
|
return;
|
|
163
|
-
}
|
|
163
|
+
}
|
|
164
|
+
//
|
|
164
165
|
// FIXME: This code accesses to the internal of noVNC
|
|
165
166
|
//
|
|
166
|
-
|
|
167
|
-
|
|
168
167
|
vncRfb.current._rfbConnectionState = 'connecting';
|
|
169
168
|
vncRfb.current._rfbInitState = 'ProtocolVersion';
|
|
170
169
|
vncRfb.current._rfbTightVNC = false;
|
|
@@ -194,46 +193,45 @@ const NoVnc = forwardRef(({
|
|
|
194
193
|
vncRfb.current._decoders[encodings.encodingHextile] = new RFB_decoders_hextile();
|
|
195
194
|
vncRfb.current._decoders[encodings.encodingTight] = new RFB_decoders_tight();
|
|
196
195
|
vncRfb.current._decoders[encodings.encodingTightPNG] = new RFB_decoders_tight_png();
|
|
197
|
-
|
|
198
196
|
vncRfb.current._sock.flush();
|
|
199
|
-
|
|
200
197
|
vncRfb.current._sock._allocateBuffers();
|
|
201
|
-
|
|
202
198
|
vncRfb.current._sock._rQi = 0;
|
|
203
|
-
vncRfb.current._sock._rQlen = 0;
|
|
199
|
+
vncRfb.current._sock._rQlen = 0;
|
|
200
|
+
//
|
|
204
201
|
// FIXME: This code accesses to the internal of noVNC
|
|
205
202
|
//
|
|
206
|
-
}, []);
|
|
203
|
+
}, []);
|
|
204
|
+
//
|
|
207
205
|
// Connect or disconnect VNC.
|
|
208
206
|
//
|
|
209
|
-
|
|
210
207
|
useMount(connect);
|
|
211
|
-
useUnmount(disconnect);
|
|
208
|
+
useUnmount(disconnect);
|
|
209
|
+
//
|
|
212
210
|
// Update VNC scale config.
|
|
213
211
|
//
|
|
214
|
-
|
|
215
|
-
useUpdateEffect(() => {
|
|
212
|
+
useUpdateEffect(function () {
|
|
216
213
|
if (!vncRfb.current) {
|
|
217
214
|
return;
|
|
218
215
|
}
|
|
219
|
-
|
|
220
216
|
vncRfb.current.scaleViewport = isVncScaledFromLocal;
|
|
221
217
|
vncRfb.current.resizeSession = !isVncScaledFromLocal;
|
|
222
|
-
},
|
|
223
|
-
|
|
218
|
+
},
|
|
219
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
220
|
+
[isVncScaledFromLocal]);
|
|
224
221
|
//
|
|
225
222
|
//
|
|
226
|
-
|
|
227
|
-
React.useImperativeHandle(ref, ()
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
223
|
+
//
|
|
224
|
+
React.useImperativeHandle(ref, function () {
|
|
225
|
+
return {
|
|
226
|
+
connect: connect,
|
|
227
|
+
disconnect: disconnect,
|
|
228
|
+
reset: reset
|
|
229
|
+
};
|
|
230
|
+
}, [connect, disconnect, reset]);
|
|
232
231
|
/**
|
|
233
232
|
* Header.
|
|
234
233
|
*/
|
|
235
|
-
|
|
236
|
-
const renderVncHeader = () => {
|
|
234
|
+
var renderVncHeader = function renderVncHeader() {
|
|
237
235
|
return React.createElement(React.Fragment, null, React.createElement(StyledHeaderTitle, null, React.createElement(Text, {
|
|
238
236
|
role: "white",
|
|
239
237
|
size: "tiny"
|
|
@@ -241,15 +239,18 @@ const NoVnc = forwardRef(({
|
|
|
241
239
|
icon: isVncScaledFromLocal ? eilViewMaximize : eilViewMinimize,
|
|
242
240
|
title: isRunning ? '실행 중에는 비율을 변경할 수 없습니다' : isVncScaledFromLocal ? '확대하여 보기' : '원본 비율로 보기',
|
|
243
241
|
disabled: isRunning,
|
|
244
|
-
onClick: ()
|
|
242
|
+
onClick: function onClick() {
|
|
243
|
+
return setVncScaledFromLocal(function (prev) {
|
|
244
|
+
return !prev;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
245
247
|
}), React.isValidElement(exercisePreviewDisplayModeButton) ? React.cloneElement(exercisePreviewDisplayModeButton, {
|
|
246
248
|
disabled: isRunning
|
|
247
249
|
}) : null));
|
|
248
|
-
};
|
|
250
|
+
};
|
|
251
|
+
//
|
|
249
252
|
//
|
|
250
253
|
//
|
|
251
|
-
|
|
252
|
-
|
|
253
254
|
return React.createElement(PreviewContainer, {
|
|
254
255
|
header: renderVncHeader()
|
|
255
256
|
}, React.createElement(StyledVncWrap, {
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var AsyncNoVnc = React.lazy(function () {
|
|
4
|
+
return import('./NoVnc.js');
|
|
5
|
+
});
|
|
6
|
+
var NoVncLazy = forwardRef(function (props, ref) {
|
|
5
7
|
return React.createElement(React.Suspense, {
|
|
6
8
|
fallback: null
|
|
7
9
|
}, React.createElement(AsyncNoVnc, Object.assign({}, props, {
|
|
@@ -2,20 +2,17 @@ import React, { forwardRef } from 'react';
|
|
|
2
2
|
import { base } from '@elice/design-tokens';
|
|
3
3
|
import styled from 'styled-components';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const StyledPreviewContainer = styled.div.withConfig({
|
|
5
|
+
var PREVIEW_CONTAINER_HEADER_HEIGHT = 36; // 2.25rem
|
|
6
|
+
var PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM = 4; // 0.25rem
|
|
7
|
+
var StyledPreviewContainer = styled.div.withConfig({
|
|
10
8
|
componentId: "sc-1oi07w2-0"
|
|
11
9
|
})(["display:flex;flex-direction:column;width:100%;height:100%;background-color:", ";overflow:hidden;"], base.color.white);
|
|
12
|
-
|
|
10
|
+
var StyledPreviewHeader = styled.div.withConfig({
|
|
13
11
|
componentId: "sc-1oi07w2-1"
|
|
14
12
|
})(["flex:0 0 ", "px;display:flex;align-items:center;padding:", "px 0.5rem;border-bottom:1px solid ", ";background-color:", ";"], PREVIEW_CONTAINER_HEADER_HEIGHT, PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM, base.color.navy7, base.color.navy8);
|
|
15
|
-
|
|
16
|
-
children,
|
|
17
|
-
|
|
18
|
-
}, ref) => {
|
|
13
|
+
var PreviewContainer = forwardRef(function (_ref, ref) {
|
|
14
|
+
var children = _ref.children,
|
|
15
|
+
header = _ref.header;
|
|
19
16
|
return React.createElement(StyledPreviewContainer, {
|
|
20
17
|
ref: ref
|
|
21
18
|
}, React.createElement(StyledPreviewHeader, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
1
2
|
import React, { forwardRef } from 'react';
|
|
2
3
|
import { Flex } from '@elice/blocks';
|
|
3
4
|
import { base } from '@elice/design-tokens';
|
|
@@ -6,40 +7,45 @@ import styled from 'styled-components';
|
|
|
6
7
|
import ExerciseMenuButton from '../exercise-menu-button/ExerciseMenuButton.js';
|
|
7
8
|
import PreviewContainer, { PREVIEW_CONTAINER_HEADER_HEIGHT, PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM } from '../preview-container/PreviewContainer.js';
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
var WEB_BROWSER_URL_INPUT_HEIGHT = PREVIEW_CONTAINER_HEADER_HEIGHT - PREVIEW_CONTAINER_HEADER_PADDING_TOP_BOTTOM * 2;
|
|
11
|
+
var StyledHeaderUrlInput = styled.input.withConfig({
|
|
11
12
|
componentId: "sc-1c55yq-0"
|
|
12
13
|
})(["flex:1;min-width:0;height:", "px;padding:0.25rem 0.5rem;color:", ";background:", ";border:0;border-radius:0.25rem;&:active,&:focus{outline:none;}"], WEB_BROWSER_URL_INPUT_HEIGHT, base.color.white, base.color.navy6);
|
|
13
|
-
|
|
14
|
+
var StyledIframe = styled.iframe.withConfig({
|
|
14
15
|
componentId: "sc-1c55yq-1"
|
|
15
16
|
})(["flex:1;width:100%;height:100%;min-height:0;border:0;"]);
|
|
16
17
|
/**
|
|
17
18
|
* Attach `_cachebust` search parameter to the URL to prevent caching.
|
|
18
19
|
*/
|
|
19
|
-
|
|
20
|
-
const createCacheBustedUrl = url => {
|
|
20
|
+
var createCacheBustedUrl = function createCacheBustedUrl(url) {
|
|
21
21
|
try {
|
|
22
|
-
|
|
22
|
+
var urlObject = new URL(url);
|
|
23
23
|
urlObject.searchParams.set('_cachebust', Date.now().toString());
|
|
24
24
|
return urlObject.href;
|
|
25
25
|
} catch (_) {
|
|
26
26
|
return url;
|
|
27
27
|
}
|
|
28
28
|
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
var WebBrowser = forwardRef(function (_ref, ref) {
|
|
30
|
+
var httpUri = _ref.httpUri,
|
|
31
|
+
_ref$menuButtons = _ref.menuButtons,
|
|
32
|
+
menuButtons = _ref$menuButtons === void 0 ? null : _ref$menuButtons;
|
|
33
|
+
var _React$useState = React.useState(''),
|
|
34
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
35
|
+
url = _React$useState2[0],
|
|
36
|
+
setUrl = _React$useState2[1];
|
|
37
|
+
var _React$useState3 = React.useState(''),
|
|
38
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
39
|
+
inputUrl = _React$useState4[0],
|
|
40
|
+
setInputUrl = _React$useState4[1];
|
|
41
|
+
var iframeRef = React.useRef(null);
|
|
42
|
+
var iframeSrc = React.useMemo(function () {
|
|
43
|
+
return createCacheBustedUrl(url);
|
|
44
|
+
}, [url]);
|
|
38
45
|
/**
|
|
39
46
|
* Navigate browser.
|
|
40
47
|
*/
|
|
41
|
-
|
|
42
|
-
const navigate = React.useCallback(newUrl => {
|
|
48
|
+
var navigate = React.useCallback(function (newUrl) {
|
|
43
49
|
if (newUrl) {
|
|
44
50
|
setUrl(newUrl);
|
|
45
51
|
}
|
|
@@ -47,8 +53,7 @@ const WebBrowser = forwardRef(({
|
|
|
47
53
|
/**
|
|
48
54
|
* Reload browser.
|
|
49
55
|
*/
|
|
50
|
-
|
|
51
|
-
const reload = React.useCallback(() => {
|
|
56
|
+
var reload = React.useCallback(function () {
|
|
52
57
|
if (iframeRef.current) {
|
|
53
58
|
iframeRef.current.src = createCacheBustedUrl(iframeRef.current.src);
|
|
54
59
|
}
|
|
@@ -56,10 +61,8 @@ const WebBrowser = forwardRef(({
|
|
|
56
61
|
/**
|
|
57
62
|
* New window open click.
|
|
58
63
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
const win = window.open(url, '_blank');
|
|
62
|
-
|
|
64
|
+
var handleNewWindowClick = function handleNewWindowClick() {
|
|
65
|
+
var win = window.open(url, '_blank');
|
|
63
66
|
if (win) {
|
|
64
67
|
win.focus();
|
|
65
68
|
}
|
|
@@ -67,19 +70,15 @@ const WebBrowser = forwardRef(({
|
|
|
67
70
|
/**
|
|
68
71
|
* Handle url input change.
|
|
69
72
|
*/
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const value = e.target.value; // prevent removal of origin url (props.httpUri)
|
|
74
|
-
|
|
73
|
+
var handleUrlInputChange = function handleUrlInputChange(e) {
|
|
74
|
+
var value = e.target.value;
|
|
75
|
+
// prevent removal of origin url (props.httpUri)
|
|
75
76
|
setInputUrl(value.startsWith(httpUri) ? value : httpUri);
|
|
76
77
|
};
|
|
77
78
|
/**
|
|
78
79
|
* Handle url input Enter key down.
|
|
79
80
|
*/
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
const handleUrlInputKeyDown = e => {
|
|
81
|
+
var handleUrlInputKeyDown = function handleUrlInputKeyDown(e) {
|
|
83
82
|
if (e.key === 'Enter') {
|
|
84
83
|
e.preventDefault();
|
|
85
84
|
navigate(inputUrl);
|
|
@@ -88,41 +87,38 @@ const WebBrowser = forwardRef(({
|
|
|
88
87
|
/**
|
|
89
88
|
* Handle iframe load.
|
|
90
89
|
*/
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const handleIframeLoad = () => {
|
|
90
|
+
var handleIframeLoad = function handleIframeLoad() {
|
|
94
91
|
var _a, _b, _c;
|
|
95
|
-
|
|
96
92
|
try {
|
|
97
|
-
|
|
98
|
-
|
|
93
|
+
var iframeUrl = (_c = (_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.location) === null || _c === void 0 ? void 0 : _c.href;
|
|
99
94
|
if (iframeUrl) {
|
|
100
95
|
setInputUrl(iframeUrl);
|
|
101
96
|
}
|
|
102
|
-
} catch (err) {
|
|
97
|
+
} catch (err) {
|
|
98
|
+
// SecurityError : can be raised on the cross-origin environment!
|
|
103
99
|
// do nothing.
|
|
104
100
|
}
|
|
105
|
-
};
|
|
101
|
+
};
|
|
102
|
+
//
|
|
106
103
|
// Change url on new httpUri provided.
|
|
107
104
|
//
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
React.useEffect(() => {
|
|
105
|
+
React.useEffect(function () {
|
|
111
106
|
setUrl(httpUri);
|
|
112
107
|
setInputUrl(httpUri);
|
|
113
|
-
}, [httpUri]);
|
|
108
|
+
}, [httpUri]);
|
|
114
109
|
//
|
|
115
110
|
//
|
|
116
|
-
|
|
117
|
-
React.useImperativeHandle(ref, ()
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
111
|
+
//
|
|
112
|
+
React.useImperativeHandle(ref, function () {
|
|
113
|
+
return {
|
|
114
|
+
navigate: navigate,
|
|
115
|
+
reload: reload
|
|
116
|
+
};
|
|
117
|
+
}, [navigate, reload]);
|
|
121
118
|
/**
|
|
122
119
|
* Browser header.
|
|
123
120
|
*/
|
|
124
|
-
|
|
125
|
-
const renderBrowserHeader = () => {
|
|
121
|
+
var renderBrowserHeader = function renderBrowserHeader() {
|
|
126
122
|
return React.createElement(React.Fragment, null, React.createElement(Flex, {
|
|
127
123
|
marginright: "0.25rem"
|
|
128
124
|
}, React.createElement(ExerciseMenuButton, {
|
|
@@ -146,20 +142,17 @@ const WebBrowser = forwardRef(({
|
|
|
146
142
|
/**
|
|
147
143
|
* Browser content.
|
|
148
144
|
*/
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const renderBrowserBody = () => {
|
|
145
|
+
var renderBrowserBody = function renderBrowserBody() {
|
|
152
146
|
return React.createElement(StyledIframe, {
|
|
153
147
|
src: iframeSrc,
|
|
154
148
|
title: url,
|
|
155
149
|
onLoad: handleIframeLoad,
|
|
156
150
|
ref: iframeRef
|
|
157
151
|
});
|
|
158
|
-
};
|
|
152
|
+
};
|
|
153
|
+
//
|
|
159
154
|
//
|
|
160
155
|
//
|
|
161
|
-
|
|
162
|
-
|
|
163
156
|
return React.createElement(PreviewContainer, {
|
|
164
157
|
header: renderBrowserHeader()
|
|
165
158
|
}, renderBrowserBody());
|