@elice/material-exercise 1.240718.0-trasncript.2 → 1.240718.2
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/assets/empty.png.js +2 -1
- package/cjs/components/material-exercise/MaterialExercise.d.ts +1 -1
- package/cjs/components/material-exercise/MaterialExercise.js +75 -111
- package/cjs/components/material-exercise/MaterialExercise.styled.js +14 -18
- package/cjs/components/material-exercise/MaterialExerciseMobile.d.ts +1 -1
- package/cjs/components/material-exercise/MaterialExerciseMobile.js +7 -17
- package/cjs/components/material-exercise/context/ExerciseProvider.js +58 -68
- package/cjs/components/material-exercise/context/ExerciseProviderNoImage.js +30 -39
- package/cjs/components/material-exercise/context/context.js +1 -5
- package/cjs/components/material-exercise/context/recoil.js +293 -542
- package/cjs/components/material-exercise/context/subjects.js +4 -4
- package/cjs/components/material-exercise/context/types.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -100
- package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -12
- package/cjs/components/material-exercise/exercise-file/ExerciseFile.js +27 -30
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +149 -225
- package/cjs/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +13 -20
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +29 -49
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.d.ts +2 -1
- package/cjs/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +4 -10
- package/cjs/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/ExerciseFileTabsFileTreeButton.js +36 -53
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +211 -353
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.d.ts +2 -1
- package/cjs/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +4 -10
- package/cjs/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +15 -18
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +12 -21
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +11 -12
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +80 -123
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +67 -100
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuReset.js +22 -40
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +119 -144
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +13 -17
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -32
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.d.ts +2 -1
- package/cjs/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -10
- package/cjs/components/material-exercise/exercise-preview/ExercisePreview.js +24 -31
- package/cjs/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +6 -13
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +35 -51
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +6 -14
- package/cjs/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -90
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.js +12 -25
- package/cjs/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -18
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomDetail.js +349 -504
- package/cjs/components/material-exercise/exercise-room/ExerciseRoomList.js +132 -197
- package/cjs/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +142 -205
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -5
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +16 -25
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +86 -118
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +19 -33
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +82 -95
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +52 -68
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +87 -136
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -6
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +15 -21
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +23 -36
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +248 -402
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -12
- package/cjs/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +50 -74
- package/cjs/components/shared/exercise-menu-button/ExerciseMenuButton.js +23 -32
- package/cjs/components/shared/exercise-shimmer/ExerciseFileShimmer.js +38 -44
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +20 -26
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +8 -14
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +22 -28
- package/cjs/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -24
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +5 -6
- package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -5
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.js +10 -10
- package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -13
- package/cjs/components/shared/file-icon/FileIcon.js +16 -23
- package/cjs/components/shared/file-tabs/FileTab.js +33 -47
- package/cjs/components/shared/file-tabs/FileTab.styled.js +15 -23
- package/cjs/components/shared/file-tabs/FileTabs.js +39 -66
- package/cjs/components/shared/file-tabs/FileTabs.styled.js +2 -6
- package/cjs/components/shared/file-tabs/util.js +14 -27
- package/cjs/components/shared/file-tree/FileTree.js +10 -20
- package/cjs/components/shared/file-tree/FileTreeConfig.js +40 -46
- package/cjs/components/shared/file-tree/FileTreeList.js +40 -43
- package/cjs/components/shared/file-tree/FileTreeListItemContent.js +99 -128
- package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -29
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +96 -106
- package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -10
- package/cjs/components/shared/file-tree/FileTreeListItemContentMenu.js +91 -133
- package/cjs/components/shared/file-tree/FileTreeListItems.js +137 -149
- package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +2 -6
- package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +1 -5
- package/cjs/components/shared/file-tree/context/FileTreeContext.d.ts +1 -1
- package/cjs/components/shared/file-tree/context/FileTreeContext.js +79 -101
- package/cjs/components/shared/file-tree/file-tree-toolbar/FileTreeToolbar.js +54 -59
- package/cjs/components/shared/file-tree/utils/fileTreeFiles.js +20 -24
- package/cjs/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
- package/cjs/components/shared/file-tree/utils/fileTreeInput.js +0 -11
- package/cjs/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/cjs/components/shared/file-tree/utils/fileTreePath.js +6 -5
- package/cjs/components/shared/file-viewer/FileViewer.js +46 -76
- package/cjs/components/shared/file-viewer/FileViewerCsv.js +167 -262
- package/cjs/components/shared/file-viewer/FileViewerImage.js +12 -16
- package/cjs/components/shared/file-viewer/FileViewerIpynb.js +11 -27
- package/cjs/components/shared/file-viewer/FileViewerNonViewable.js +47 -65
- package/cjs/components/shared/file-viewer/FileViewerText.js +11 -23
- package/cjs/components/shared/material-modal/MaterialModal.js +11 -20
- package/cjs/components/shared/material-modal/MaterialModal.styled.js +5 -9
- package/cjs/components/shared/monaco-editor/MonacoEditor.js +74 -102
- package/cjs/components/shared/monaco-editor/MonacoEditorLazy.js +7 -15
- package/cjs/components/shared/monaco-editor/MonacoEditorMobile.js +34 -49
- package/cjs/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +194 -249
- package/cjs/components/shared/monaco-editor/constants/grammars/index.js +28 -82
- package/cjs/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
- package/cjs/components/shared/monaco-editor/constants/themes/index.js +17 -49
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
- package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
- package/cjs/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
- package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +2 -3
- package/cjs/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
- package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +2 -3
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +5 -6
- package/cjs/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
- package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
- package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
- package/cjs/components/shared/monaco-editor/utils/grammar/index.js +24 -67
- package/cjs/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
- package/cjs/components/shared/monaco-editor/utils/grammar/textmate.js +37 -70
- package/cjs/components/shared/monaco-editor/utils/monacoLanguage.js +7 -8
- package/cjs/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +2 -2
- package/cjs/components/shared/monaco-editor/utils/prettier/index.js +7 -27
- package/cjs/components/shared/monaco-editor/utils/theme/convert.js +14 -24
- package/cjs/components/shared/monaco-editor/utils/theme/index.js +3 -22
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +132 -155
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
- 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 +6 -1
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +158 -177
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
- package/cjs/components/shared/no-vnc/NoVnc.js +78 -118
- package/cjs/components/shared/no-vnc/NoVncLazy.js +7 -15
- package/cjs/components/shared/preview-container/PreviewContainer.js +13 -18
- package/cjs/components/shared/web-browser/WebBrowser.js +52 -74
- package/cjs/components/shared/xterm/Xterm.js +57 -82
- package/cjs/components/shared/xterm/XtermLazy.js +7 -15
- package/cjs/constants/arduino.js +10 -10
- package/cjs/constants/color.js +1 -1
- package/cjs/constants/shortcutKeyMap.js +1 -3
- package/cjs/constants/stylesheets.js +5 -7
- package/cjs/hooks/useArduino.js +141 -282
- package/cjs/hooks/useExerciseFile.js +22 -24
- package/cjs/hooks/useExericseShortcut.js +4 -6
- package/cjs/hooks/useMaterialExerciseFileUrl.js +33 -55
- package/cjs/hooks/useRunnerRoomWebSocket.js +27 -51
- package/cjs/hooks/useStdioTextConcator.js +11 -15
- package/cjs/hooks/useStdioWebSocket.js +28 -32
- package/cjs/hooks/useUsercodeEditWebSocket.js +158 -238
- package/cjs/hooks/useUsercodeHistory.js +63 -115
- package/cjs/utils/arduino.js +11 -23
- package/cjs/utils/exerciseFile.js +10 -8
- package/cjs/utils/runner.js +17 -33
- package/es/assets/empty.png.js +2 -1
- package/es/components/material-exercise/MaterialExercise.d.ts +1 -1
- package/es/components/material-exercise/MaterialExercise.js +75 -107
- package/es/components/material-exercise/MaterialExercise.styled.js +14 -14
- package/es/components/material-exercise/MaterialExerciseMobile.d.ts +1 -1
- package/es/components/material-exercise/MaterialExerciseMobile.js +7 -13
- package/es/components/material-exercise/context/ExerciseProvider.js +58 -63
- package/es/components/material-exercise/context/ExerciseProviderNoImage.js +30 -35
- package/es/components/material-exercise/context/context.js +1 -1
- package/es/components/material-exercise/context/recoil.js +290 -535
- package/es/components/material-exercise/context/subjects.js +4 -4
- package/es/components/material-exercise/context/types.d.ts +2 -2
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +78 -95
- package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-file/ExerciseFile.js +27 -25
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileEditor.js +149 -221
- package/es/components/material-exercise/exercise-file-editor/ExerciseFileReadOnlyBanner.js +13 -15
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabs.js +29 -44
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.d.ts +2 -1
- package/es/components/material-exercise/exercise-file-tabs/ExerciseFileTabsLazy.js +4 -6
- package/es/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/ExerciseFileTabsFileTreeButton.js +36 -48
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTree.js +211 -348
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.d.ts +2 -1
- package/es/components/material-exercise/exercise-file-tree/ExerciseFileTreeLazy.js +4 -6
- package/es/components/material-exercise/exercise-file-viewer/ExerciseFileViewer.js +15 -14
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +12 -16
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +11 -12
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +80 -119
- package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +67 -96
- package/es/components/material-exercise/exercise-menu/ExerciseMenuReset.js +23 -41
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.js +122 -143
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +13 -13
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdown.js +19 -28
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.d.ts +2 -1
- package/es/components/material-exercise/exercise-multilang-dropdown/ExerciseMultilangDropdownLazy.js +4 -6
- package/es/components/material-exercise/exercise-preview/ExercisePreview.js +24 -26
- package/es/components/material-exercise/exercise-preview/ExercisePreviewDisplayModeButton.js +7 -14
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpane.js +35 -47
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEditorPerference.js +6 -10
- package/es/components/material-exercise/exercise-rightpane/ExerciseRightpaneEnvironment.js +78 -85
- package/es/components/material-exercise/exercise-room/ExerciseRoom.js +12 -21
- package/es/components/material-exercise/exercise-room/ExerciseRoom.styled.js +12 -14
- package/es/components/material-exercise/exercise-room/ExerciseRoomDetail.js +349 -498
- package/es/components/material-exercise/exercise-room/ExerciseRoomList.js +133 -193
- package/es/components/material-exercise/exercise-room/helpers/exerciseRoomPermissionStringConvertor.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +142 -200
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerContext.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +16 -20
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +85 -112
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +20 -30
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +82 -90
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.js +52 -63
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerRunningInfo.js +87 -131
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusIndicator.js +2 -2
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerStatusMessage.js +15 -17
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerTimer.js +23 -31
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.js +250 -399
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistory.styled.js +8 -8
- package/es/components/material-exercise/exercise-submit-history/ExerciseSubmitHistoryOutput.js +49 -68
- package/es/components/shared/exercise-menu-button/ExerciseMenuButton.js +24 -29
- package/es/components/shared/exercise-shimmer/ExerciseFileShimmer.js +38 -40
- package/es/components/shared/exercise-shimmer/ExerciseFileTabShimmer.js +20 -22
- package/es/components/shared/exercise-shimmer/ExerciseFileTabsShimmer.js +8 -10
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListItemShimmer.js +22 -24
- package/es/components/shared/exercise-shimmer/ExerciseFileTreeListShimmer.js +9 -19
- package/es/components/shared/exercise-version-list/ExerciseVersionList.js +5 -6
- package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +1 -1
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.js +10 -10
- package/es/components/shared/exercise-version-list/ExerciseVersionListItem.styled.js +5 -9
- package/es/components/shared/file-icon/FileIcon.js +16 -19
- package/es/components/shared/file-tabs/FileTab.js +33 -43
- package/es/components/shared/file-tabs/FileTab.styled.js +15 -19
- package/es/components/shared/file-tabs/FileTabs.js +40 -62
- package/es/components/shared/file-tabs/FileTabs.styled.js +2 -2
- package/es/components/shared/file-tabs/util.js +14 -27
- package/es/components/shared/file-tree/FileTree.js +10 -16
- package/es/components/shared/file-tree/FileTreeConfig.js +39 -39
- package/es/components/shared/file-tree/FileTreeList.js +40 -38
- package/es/components/shared/file-tree/FileTreeListItemContent.js +99 -124
- package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +21 -25
- package/es/components/shared/file-tree/FileTreeListItemContentInput.js +96 -102
- package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +6 -6
- package/es/components/shared/file-tree/FileTreeListItemContentMenu.js +91 -129
- package/es/components/shared/file-tree/FileTreeListItems.js +137 -149
- package/es/components/shared/file-tree/FileTreeListItems.styled.js +2 -2
- package/es/components/shared/file-tree/FileTreeToolbar.styled.js +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.d.ts +1 -1
- package/es/components/shared/file-tree/context/FileTreeContext.js +79 -97
- package/es/components/shared/file-tree/file-tree-toolbar/FileTreeToolbar.js +54 -55
- package/es/components/shared/file-tree/utils/fileTreeFiles.js +20 -20
- package/es/components/shared/file-tree/utils/fileTreeGenerator.js +146 -193
- package/es/components/shared/file-tree/utils/fileTreeInput.js +1 -11
- package/es/components/shared/file-tree/utils/fileTreeItem.js +1 -1
- package/es/components/shared/file-tree/utils/fileTreePath.js +6 -5
- package/es/components/shared/file-viewer/FileViewer.js +46 -69
- package/es/components/shared/file-viewer/FileViewerCsv.js +167 -257
- package/es/components/shared/file-viewer/FileViewerImage.js +12 -12
- package/es/components/shared/file-viewer/FileViewerIpynb.js +11 -21
- package/es/components/shared/file-viewer/FileViewerNonViewable.js +47 -60
- package/es/components/shared/file-viewer/FileViewerText.js +11 -19
- package/es/components/shared/material-modal/MaterialModal.js +11 -20
- package/es/components/shared/material-modal/MaterialModal.styled.js +5 -5
- package/es/components/shared/monaco-editor/MonacoEditor.js +72 -95
- package/es/components/shared/monaco-editor/MonacoEditorLazy.js +7 -11
- package/es/components/shared/monaco-editor/MonacoEditorMobile.js +32 -43
- package/es/components/shared/monaco-editor/MonacoEditorPerferenceForm.js +194 -244
- package/es/components/shared/monaco-editor/constants/grammars/index.js +28 -82
- package/es/components/shared/monaco-editor/constants/monaco/preferences.js +5 -5
- package/es/components/shared/monaco-editor/constants/themes/index.js +17 -49
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventChange.js +10 -11
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventCursor.js +14 -15
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoEventScroll.js +8 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +30 -34
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoOptions.js +7 -9
- package/es/components/shared/monaco-editor/editor-hooks/useMonacoTheme.js +6 -6
- package/es/components/shared/monaco-editor/editor-languages/css/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/html/formatter.js +10 -33
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/_helper.js +1 -1
- package/es/components/shared/monaco-editor/editor-languages/typescript/formatter.js +10 -37
- package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +3 -3
- package/es/components/shared/monaco-editor/hooks/useEditorOptions.js +5 -11
- package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +12 -10
- package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +6 -12
- package/es/components/shared/monaco-editor/utils/grammar/index.js +24 -67
- package/es/components/shared/monaco-editor/utils/grammar/onigasm.js +6 -25
- package/es/components/shared/monaco-editor/utils/grammar/textmate.js +35 -67
- package/es/components/shared/monaco-editor/utils/monacoLanguage.js +5 -5
- package/es/components/shared/monaco-editor/utils/monacoPreference.js +4 -6
- package/es/components/shared/monaco-editor/utils/prettier/config.js +2 -2
- package/es/components/shared/monaco-editor/utils/prettier/index.js +7 -27
- package/es/components/shared/monaco-editor/utils/theme/convert.js +13 -19
- package/es/components/shared/monaco-editor/utils/theme/index.js +3 -22
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursor.js +56 -77
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorManager.js +68 -82
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteCursorWidget.js +93 -120
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelection.js +130 -152
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/RemoteSelectionManager.js +92 -104
- 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 +6 -1
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +2 -2
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +156 -171
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +3 -3
- package/es/components/shared/no-vnc/NoVnc.js +71 -99
- package/es/components/shared/no-vnc/NoVncLazy.js +7 -11
- package/es/components/shared/preview-container/PreviewContainer.js +14 -15
- package/es/components/shared/web-browser/WebBrowser.js +52 -69
- package/es/components/shared/xterm/Xterm.js +57 -77
- package/es/components/shared/xterm/XtermLazy.js +7 -11
- package/es/constants/arduino.js +10 -10
- package/es/constants/color.js +1 -1
- package/es/constants/shortcutKeyMap.js +1 -3
- package/es/constants/stylesheets.js +5 -7
- package/es/hooks/useArduino.js +141 -278
- package/es/hooks/useExerciseFile.js +22 -24
- package/es/hooks/useExericseShortcut.js +4 -6
- package/es/hooks/useMaterialExerciseFileUrl.js +34 -52
- package/es/hooks/useRunnerRoomWebSocket.js +27 -51
- package/es/hooks/useStdioTextConcator.js +11 -11
- package/es/hooks/useStdioWebSocket.js +28 -32
- package/es/hooks/useUsercodeEditWebSocket.js +157 -232
- package/es/hooks/useUsercodeHistory.js +63 -115
- package/es/utils/arduino.js +12 -24
- package/es/utils/exerciseFile.js +10 -8
- package/es/utils/runner.js +17 -33
- package/package.json +15 -11
- package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -519
- package/cjs/components/index.js +0 -25
- package/cjs/components/locales/index.js +0 -13
- package/cjs/components/material-exercise/context/index.js +0 -57
- package/cjs/components/material-exercise/exercise-code-history/index.js +0 -7
- package/cjs/components/material-exercise/exercise-code-history/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-file/index.js +0 -7
- package/cjs/components/material-exercise/exercise-file-editor/index.js +0 -7
- package/cjs/components/material-exercise/exercise-file-editor/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/index.js +0 -7
- package/cjs/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-file-tabs/index.js +0 -9
- package/cjs/components/material-exercise/exercise-file-tabs/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-file-tree/index.js +0 -9
- package/cjs/components/material-exercise/exercise-file-tree/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-file-viewer/index.js +0 -7
- package/cjs/components/material-exercise/exercise-menu/index.js +0 -7
- package/cjs/components/material-exercise/exercise-menu/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-multilang-dropdown/index.js +0 -9
- package/cjs/components/material-exercise/exercise-preview/index.js +0 -7
- package/cjs/components/material-exercise/exercise-preview/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-rightpane/index.js +0 -7
- package/cjs/components/material-exercise/exercise-rightpane/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-room/helpers/index.js +0 -7
- package/cjs/components/material-exercise/exercise-room/index.js +0 -7
- package/cjs/components/material-exercise/exercise-room/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-runner/index.js +0 -7
- package/cjs/components/material-exercise/exercise-runner/locales/index.js +0 -13
- package/cjs/components/material-exercise/exercise-submit-history/index.js +0 -7
- package/cjs/components/material-exercise/exercise-submit-history/locales/index.js +0 -13
- package/cjs/components/material-exercise/index.js +0 -9
- package/cjs/components/shared/exercise-menu-button/index.js +0 -7
- package/cjs/components/shared/exercise-shimmer/index.js +0 -15
- package/cjs/components/shared/exercise-version-list/index.js +0 -9
- package/cjs/components/shared/file-icon/index.js +0 -7
- package/cjs/components/shared/file-tabs/index.js +0 -7
- package/cjs/components/shared/file-tree/context/index.js +0 -9
- package/cjs/components/shared/file-tree/file-tree-toolbar/index.js +0 -7
- package/cjs/components/shared/file-tree/file-tree-toolbar/locales/index.js +0 -13
- package/cjs/components/shared/file-tree/index.js +0 -7
- package/cjs/components/shared/file-tree/locales/index.js +0 -13
- package/cjs/components/shared/file-tree/utils/index.js +0 -20
- package/cjs/components/shared/file-viewer/index.js +0 -7
- package/cjs/components/shared/file-viewer/locales/index.js +0 -21
- package/cjs/components/shared/material-modal/index.js +0 -7
- package/cjs/components/shared/monaco-editor/constants/index.js +0 -13
- package/cjs/components/shared/monaco-editor/constants/monaco/index.js +0 -11
- package/cjs/components/shared/monaco-editor/editor-hooks/index.js +0 -17
- package/cjs/components/shared/monaco-editor/editor-languages/typescript/dts/index.js +0 -11
- package/cjs/components/shared/monaco-editor/hooks/index.js +0 -7
- package/cjs/components/shared/monaco-editor/index.js +0 -21
- package/cjs/components/shared/monaco-editor/locales/index.js +0 -13
- package/cjs/components/shared/monaco-editor/utils/emmet/index.js +0 -9
- package/cjs/components/shared/monaco-editor/utils/index.js +0 -9
- package/cjs/components/shared/monaco-editor/vendors/monaco-collab-ext/index.js +0 -12
- package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.js +0 -11
- package/cjs/components/shared/no-vnc/index.js +0 -7
- package/cjs/components/shared/preview-container/index.js +0 -9
- package/cjs/components/shared/web-browser/index.js +0 -7
- package/cjs/components/shared/xterm/index.js +0 -7
- package/cjs/components/shared/xterm/locales/index.js +0 -13
- package/cjs/constants/index.js +0 -7
- package/cjs/hooks/index.js +0 -20
- package/cjs/utils/index.js +0 -10
- package/es/_virtual/_rollupPluginBabelHelpers.js +0 -499
- package/es/components/index.js +0 -8
- package/es/components/locales/index.js +0 -4
- package/es/components/material-exercise/context/index.js +0 -5
- package/es/components/material-exercise/exercise-code-history/index.js +0 -1
- package/es/components/material-exercise/exercise-code-history/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-file/index.js +0 -1
- package/es/components/material-exercise/exercise-file-editor/index.js +0 -1
- package/es/components/material-exercise/exercise-file-editor/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/index.js +0 -1
- package/es/components/material-exercise/exercise-file-tabs/exercise-file-tabs-file-tree-button/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-file-tabs/index.js +0 -2
- package/es/components/material-exercise/exercise-file-tabs/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-file-tree/index.js +0 -2
- package/es/components/material-exercise/exercise-file-tree/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-file-viewer/index.js +0 -1
- package/es/components/material-exercise/exercise-menu/index.js +0 -1
- package/es/components/material-exercise/exercise-menu/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-multilang-dropdown/index.js +0 -2
- package/es/components/material-exercise/exercise-preview/index.js +0 -1
- package/es/components/material-exercise/exercise-preview/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-rightpane/index.js +0 -1
- package/es/components/material-exercise/exercise-rightpane/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-room/helpers/index.js +0 -1
- package/es/components/material-exercise/exercise-room/index.js +0 -1
- package/es/components/material-exercise/exercise-room/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-runner/index.js +0 -1
- package/es/components/material-exercise/exercise-runner/locales/index.js +0 -4
- package/es/components/material-exercise/exercise-submit-history/index.js +0 -1
- package/es/components/material-exercise/exercise-submit-history/locales/index.js +0 -4
- package/es/components/material-exercise/index.js +0 -2
- package/es/components/shared/exercise-menu-button/index.js +0 -1
- package/es/components/shared/exercise-shimmer/index.js +0 -5
- package/es/components/shared/exercise-version-list/index.js +0 -2
- package/es/components/shared/file-icon/index.js +0 -1
- package/es/components/shared/file-tabs/index.js +0 -1
- package/es/components/shared/file-tree/context/index.js +0 -1
- package/es/components/shared/file-tree/file-tree-toolbar/index.js +0 -1
- package/es/components/shared/file-tree/file-tree-toolbar/locales/index.js +0 -4
- package/es/components/shared/file-tree/index.js +0 -1
- package/es/components/shared/file-tree/locales/index.js +0 -4
- package/es/components/shared/file-tree/utils/index.js +0 -5
- package/es/components/shared/file-viewer/index.js +0 -1
- package/es/components/shared/file-viewer/locales/index.js +0 -8
- package/es/components/shared/material-modal/index.js +0 -1
- package/es/components/shared/monaco-editor/constants/index.js +0 -2
- package/es/components/shared/monaco-editor/constants/monaco/index.js +0 -1
- package/es/components/shared/monaco-editor/editor-hooks/index.js +0 -6
- package/es/components/shared/monaco-editor/editor-languages/typescript/dts/index.js +0 -3
- package/es/components/shared/monaco-editor/hooks/index.js +0 -1
- package/es/components/shared/monaco-editor/index.js +0 -6
- package/es/components/shared/monaco-editor/locales/index.js +0 -4
- package/es/components/shared/monaco-editor/utils/emmet/index.js +0 -1
- package/es/components/shared/monaco-editor/utils/index.js +0 -2
- package/es/components/shared/monaco-editor/vendors/monaco-collab-ext/index.js +0 -3
- package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.js +0 -2
- package/es/components/shared/no-vnc/index.js +0 -1
- package/es/components/shared/preview-container/index.js +0 -1
- package/es/components/shared/web-browser/index.js +0 -1
- package/es/components/shared/xterm/index.js +0 -1
- package/es/components/shared/xterm/locales/index.js +0 -4
- package/es/constants/index.js +0 -1
- package/es/hooks/index.js +0 -7
- package/es/utils/index.js +0 -2
|
@@ -1,32 +1,37 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _rollupPluginBabelHelpers = require('../../../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
4
3
|
var expand = require('emmet');
|
|
5
4
|
var data = require('./data.js');
|
|
6
5
|
var configCompat = require('./configCompat.js');
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
/* ====================================================================================================
|
|
8
|
+
* These codes forked and modified from `microsoft/vscode-emmet-helper`
|
|
9
|
+
* under the terms of the MIT license.
|
|
10
|
+
* Make sure to check the original project if any issue exists.
|
|
11
|
+
* - project: https://github.com/microsoft/vscode-emmet-helper
|
|
12
|
+
* - codes: https://github.com/microsoft/vscode-emmet-helper/blob/e64481648451f0189216794979ce2ace82ee8148/src/emmetHelper.ts
|
|
13
|
+
* ==================================================================================================== */
|
|
14
|
+
/* istanbul ignore file */
|
|
15
|
+
/* tslint:disable */
|
|
16
|
+
/* eslint-disable */
|
|
12
17
|
// /* workaround for webpack issue: https://github.com/webpack/webpack/issues/5756
|
|
13
18
|
// @emmetio/extract-abbreviation has a cjs that uses a default export
|
|
14
19
|
// */
|
|
15
20
|
// const extract = typeof _extractAbbreviation === 'function' ? _extractAbbreviation : _extractAbbreviation.default;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
const snippetKeyCache = new Map();
|
|
22
|
+
let markupSnippetKeys;
|
|
23
|
+
const stylesheetCustomSnippetsKeyCache = new Map();
|
|
24
|
+
const htmlAbbreviationStartRegex = /^[a-z,A-Z,!,(,[,#,\.\{]/;
|
|
20
25
|
// take off { for jsx because it interferes with the language
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
const jsxAbbreviationStartRegex = /^[a-z,A-Z,!,(,[,#,\.]/;
|
|
27
|
+
const cssAbbreviationRegex = /^-?[a-z,A-Z,!,@,#]/;
|
|
28
|
+
const htmlAbbreviationRegex = /[a-z,A-Z\.]/;
|
|
29
|
+
const commonlyUsedTags = [...data.htmlData.tags, 'lorem'];
|
|
30
|
+
const bemFilterSuffix = 'bem';
|
|
31
|
+
const filterDelimitor = '|';
|
|
32
|
+
const trimFilterSuffix = 't';
|
|
33
|
+
const commentFilterSuffix = 'c';
|
|
34
|
+
const maxFilters = 3;
|
|
30
35
|
/**
|
|
31
36
|
* Returns all applicable emmet expansions for abbreviation at given position in a CompletionList
|
|
32
37
|
*/
|
|
@@ -35,45 +40,47 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
35
40
|
if (emmetConfig.showExpandedAbbreviation === 'never' || !getEmmetMode(syntax, emmetConfig.excludeLanguages)) {
|
|
36
41
|
return;
|
|
37
42
|
}
|
|
38
|
-
|
|
43
|
+
const isStyleSheetRes = isStyleSheet(syntax);
|
|
39
44
|
// Fetch markupSnippets so that we can provide possible abbreviation completions
|
|
40
45
|
// For example, when text at position is `a`, completions should return `a:blank`, `a:link`, `acr` etc.
|
|
41
46
|
if (!isStyleSheetRes) {
|
|
42
47
|
if (!snippetKeyCache.has(syntax)) {
|
|
43
|
-
|
|
48
|
+
const registry = (_a = customSnippetsRegistry[syntax]) !== null && _a !== void 0 ? _a : getDefaultSnippets(syntax);
|
|
44
49
|
snippetKeyCache.set(syntax, Object.keys(registry));
|
|
45
50
|
}
|
|
46
51
|
markupSnippetKeys = (_b = snippetKeyCache.get(syntax)) !== null && _b !== void 0 ? _b : [];
|
|
47
52
|
}
|
|
48
|
-
|
|
53
|
+
const extractOptions = {
|
|
49
54
|
lookAhead: !isStyleSheetRes,
|
|
50
55
|
type: isStyleSheetRes ? 'stylesheet' : 'markup'
|
|
51
56
|
};
|
|
52
|
-
|
|
57
|
+
const extractedValue = extractAbbreviation(_monaco, model, position, extractOptions);
|
|
53
58
|
if (!extractedValue) {
|
|
54
59
|
return;
|
|
55
60
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
const {
|
|
62
|
+
abbreviationRange,
|
|
63
|
+
abbreviation,
|
|
64
|
+
filter
|
|
65
|
+
} = extractedValue;
|
|
66
|
+
const currentLineTillPosition = getCurrentLine(model, position).substr(0, position.column - 1);
|
|
67
|
+
const currentWord = getCurrentWord(currentLineTillPosition);
|
|
61
68
|
// Don't attempt to expand open tags
|
|
62
|
-
if (currentWord === abbreviation && currentLineTillPosition.endsWith(
|
|
69
|
+
if (currentWord === abbreviation && currentLineTillPosition.endsWith(`<${abbreviation}`) && configCompat.syntaxes.markup.includes(syntax)) {
|
|
63
70
|
return;
|
|
64
71
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
72
|
+
const expandOptions = getExpandOptions(syntax, emmetConfig, filter);
|
|
73
|
+
let expandedText = "";
|
|
74
|
+
let expandedAbbr;
|
|
75
|
+
let completionItems = [];
|
|
69
76
|
// Create completion item after expanding given abbreviation
|
|
70
77
|
// if abbreviation is valid and expanded value is not noise
|
|
71
|
-
|
|
78
|
+
const createExpandedAbbr = (syntax, abbr) => {
|
|
72
79
|
if (!isAbbreviationValid(syntax, abbreviation)) {
|
|
73
80
|
return;
|
|
74
81
|
}
|
|
75
82
|
try {
|
|
76
|
-
expandedText =
|
|
83
|
+
expandedText = expand(abbr, expandOptions);
|
|
77
84
|
// manually patch https://github.com/microsoft/vscode/issues/120245 for now
|
|
78
85
|
if (isStyleSheetRes && '!important'.startsWith(abbr)) {
|
|
79
86
|
expandedText = '!important';
|
|
@@ -96,9 +103,7 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
96
103
|
if (isStyleSheet(syntax)) {
|
|
97
104
|
createExpandedAbbr(syntax, abbreviation);
|
|
98
105
|
// When abbr is longer than usual emmet snippets and matches better with existing css property, then no emmet
|
|
99
|
-
if (abbreviation.length > 4 && data.cssData.properties.find(
|
|
100
|
-
return x.startsWith(abbreviation);
|
|
101
|
-
})) {
|
|
106
|
+
if (abbreviation.length > 4 && data.cssData.properties.find(x => x.startsWith(abbreviation))) {
|
|
102
107
|
return {
|
|
103
108
|
suggestions: [],
|
|
104
109
|
incomplete: true
|
|
@@ -111,17 +116,13 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
111
116
|
expandedAbbr.label = removeTabStops(expandedText);
|
|
112
117
|
expandedAbbr.filterText = abbreviation;
|
|
113
118
|
// Custom snippets should show up in completions if abbreviation is a prefix
|
|
114
|
-
|
|
119
|
+
const stylesheetCustomSnippetsKeys = stylesheetCustomSnippetsKeyCache.has(syntax) ? stylesheetCustomSnippetsKeyCache.get(syntax) : stylesheetCustomSnippetsKeyCache.get('css');
|
|
115
120
|
completionItems = makeSnippetSuggestion(_monaco, stylesheetCustomSnippetsKeys !== null && stylesheetCustomSnippetsKeys !== void 0 ? stylesheetCustomSnippetsKeys : [], abbreviation, abbreviation, abbreviationRange, expandOptions, 'Emmet Custom Snippet', false);
|
|
116
|
-
if (!completionItems.find(
|
|
117
|
-
return x.insertText === (expandedAbbr === null || expandedAbbr === void 0 ? void 0 : expandedAbbr.insertText);
|
|
118
|
-
})) {
|
|
121
|
+
if (!completionItems.find(x => x.insertText === (expandedAbbr === null || expandedAbbr === void 0 ? void 0 : expandedAbbr.insertText))) {
|
|
119
122
|
// Fix for https://github.com/Microsoft/vscode/issues/28933#issuecomment-309236902
|
|
120
123
|
// When user types in propertyname, emmet uses it to match with snippet names, resulting in width -> widows or font-family -> font: family
|
|
121
124
|
// Filter out those cases here.
|
|
122
|
-
|
|
123
|
-
return x === '$' || x === '+' ? '\\' + x : x;
|
|
124
|
-
}).join('.*') + '.*', 'i');
|
|
125
|
+
const abbrRegex = new RegExp('.*' + abbreviation.split('').map(x => x === '$' || x === '+' ? '\\' + x : x).join('.*') + '.*', 'i');
|
|
125
126
|
if (/\d/.test(abbreviation) || abbrRegex.test(expandedAbbr.label)) {
|
|
126
127
|
completionItems.push(expandedAbbr);
|
|
127
128
|
}
|
|
@@ -129,23 +130,21 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
129
130
|
}
|
|
130
131
|
} else {
|
|
131
132
|
createExpandedAbbr(syntax, abbreviation);
|
|
132
|
-
|
|
133
|
-
|
|
133
|
+
let tagToFindMoreSuggestionsFor = abbreviation;
|
|
134
|
+
const newTagMatches = /(>|\+)([\w:-]+)$/.exec(abbreviation);
|
|
134
135
|
if (newTagMatches && newTagMatches.length === 3) {
|
|
135
136
|
tagToFindMoreSuggestionsFor = newTagMatches[2];
|
|
136
137
|
}
|
|
137
138
|
if (syntax !== 'xml') {
|
|
138
|
-
|
|
139
|
+
const commonlyUsedTagSuggestions = makeSnippetSuggestion(_monaco, commonlyUsedTags, tagToFindMoreSuggestionsFor, abbreviation, abbreviationRange, expandOptions, 'Emmet Abbreviation');
|
|
139
140
|
completionItems = completionItems.concat(commonlyUsedTagSuggestions);
|
|
140
141
|
}
|
|
141
142
|
if (emmetConfig.showAbbreviationSuggestions === true) {
|
|
142
|
-
|
|
143
|
-
return !commonlyUsedTags.includes(x);
|
|
144
|
-
}), tagToFindMoreSuggestionsFor, abbreviation, abbreviationRange, expandOptions, 'Emmet Abbreviation');
|
|
143
|
+
const abbreviationSuggestions = makeSnippetSuggestion(_monaco, markupSnippetKeys.filter(x => !commonlyUsedTags.includes(x)), tagToFindMoreSuggestionsFor, abbreviation, abbreviationRange, expandOptions, 'Emmet Abbreviation');
|
|
145
144
|
// Workaround for the main expanded abbr not appearing before the snippet suggestions
|
|
146
145
|
if (expandedAbbr && abbreviationSuggestions.length > 0 && tagToFindMoreSuggestionsFor !== abbreviation) {
|
|
147
146
|
expandedAbbr.sortText = '0' + expandedAbbr.label;
|
|
148
|
-
abbreviationSuggestions.forEach(
|
|
147
|
+
abbreviationSuggestions.forEach(item => {
|
|
149
148
|
// Workaround for snippet suggestions items getting filtered out as the complete abbr does not start with snippetKey
|
|
150
149
|
item.filterText = abbreviation;
|
|
151
150
|
// Workaround for the main expanded abbr not appearing before the snippet suggestions
|
|
@@ -155,16 +154,12 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
155
154
|
completionItems = completionItems.concat(abbreviationSuggestions);
|
|
156
155
|
}
|
|
157
156
|
// https://github.com/microsoft/vscode/issues/66680
|
|
158
|
-
if (syntax === 'html' && completionItems.length >= 2 && abbreviation.includes(":") && (expandedAbbr === null || expandedAbbr === void 0 ? void 0 : expandedAbbr.insertText) ===
|
|
159
|
-
completionItems = completionItems.filter(
|
|
160
|
-
return item.label !== abbreviation;
|
|
161
|
-
});
|
|
157
|
+
if (syntax === 'html' && completionItems.length >= 2 && abbreviation.includes(":") && (expandedAbbr === null || expandedAbbr === void 0 ? void 0 : expandedAbbr.insertText) === `<${abbreviation}>\${0}</${abbreviation}>`) {
|
|
158
|
+
completionItems = completionItems.filter(item => item.label !== abbreviation);
|
|
162
159
|
}
|
|
163
160
|
}
|
|
164
161
|
if (emmetConfig.showSuggestionsAsSnippets === true) {
|
|
165
|
-
completionItems.forEach(
|
|
166
|
-
return x.kind = _monaco.languages.CompletionItemKind.Snippet;
|
|
167
|
-
});
|
|
162
|
+
completionItems.forEach(x => x.kind = _monaco.languages.CompletionItemKind.Snippet);
|
|
168
163
|
}
|
|
169
164
|
return completionItems.length ? {
|
|
170
165
|
suggestions: completionItems,
|
|
@@ -174,25 +169,24 @@ function doComplete(_monaco, model, position, syntax, emmetConfig) {
|
|
|
174
169
|
/**
|
|
175
170
|
* Create & return snippets for snippet keys that start with given prefix
|
|
176
171
|
*/
|
|
177
|
-
function makeSnippetSuggestion(_monaco, snippetKeys, prefix, abbreviation, abbreviationRange, expandOptions, snippetDetail) {
|
|
178
|
-
var skipFullMatch = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;
|
|
172
|
+
function makeSnippetSuggestion(_monaco, snippetKeys, prefix, abbreviation, abbreviationRange, expandOptions, snippetDetail, skipFullMatch = true) {
|
|
179
173
|
if (!prefix || !snippetKeys) {
|
|
180
174
|
return [];
|
|
181
175
|
}
|
|
182
|
-
|
|
183
|
-
snippetKeys.forEach(
|
|
176
|
+
const snippetCompletions = [];
|
|
177
|
+
snippetKeys.forEach(snippetKey => {
|
|
184
178
|
if (!snippetKey.startsWith(prefix.toLowerCase()) || skipFullMatch && snippetKey === prefix.toLowerCase()) {
|
|
185
179
|
return;
|
|
186
180
|
}
|
|
187
|
-
|
|
188
|
-
|
|
181
|
+
const currentAbbr = abbreviation + snippetKey.substr(prefix.length);
|
|
182
|
+
let expandedAbbr;
|
|
189
183
|
try {
|
|
190
|
-
expandedAbbr =
|
|
184
|
+
expandedAbbr = expand(currentAbbr, expandOptions);
|
|
191
185
|
} catch (e) {}
|
|
192
186
|
if (!expandedAbbr) {
|
|
193
187
|
return;
|
|
194
188
|
}
|
|
195
|
-
|
|
189
|
+
const item = {
|
|
196
190
|
kind: _monaco.languages.CompletionItemKind.Property,
|
|
197
191
|
label: prefix + snippetKey.substr(prefix.length),
|
|
198
192
|
documentation: replaceTabStopsWithCursors(expandedAbbr),
|
|
@@ -207,7 +201,7 @@ function makeSnippetSuggestion(_monaco, snippetKeys, prefix, abbreviation, abbre
|
|
|
207
201
|
}
|
|
208
202
|
function getCurrentWord(currentLineTillPosition) {
|
|
209
203
|
if (currentLineTillPosition) {
|
|
210
|
-
|
|
204
|
+
const matches = /[\w,:,-,\.]*$/.exec(currentLineTillPosition);
|
|
211
205
|
if (matches) {
|
|
212
206
|
return matches[0];
|
|
213
207
|
}
|
|
@@ -226,12 +220,12 @@ function addFinalTabStop(text) {
|
|
|
226
220
|
if (!text || !text.trim()) {
|
|
227
221
|
return text;
|
|
228
222
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
223
|
+
let maxTabStop = -1;
|
|
224
|
+
let maxTabStopRanges = [];
|
|
225
|
+
let foundLastStop = false;
|
|
226
|
+
let replaceWithLastStop = false;
|
|
227
|
+
let i = 0;
|
|
228
|
+
const n = text.length;
|
|
235
229
|
try {
|
|
236
230
|
while (i < n && !foundLastStop) {
|
|
237
231
|
// Look for ${
|
|
@@ -239,8 +233,8 @@ function addFinalTabStop(text) {
|
|
|
239
233
|
continue;
|
|
240
234
|
}
|
|
241
235
|
// Find tabstop
|
|
242
|
-
|
|
243
|
-
|
|
236
|
+
let numberStart = -1;
|
|
237
|
+
let numberEnd = -1;
|
|
244
238
|
while (i < n && /\d/.test(text[i])) {
|
|
245
239
|
numberStart = numberStart < 0 ? i : numberStart;
|
|
246
240
|
numberEnd = i + 1;
|
|
@@ -251,12 +245,12 @@ function addFinalTabStop(text) {
|
|
|
251
245
|
continue;
|
|
252
246
|
}
|
|
253
247
|
// If ${0} was found, then break
|
|
254
|
-
|
|
248
|
+
const currentTabStop = text.substring(numberStart, numberEnd);
|
|
255
249
|
foundLastStop = currentTabStop === '0';
|
|
256
250
|
if (foundLastStop) {
|
|
257
251
|
break;
|
|
258
252
|
}
|
|
259
|
-
|
|
253
|
+
let foundPlaceholder = false;
|
|
260
254
|
if (text[i++] == ':') {
|
|
261
255
|
// TODO: Nested placeholders may break here
|
|
262
256
|
while (i < n) {
|
|
@@ -271,37 +265,35 @@ function addFinalTabStop(text) {
|
|
|
271
265
|
if (Number(currentTabStop) > Number(maxTabStop)) {
|
|
272
266
|
maxTabStop = Number(currentTabStop);
|
|
273
267
|
maxTabStopRanges = [{
|
|
274
|
-
numberStart
|
|
275
|
-
numberEnd
|
|
268
|
+
numberStart,
|
|
269
|
+
numberEnd
|
|
276
270
|
}];
|
|
277
271
|
replaceWithLastStop = !foundPlaceholder;
|
|
278
272
|
} else if (Number(currentTabStop) === maxTabStop) {
|
|
279
273
|
maxTabStopRanges.push({
|
|
280
|
-
numberStart
|
|
281
|
-
numberEnd
|
|
274
|
+
numberStart,
|
|
275
|
+
numberEnd
|
|
282
276
|
});
|
|
283
277
|
}
|
|
284
278
|
}
|
|
285
279
|
} catch (e) {}
|
|
286
280
|
if (replaceWithLastStop && !foundLastStop) {
|
|
287
|
-
for (
|
|
288
|
-
|
|
289
|
-
|
|
281
|
+
for (let i = 0; i < maxTabStopRanges.length; i++) {
|
|
282
|
+
const rangeStart = maxTabStopRanges[i].numberStart;
|
|
283
|
+
const rangeEnd = maxTabStopRanges[i].numberEnd;
|
|
290
284
|
text = text.substr(0, rangeStart) + '0' + text.substr(rangeEnd);
|
|
291
285
|
}
|
|
292
286
|
}
|
|
293
287
|
return text;
|
|
294
288
|
}
|
|
295
289
|
function getCurrentLine(model, position) {
|
|
296
|
-
|
|
290
|
+
const currentLine = model.getLineContent(position.lineNumber);
|
|
297
291
|
return currentLine;
|
|
298
292
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
return "${".concat(index).concat(placeholder ? ':' + placeholder : '', "}");
|
|
304
|
-
};
|
|
293
|
+
let customSnippetsRegistry = {};
|
|
294
|
+
let variablesFromFile = {};
|
|
295
|
+
let profilesFromFile = {};
|
|
296
|
+
const emmetSnippetField = (index, placeholder) => `\${${index}${placeholder ? ':' + placeholder : ''}}`;
|
|
305
297
|
/** Returns whether or not syntax is a supported stylesheet syntax, like CSS */
|
|
306
298
|
function isStyleSheet(syntax) {
|
|
307
299
|
return configCompat.syntaxes.stylesheet.includes(syntax);
|
|
@@ -316,26 +308,26 @@ function getDefaultSyntax(syntax) {
|
|
|
316
308
|
}
|
|
317
309
|
/** Returns the default snippets that Emmet suggests */
|
|
318
310
|
function getDefaultSnippets(syntax) {
|
|
319
|
-
|
|
320
|
-
|
|
311
|
+
const syntaxType = getSyntaxType(syntax);
|
|
312
|
+
const emptyUserConfig = {
|
|
321
313
|
type: syntaxType,
|
|
322
|
-
syntax
|
|
314
|
+
syntax
|
|
323
315
|
};
|
|
324
|
-
|
|
316
|
+
const resolvedConfig = expand.resolveConfig(emptyUserConfig);
|
|
325
317
|
// https://github.com/microsoft/vscode/issues/97632
|
|
326
318
|
// don't return markup (HTML) snippets for XML
|
|
327
319
|
return syntax === 'xml' ? {} : resolvedConfig.snippets;
|
|
328
320
|
}
|
|
329
321
|
function getFilters(text, pos) {
|
|
330
|
-
|
|
331
|
-
for (
|
|
332
|
-
if (text.endsWith(
|
|
322
|
+
let filter;
|
|
323
|
+
for (let i = 0; i < maxFilters; i++) {
|
|
324
|
+
if (text.endsWith(`${filterDelimitor}${bemFilterSuffix}`, pos)) {
|
|
333
325
|
pos -= bemFilterSuffix.length + 1;
|
|
334
326
|
filter = filter ? bemFilterSuffix + ',' + filter : bemFilterSuffix;
|
|
335
|
-
} else if (text.endsWith(
|
|
327
|
+
} else if (text.endsWith(`${filterDelimitor}${commentFilterSuffix}`, pos)) {
|
|
336
328
|
pos -= commentFilterSuffix.length + 1;
|
|
337
329
|
filter = filter ? commentFilterSuffix + ',' + filter : commentFilterSuffix;
|
|
338
|
-
} else if (text.endsWith(
|
|
330
|
+
} else if (text.endsWith(`${filterDelimitor}${trimFilterSuffix}`, pos)) {
|
|
339
331
|
pos -= trimFilterSuffix.length + 1;
|
|
340
332
|
filter = filter ? trimFilterSuffix + ',' + filter : trimFilterSuffix;
|
|
341
333
|
} else {
|
|
@@ -351,21 +343,22 @@ function getFilters(text, pos) {
|
|
|
351
343
|
* Extracts abbreviation from the given position in the given document
|
|
352
344
|
*/
|
|
353
345
|
function extractAbbreviation(_monaco, model, position, options) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
pos
|
|
358
|
-
filter
|
|
359
|
-
|
|
360
|
-
|
|
346
|
+
const currentLine = model.getLineContent(position.lineNumber);
|
|
347
|
+
const currentLineTillPosition = currentLine.substr(0, position.column - 1);
|
|
348
|
+
const {
|
|
349
|
+
pos,
|
|
350
|
+
filter
|
|
351
|
+
} = getFilters(currentLineTillPosition, position.column - 1);
|
|
352
|
+
const lengthOccupiedByFilter = filter ? filter.length + 1 : 0;
|
|
353
|
+
const result = expand.extract(currentLine, pos, options);
|
|
361
354
|
if (!result) {
|
|
362
355
|
return;
|
|
363
356
|
}
|
|
364
|
-
|
|
357
|
+
const rangeToReplace = new _monaco.Range(position.lineNumber, result.location + 1, position.lineNumber, result.location + result.abbreviation.length + lengthOccupiedByFilter + 1);
|
|
365
358
|
return {
|
|
366
359
|
abbreviationRange: rangeToReplace,
|
|
367
360
|
abbreviation: result.abbreviation,
|
|
368
|
-
filter
|
|
361
|
+
filter
|
|
369
362
|
};
|
|
370
363
|
}
|
|
371
364
|
/**
|
|
@@ -381,7 +374,7 @@ function isAbbreviationValid(syntax, abbreviation) {
|
|
|
381
374
|
if (isStyleSheet(syntax)) {
|
|
382
375
|
if (abbreviation.includes('#')) {
|
|
383
376
|
if (abbreviation.startsWith('#')) {
|
|
384
|
-
|
|
377
|
+
const hexColorRegex = /^#[\d,a-f,A-F]{1,6}$/;
|
|
385
378
|
return hexColorRegex.test(abbreviation);
|
|
386
379
|
} else if (commonlyUsedTags.includes(abbreviation.substring(0, abbreviation.indexOf('#')))) {
|
|
387
380
|
return false;
|
|
@@ -407,18 +400,16 @@ function isExpandedTextNoise(syntax, abbreviation, expandedText, options) {
|
|
|
407
400
|
// Unresolved css abbreviations get expanded to a blank property value
|
|
408
401
|
// Eg: abc -> abc: ; or abc:d -> abc: d; which is noise if it gets suggested for every word typed
|
|
409
402
|
if (isStyleSheet(syntax) && options) {
|
|
410
|
-
|
|
411
|
-
|
|
403
|
+
const between = (_a = options['stylesheet.between']) !== null && _a !== void 0 ? _a : ': ';
|
|
404
|
+
const after = (_b = options['stylesheet.after']) !== null && _b !== void 0 ? _b : ';';
|
|
412
405
|
// Remove overlapping between `abbreviation` and `between`, if any
|
|
413
|
-
|
|
406
|
+
let endPrefixIndex = abbreviation.indexOf(between[0], Math.max(abbreviation.length - between.length, 0));
|
|
414
407
|
endPrefixIndex = endPrefixIndex >= 0 ? endPrefixIndex : abbreviation.length;
|
|
415
|
-
|
|
416
|
-
return expandedText ===
|
|
408
|
+
const abbr = abbreviation.substring(0, endPrefixIndex);
|
|
409
|
+
return expandedText === `${abbr}${between}\${0}${after}` || expandedText.replace(/\s/g, '') === abbreviation.replace(/\s/g, '') + after;
|
|
417
410
|
}
|
|
418
411
|
// we don't want common html tags suggested for xml
|
|
419
|
-
if (syntax === 'xml' && commonlyUsedTags.some(
|
|
420
|
-
return tag.startsWith(abbreviation.toLowerCase());
|
|
421
|
-
})) {
|
|
412
|
+
if (syntax === 'xml' && commonlyUsedTags.some(tag => tag.startsWith(abbreviation.toLowerCase()))) {
|
|
422
413
|
return true;
|
|
423
414
|
}
|
|
424
415
|
if (commonlyUsedTags.includes(abbreviation.toLowerCase()) || markupSnippetKeys.includes(abbreviation)) {
|
|
@@ -436,7 +427,7 @@ function isExpandedTextNoise(syntax, abbreviation, expandedText, options) {
|
|
|
436
427
|
if (abbreviation === '.') {
|
|
437
428
|
return false;
|
|
438
429
|
}
|
|
439
|
-
|
|
430
|
+
const dotMatches = /^([a-z,A-Z,\d]*)\.$/.exec(abbreviation);
|
|
440
431
|
if (dotMatches) {
|
|
441
432
|
// Valid html tags such as `div.`
|
|
442
433
|
if (dotMatches[1] && data.htmlData.tags.includes(dotMatches[1])) {
|
|
@@ -452,7 +443,7 @@ function isExpandedTextNoise(syntax, abbreviation, expandedText, options) {
|
|
|
452
443
|
}
|
|
453
444
|
// Unresolved html abbreviations get expanded as if it were a tag
|
|
454
445
|
// Eg: abc -> <abc></abc> which is noise if it gets suggested for every word typed
|
|
455
|
-
return expandedText.toLowerCase() ===
|
|
446
|
+
return expandedText.toLowerCase() === `<${abbreviation.toLowerCase()}>\${1}</${abbreviation.toLowerCase()}>`;
|
|
456
447
|
}
|
|
457
448
|
/**
|
|
458
449
|
* Returns options to be used by emmet
|
|
@@ -461,26 +452,20 @@ function getExpandOptions(syntax, emmetConfig, filter) {
|
|
|
461
452
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
462
453
|
emmetConfig = emmetConfig !== null && emmetConfig !== void 0 ? emmetConfig : {};
|
|
463
454
|
emmetConfig['preferences'] = (_a = emmetConfig['preferences']) !== null && _a !== void 0 ? _a : {};
|
|
464
|
-
|
|
465
|
-
|
|
455
|
+
const preferences = emmetConfig['preferences'];
|
|
456
|
+
const stylesheetSyntax = isStyleSheet(syntax) ? syntax : 'css';
|
|
466
457
|
// Fetch Profile
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
var bemEnabled = filter && filter.split(',').some(function (x) {
|
|
473
|
-
return x.trim() === 'bem';
|
|
474
|
-
}) || trimmedFilters.includes('bem');
|
|
475
|
-
var commentEnabled = filter && filter.split(',').some(function (x) {
|
|
476
|
-
return x.trim() === 'c';
|
|
477
|
-
}) || trimmedFilters.includes('c');
|
|
458
|
+
const profile = getProfile(syntax, (_b = emmetConfig['syntaxProfiles']) !== null && _b !== void 0 ? _b : {});
|
|
459
|
+
const filtersFromProfile = profile && profile['filters'] ? profile['filters'].split(',') : [];
|
|
460
|
+
const trimmedFilters = filtersFromProfile.map(filterFromProfile => filterFromProfile.trim());
|
|
461
|
+
const bemEnabled = filter && filter.split(',').some(x => x.trim() === 'bem') || trimmedFilters.includes('bem');
|
|
462
|
+
const commentEnabled = filter && filter.split(',').some(x => x.trim() === 'c') || trimmedFilters.includes('c');
|
|
478
463
|
// Fetch formatters
|
|
479
|
-
|
|
480
|
-
|
|
464
|
+
const formatters = getFormatters(syntax, emmetConfig['preferences']);
|
|
465
|
+
const unitAliases = (formatters === null || formatters === void 0 ? void 0 : formatters.stylesheet) && formatters.stylesheet['unitAliases'] || {};
|
|
481
466
|
// These options are the default values provided by vscode for
|
|
482
467
|
// extension preferences
|
|
483
|
-
|
|
468
|
+
const defaultVSCodeOptions = {
|
|
484
469
|
// inlineElements: string[],
|
|
485
470
|
// 'output.indent': string,
|
|
486
471
|
// 'output.baseIndent': string,
|
|
@@ -526,7 +511,7 @@ function getExpandOptions(syntax, emmetConfig, filter) {
|
|
|
526
511
|
'stylesheet.fuzzySearchMinScore': 0.3
|
|
527
512
|
};
|
|
528
513
|
// These options come from user prefs in the vscode repo
|
|
529
|
-
|
|
514
|
+
const userPreferenceOptions = {
|
|
530
515
|
// inlineElements: string[],
|
|
531
516
|
// 'output.indent': string,
|
|
532
517
|
// 'output.baseIndent': string,
|
|
@@ -557,8 +542,8 @@ function getExpandOptions(syntax, emmetConfig, filter) {
|
|
|
557
542
|
// 'stylesheet.keywords': string[],
|
|
558
543
|
// 'stylesheet.unitless': string[],
|
|
559
544
|
'stylesheet.shortHex': preferences['css.color.short'],
|
|
560
|
-
'stylesheet.between': preferences[
|
|
561
|
-
'stylesheet.after': preferences[
|
|
545
|
+
'stylesheet.between': preferences[`${stylesheetSyntax}.valueSeparator`],
|
|
546
|
+
'stylesheet.after': preferences[`${stylesheetSyntax}.propertyEnd`],
|
|
562
547
|
'stylesheet.intUnit': preferences['css.intUnit'],
|
|
563
548
|
'stylesheet.floatUnit': preferences['css.floatUnit'],
|
|
564
549
|
'stylesheet.unitAliases': unitAliases,
|
|
@@ -566,24 +551,24 @@ function getExpandOptions(syntax, emmetConfig, filter) {
|
|
|
566
551
|
// 'stylesheet.jsonDoubleQuotes': boolean,
|
|
567
552
|
'stylesheet.fuzzySearchMinScore': preferences['css.fuzzySearchMinScore']
|
|
568
553
|
};
|
|
569
|
-
|
|
570
|
-
[
|
|
554
|
+
const combinedOptions = {};
|
|
555
|
+
[...Object.keys(defaultVSCodeOptions), ...Object.keys(userPreferenceOptions)].forEach(key => {
|
|
571
556
|
var _a;
|
|
572
|
-
|
|
557
|
+
const castKey = key;
|
|
573
558
|
combinedOptions[castKey] = (_a = userPreferenceOptions[castKey]) !== null && _a !== void 0 ? _a : defaultVSCodeOptions[castKey];
|
|
574
559
|
});
|
|
575
|
-
|
|
560
|
+
const mergedAliases = Object.assign(Object.assign({}, defaultVSCodeOptions['stylesheet.unitAliases']), userPreferenceOptions['stylesheet.unitAliases']);
|
|
576
561
|
combinedOptions['stylesheet.unitAliases'] = mergedAliases;
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
562
|
+
const type = getSyntaxType(syntax);
|
|
563
|
+
const variables = getVariables(emmetConfig['variables']);
|
|
564
|
+
const baseSyntax = getDefaultSyntax(syntax);
|
|
565
|
+
const snippets = type === 'stylesheet' ? (_k = customSnippetsRegistry[syntax]) !== null && _k !== void 0 ? _k : customSnippetsRegistry[baseSyntax] : customSnippetsRegistry[syntax];
|
|
581
566
|
return {
|
|
582
|
-
type
|
|
567
|
+
type,
|
|
583
568
|
options: combinedOptions,
|
|
584
|
-
variables
|
|
585
|
-
snippets
|
|
586
|
-
syntax
|
|
569
|
+
variables,
|
|
570
|
+
snippets,
|
|
571
|
+
syntax,
|
|
587
572
|
// context: null,
|
|
588
573
|
text: undefined,
|
|
589
574
|
maxRepeat: 1000
|
|
@@ -613,8 +598,8 @@ function getProfile(syntax, profilesFromSettings) {
|
|
|
613
598
|
if (!profilesFromSettings) {
|
|
614
599
|
profilesFromSettings = {};
|
|
615
600
|
}
|
|
616
|
-
|
|
617
|
-
|
|
601
|
+
const profilesConfig = Object.assign({}, profilesFromFile, profilesFromSettings);
|
|
602
|
+
const options = profilesConfig[syntax];
|
|
618
603
|
if (!options || typeof options === 'string') {
|
|
619
604
|
if (options === 'xhtml') {
|
|
620
605
|
return {
|
|
@@ -623,8 +608,8 @@ function getProfile(syntax, profilesFromSettings) {
|
|
|
623
608
|
}
|
|
624
609
|
return {};
|
|
625
610
|
}
|
|
626
|
-
|
|
627
|
-
for (
|
|
611
|
+
const newOptions = {};
|
|
612
|
+
for (const key in options) {
|
|
628
613
|
switch (key) {
|
|
629
614
|
case 'tag_case':
|
|
630
615
|
newOptions['tagCase'] = options[key] === 'lower' || options[key] === 'upper' ? options[key] : '';
|
|
@@ -672,12 +657,12 @@ function getVariables(variablesFromSettings) {
|
|
|
672
657
|
return Object.assign({}, variablesFromFile, variablesFromSettings);
|
|
673
658
|
}
|
|
674
659
|
function getFormatters(syntax, preferences) {
|
|
675
|
-
if (!preferences ||
|
|
660
|
+
if (!preferences || typeof preferences !== 'object') {
|
|
676
661
|
return {};
|
|
677
662
|
}
|
|
678
663
|
if (!isStyleSheet(syntax)) {
|
|
679
|
-
|
|
680
|
-
for (
|
|
664
|
+
const commentFormatter = {};
|
|
665
|
+
for (const key in preferences) {
|
|
681
666
|
switch (key) {
|
|
682
667
|
case 'filter.commentAfter':
|
|
683
668
|
commentFormatter['after'] = preferences[key];
|
|
@@ -694,31 +679,31 @@ function getFormatters(syntax, preferences) {
|
|
|
694
679
|
comment: commentFormatter
|
|
695
680
|
};
|
|
696
681
|
}
|
|
697
|
-
|
|
682
|
+
let fuzzySearchMinScore = typeof (preferences === null || preferences === void 0 ? void 0 : preferences['css.fuzzySearchMinScore']) === 'number' ? preferences['css.fuzzySearchMinScore'] : 0.3;
|
|
698
683
|
if (fuzzySearchMinScore > 1) {
|
|
699
684
|
fuzzySearchMinScore = 1;
|
|
700
685
|
} else if (fuzzySearchMinScore < 0) {
|
|
701
686
|
fuzzySearchMinScore = 0;
|
|
702
687
|
}
|
|
703
|
-
|
|
688
|
+
const stylesheetFormatter = {
|
|
704
689
|
'fuzzySearchMinScore': fuzzySearchMinScore
|
|
705
690
|
};
|
|
706
|
-
|
|
707
|
-
switch (
|
|
691
|
+
for (const key in preferences) {
|
|
692
|
+
switch (key) {
|
|
708
693
|
case 'css.floatUnit':
|
|
709
|
-
stylesheetFormatter['floatUnit'] = preferences[
|
|
694
|
+
stylesheetFormatter['floatUnit'] = preferences[key];
|
|
710
695
|
break;
|
|
711
696
|
case 'css.intUnit':
|
|
712
|
-
stylesheetFormatter['intUnit'] = preferences[
|
|
697
|
+
stylesheetFormatter['intUnit'] = preferences[key];
|
|
713
698
|
break;
|
|
714
699
|
case 'css.unitAliases':
|
|
715
|
-
|
|
716
|
-
preferences[
|
|
700
|
+
const unitAliases = {};
|
|
701
|
+
preferences[key].split(',').forEach(alias => {
|
|
717
702
|
if (!alias || !alias.trim() || !alias.includes(':')) {
|
|
718
703
|
return;
|
|
719
704
|
}
|
|
720
|
-
|
|
721
|
-
|
|
705
|
+
const aliasName = alias.substr(0, alias.indexOf(':'));
|
|
706
|
+
const aliasValue = alias.substr(aliasName.length + 1);
|
|
722
707
|
if (!aliasName.trim() || !aliasValue) {
|
|
723
708
|
return;
|
|
724
709
|
}
|
|
@@ -726,16 +711,13 @@ function getFormatters(syntax, preferences) {
|
|
|
726
711
|
});
|
|
727
712
|
stylesheetFormatter['unitAliases'] = unitAliases;
|
|
728
713
|
break;
|
|
729
|
-
case
|
|
730
|
-
stylesheetFormatter['between'] = preferences[
|
|
714
|
+
case `${syntax}.valueSeparator`:
|
|
715
|
+
stylesheetFormatter['between'] = preferences[key];
|
|
731
716
|
break;
|
|
732
|
-
case
|
|
733
|
-
stylesheetFormatter['after'] = preferences[
|
|
717
|
+
case `${syntax}.propertyEnd`:
|
|
718
|
+
stylesheetFormatter['after'] = preferences[key];
|
|
734
719
|
break;
|
|
735
720
|
}
|
|
736
|
-
};
|
|
737
|
-
for (var _key in preferences) {
|
|
738
|
-
_loop();
|
|
739
721
|
}
|
|
740
722
|
return {
|
|
741
723
|
stylesheet: stylesheetFormatter
|
|
@@ -750,8 +732,7 @@ function getFormatters(syntax, preferences) {
|
|
|
750
732
|
* @param language
|
|
751
733
|
* @param exlcudedLanguages Array of language ids that user has chosen to exlcude for emmet
|
|
752
734
|
*/
|
|
753
|
-
function getEmmetMode(language) {
|
|
754
|
-
var excludedLanguages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
735
|
+
function getEmmetMode(language, excludedLanguages = []) {
|
|
755
736
|
if (!language || excludedLanguages.includes(language)) {
|
|
756
737
|
return;
|
|
757
738
|
}
|