@elice/material-exercise 1.220913.0 → 1.220920.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.
Files changed (91) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.styled.js +1 -1
  2. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +9 -1
  3. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +5 -1
  4. package/cjs/components/shared/monaco-editor/MonacoEditor.js +9 -9
  5. package/cjs/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +3 -3
  6. package/cjs/components/shared/monaco-editor/editor-languages/css/index.d.ts +4 -0
  7. package/cjs/components/shared/monaco-editor/editor-languages/css/index.js +12 -0
  8. package/cjs/components/shared/monaco-editor/editor-languages/html/index.d.ts +4 -0
  9. package/cjs/components/shared/monaco-editor/editor-languages/html/index.js +10 -0
  10. package/cjs/components/shared/monaco-editor/editor-languages/index.js +2 -2
  11. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.d.ts +4 -0
  12. package/cjs/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -0
  13. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.d.ts +6 -0
  14. package/cjs/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +65 -0
  15. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.d.ts +13 -0
  16. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +31 -0
  17. package/cjs/components/shared/monaco-editor/utils/emmet/index.d.ts +1 -0
  18. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.d.ts +5 -0
  19. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +27 -0
  20. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +2 -2
  21. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +6 -2
  22. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.d.ts +15 -0
  23. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +15 -0
  24. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.d.ts +6 -0
  25. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +22 -0
  26. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.d.ts +92 -0
  27. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +896 -0
  28. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.d.ts +2 -0
  29. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.d.ts +17 -0
  30. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +48 -0
  31. package/cjs/components/shared/xterm/Xterm.js +10 -3
  32. package/es/components/material-exercise/MaterialExercise.styled.js +1 -1
  33. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +10 -2
  34. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +5 -1
  35. package/es/components/shared/monaco-editor/MonacoEditor.js +11 -11
  36. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +3 -3
  37. package/es/components/shared/monaco-editor/editor-languages/css/index.d.ts +4 -0
  38. package/es/components/shared/monaco-editor/editor-languages/css/index.js +12 -1
  39. package/es/components/shared/monaco-editor/editor-languages/html/index.d.ts +4 -0
  40. package/es/components/shared/monaco-editor/editor-languages/html/index.js +10 -1
  41. package/es/components/shared/monaco-editor/editor-languages/index.js +2 -2
  42. package/es/components/shared/monaco-editor/editor-languages/typescript/index.d.ts +4 -0
  43. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -1
  44. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.d.ts +6 -0
  45. package/es/components/shared/monaco-editor/utils/emmet/abbreviationActions.js +61 -0
  46. package/es/components/shared/monaco-editor/utils/emmet/emmet.d.ts +13 -0
  47. package/es/components/shared/monaco-editor/utils/emmet/emmet.js +25 -0
  48. package/es/components/shared/monaco-editor/utils/emmet/index.d.ts +1 -0
  49. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.d.ts +5 -0
  50. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +23 -0
  51. package/es/components/shared/monaco-editor/utils/grammar/index.js +2 -2
  52. package/es/components/shared/monaco-editor/utils/prettier/index.js +6 -2
  53. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.d.ts +15 -0
  54. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +11 -0
  55. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.d.ts +6 -0
  56. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +17 -0
  57. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.d.ts +92 -0
  58. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +879 -0
  59. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.d.ts +2 -0
  60. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.d.ts +17 -0
  61. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +42 -0
  62. package/es/components/shared/xterm/Xterm.js +10 -3
  63. package/package.json +7 -6
  64. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/OnDisposed.d.ts +0 -0
  65. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.d.ts +0 -0
  66. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.js +0 -0
  67. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.d.ts +0 -0
  68. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.js +0 -0
  69. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.d.ts +0 -0
  70. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.js +0 -0
  71. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.d.ts +0 -0
  72. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.js +0 -0
  73. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.d.ts +0 -0
  74. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.js +0 -0
  75. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/index.d.ts +0 -0
  76. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.d.ts +0 -0
  77. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.js +0 -0
  78. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/OnDisposed.d.ts +0 -0
  79. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.d.ts +0 -0
  80. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.js +0 -0
  81. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.d.ts +0 -0
  82. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.js +0 -0
  83. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.d.ts +0 -0
  84. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.js +0 -0
  85. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.d.ts +0 -0
  86. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.js +0 -0
  87. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.d.ts +0 -0
  88. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.js +0 -0
  89. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/index.d.ts +0 -0
  90. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.d.ts +0 -0
  91. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.js +0 -0
@@ -28,7 +28,7 @@ const EXERCISE_HORIZONTAL_RATIO = {
28
28
 
29
29
  const StyledExerciseContainer = styled__default["default"].div.withConfig({
30
30
  componentId: "sc-9joi7g-0"
31
- })(["flex:1;display:flex;flex-direction:column;height:100%;min-width:0;min-height:0;overflow:hidden;"]);
31
+ })(["flex:1;display:flex;flex-direction:column;height:100%;min-width:0;min-height:0;"]);
32
32
  /**
33
33
  * Wrapper contains:
34
34
  * - FileTree
@@ -4,10 +4,11 @@ var React = require('react');
4
4
  var reactIntl = require('react-intl');
5
5
  var blocks = require('@elice/blocks');
6
6
  var icons = require('@elice/icons');
7
+ var types = require('@elice/types');
7
8
  var recoil = require('recoil');
8
9
  var ExerciseMenuButton = require('../../shared/exercise-menu-button/ExerciseMenuButton.js');
9
10
  var recoil$1 = require('../context/recoil.js');
10
- require('../context/context.js');
11
+ var context = require('../context/context.js');
11
12
  require('../context/recoilTypes.js');
12
13
  var subjects = require('../context/subjects.js');
13
14
  require('../context/ExerciseProvider.js');
@@ -21,12 +22,18 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
22
 
22
23
  const ExerciseMenuDropdown = () => {
23
24
  const intl = reactIntl.useIntl();
25
+ const {
26
+ materialExerciseId
27
+ } = React__default["default"].useContext(context.ExerciseContext);
24
28
  const user = recoil.useRecoilValue(recoil$1.exerciseUserState);
29
+ const exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
30
+ const lecture = recoil.useRecoilValue(recoil$1.exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise.lectureId));
25
31
  const activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
26
32
  const setRightpaneActiveState = recoil.useSetRecoilState(recoil$1.exerciseRightpaneActiveState);
27
33
  const [isSubmitHistoryModalOpen, setIsSubmitHistoryModalOpen] = React__default["default"].useState(false);
28
34
  const [isCodeHistoryModalOpen, setIsCodeHistoryModalOpen] = React__default["default"].useState(false);
29
35
  const [isExerciseRoomModalOpen, setIsExerciseRoomModalOpen] = React__default["default"].useState(false);
36
+ const isLectureTestInProgress = typeof (lecture === null || lecture === void 0 ? void 0 : lecture.testAdmissionStatus) !== 'undefined' && lecture.testAdmissionStatus === types.enums.TestAdmissionStatus.InProgress;
30
37
  /**
31
38
  *
32
39
  */
@@ -103,6 +110,7 @@ const ExerciseMenuDropdown = () => {
103
110
  label: intl.formatMessage({
104
111
  id: 'exerciseMenu.dropdown.item.room'
105
112
  }),
113
+ disabled: isLectureTestInProgress,
106
114
  onClick: () => setIsExerciseRoomModalOpen(true)
107
115
  }],
108
116
  size: "xsmall",
@@ -484,10 +484,14 @@ const ExerciseRunner = ({
484
484
 
485
485
 
486
486
  const renderXterm = () => {
487
+ // show system message when...
488
+ const showSystemMessage = // - run type is grade
489
+ runnerRunTypeState === types.enums.ExerciseRunType.Grade || // - not an arduino exercise
490
+ !isArduinoExercise;
487
491
  return React__default["default"].createElement(XtermLazy, {
488
492
  isRunning: wsRunnerRoom.isRunning,
489
493
  fontSize: editorPreferenceFontSize,
490
- suppressSystemMessage: isArduinoExercise,
494
+ suppressSystemMessage: !showSystemMessage,
491
495
  onInputRequest: handleXtermInputRequest,
492
496
  onTtyResizeRequest: wsStdio.sendTtyResize,
493
497
  locale: locale,
@@ -5,7 +5,7 @@ var designTokens = require('@elice/design-tokens');
5
5
  var monaco = require('monaco-editor/esm/vs/editor/editor.api');
6
6
  var styled = require('styled-components');
7
7
  var index$1 = require('./utils/grammar/index.js');
8
- var styles = require('./utils/remoteMarker/styles.js');
8
+ var styles = require('./vendors/monaco-collab-ext/styles.js');
9
9
  var preferences = require('./constants/monaco/preferences.js');
10
10
  var useMonacoEventChange = require('./editor-hooks/useMonacoEventChange.js');
11
11
  var useMonacoEventCursor = require('./editor-hooks/useMonacoEventCursor.js');
@@ -41,6 +41,12 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
41
41
  var monaco__namespace = /*#__PURE__*/_interopNamespace(monaco);
42
42
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
43
43
 
44
+ //
45
+ //
46
+ // pre-init monaco editor
47
+
48
+ index();
49
+ index$1().catch(console.warn); //
44
50
  //
45
51
  //
46
52
 
@@ -49,10 +55,7 @@ const StyledMonacoEditorWrapper = styled__default["default"].div.withConfig({
49
55
  })(["width:100%;height:100%;"]);
50
56
  const StyledMonacoEditor = styled__default["default"].div.withConfig({
51
57
  componentId: "sc-1j3uyex-1"
52
- })(["width:100%;height:100%;background-color:", ";", ""], designTokens.base.color.navy9, styles.cssRemoteMarker); //
53
- //
54
- //
55
-
58
+ })(["width:100%;height:100%;background-color:", ";", ""], designTokens.base.color.navy9, styles.cssRemoteMarker);
56
59
  /**
57
60
  *
58
61
  */
@@ -301,11 +304,8 @@ const MonacoEditor = React.forwardRef(({
301
304
  try {
302
305
  if (!editorElRef.current) {
303
306
  return;
304
- } // pre-config monaco editor
305
-
307
+ } // create monaco editor instance and render it.
306
308
 
307
- index();
308
- index$1().catch(console.warn); // create monaco editor instance and render it.
309
309
 
310
310
  editor.current = monaco__namespace.editor.create(editorElRef.current, Object.assign(Object.assign({}, editorOptions), {
311
311
  value: defaultValue,
@@ -4,9 +4,9 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var reactUse = require('react-use');
7
- var RemoteCursorManager = require('../utils/remoteMarker/RemoteCursorManager.js');
8
- var RemoteSelectionManager = require('../utils/remoteMarker/RemoteSelectionManager.js');
9
- require('../utils/remoteMarker/styles.js');
7
+ var RemoteCursorManager = require('../vendors/monaco-collab-ext/RemoteCursorManager.js');
8
+ var RemoteSelectionManager = require('../vendors/monaco-collab-ext/RemoteSelectionManager.js');
9
+ require('../vendors/monaco-collab-ext/styles.js');
10
10
 
11
11
  /** Available colors for marker. */
12
12
 
@@ -6,4 +6,8 @@ export declare function setDocumentFormattingEditProvider(): void;
6
6
  * Set CSS options.
7
7
  */
8
8
  export declare function setOptions(): void;
9
+ /**
10
+ * Enable emmet feature.
11
+ */
12
+ export declare function setEnableFeatrueEmmet(): void;
9
13
  export default function (): void;
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var monaco = require('monaco-editor/esm/vs/editor/editor.api');
6
+ var emmet = require('../../utils/emmet/emmet.js');
6
7
  var formatter = require('./formatter.js');
7
8
 
8
9
  function _interopNamespace(e) {
@@ -31,6 +32,8 @@ var monaco__namespace = /*#__PURE__*/_interopNamespace(monaco);
31
32
 
32
33
  function setDocumentFormattingEditProvider() {
33
34
  monaco__namespace.languages.registerDocumentFormattingEditProvider('css', formatter);
35
+ monaco__namespace.languages.registerDocumentFormattingEditProvider('scss', formatter);
36
+ monaco__namespace.languages.registerDocumentFormattingEditProvider('less', formatter);
34
37
  }
35
38
  /**
36
39
  * Set CSS options.
@@ -40,6 +43,13 @@ function setOptions() {
40
43
  monaco__namespace.languages.css.cssDefaults.setOptions({
41
44
  validate: false
42
45
  });
46
+ }
47
+ /**
48
+ * Enable emmet feature.
49
+ */
50
+
51
+ function setEnableFeatrueEmmet() {
52
+ emmet.emmetCSS(monaco__namespace, ['css', 'scss', 'less']);
43
53
  } //
44
54
  //
45
55
  //
@@ -47,8 +57,10 @@ function setOptions() {
47
57
  function css () {
48
58
  setDocumentFormattingEditProvider();
49
59
  setOptions();
60
+ setEnableFeatrueEmmet();
50
61
  }
51
62
 
52
63
  exports["default"] = css;
53
64
  exports.setDocumentFormattingEditProvider = setDocumentFormattingEditProvider;
65
+ exports.setEnableFeatrueEmmet = setEnableFeatrueEmmet;
54
66
  exports.setOptions = setOptions;
@@ -6,4 +6,8 @@ export declare function setDocumentFormattingEditProvider(): void;
6
6
  * Set HTML options.
7
7
  */
8
8
  export declare function setOptions(): void;
9
+ /**
10
+ * Enable emmet feature.
11
+ */
12
+ export declare function setEnableFeatrueEmmet(): void;
9
13
  export default function (): void;
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var monaco = require('monaco-editor/esm/vs/editor/editor.api');
6
+ var emmet = require('../../utils/emmet/emmet.js');
6
7
  var formatter = require('./formatter.js');
7
8
 
8
9
  function _interopNamespace(e) {
@@ -38,6 +39,13 @@ function setDocumentFormattingEditProvider() {
38
39
 
39
40
  function setOptions() {
40
41
  monaco__namespace.languages.html.htmlDefaults.setOptions({});
42
+ }
43
+ /**
44
+ * Enable emmet feature.
45
+ */
46
+
47
+ function setEnableFeatrueEmmet() {
48
+ emmet.emmetHTML(monaco__namespace, ['html', 'handlebars', 'php']);
41
49
  } //
42
50
  //
43
51
  //
@@ -45,8 +53,10 @@ function setOptions() {
45
53
  function html () {
46
54
  setDocumentFormattingEditProvider();
47
55
  setOptions();
56
+ setEnableFeatrueEmmet();
48
57
  }
49
58
 
50
59
  exports["default"] = html;
51
60
  exports.setDocumentFormattingEditProvider = setDocumentFormattingEditProvider;
61
+ exports.setEnableFeatrueEmmet = setEnableFeatrueEmmet;
52
62
  exports.setOptions = setOptions;
@@ -4,10 +4,10 @@ var index = require('./css/index.js');
4
4
  var index$1 = require('./html/index.js');
5
5
  var index$2 = require('./typescript/index.js');
6
6
 
7
- function configEditorLanguages () {
7
+ function initMonacoLanguages () {
8
8
  index["default"]();
9
9
  index$1["default"]();
10
10
  index$2["default"]();
11
11
  }
12
12
 
13
- module.exports = configEditorLanguages;
13
+ module.exports = initMonacoLanguages;
@@ -22,4 +22,8 @@ export declare function setExernalLibs(): void;
22
22
  * Enables intelliSense for all files without needing an `addExtraLib` call.
23
23
  */
24
24
  export declare function setEagerModelSync(): void;
25
+ /**
26
+ * Enable emmet for JavaScript and TypeScript.
27
+ */
28
+ export declare function setEnableFeatrueEmmet(): void;
25
29
  export default function (): void;
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var monaco = require('monaco-editor/esm/vs/editor/editor.api');
6
+ var emmet = require('../../utils/emmet/emmet.js');
6
7
  var express = require('./dts/express.js');
7
8
  var propTypes = require('./dts/propTypes.js');
8
9
  var react = require('./dts/react.js');
@@ -103,6 +104,13 @@ function setExernalLibs() {
103
104
  function setEagerModelSync() {
104
105
  monaco__namespace.languages.typescript.javascriptDefaults.setEagerModelSync(true);
105
106
  monaco__namespace.languages.typescript.typescriptDefaults.setEagerModelSync(true);
107
+ }
108
+ /**
109
+ * Enable emmet for JavaScript and TypeScript.
110
+ */
111
+
112
+ function setEnableFeatrueEmmet() {
113
+ emmet.emmetJSX(monaco__namespace, ['javascript', 'javascriptreact', 'typescript', 'typescriptreact']);
106
114
  } //
107
115
  //
108
116
  //
@@ -113,6 +121,7 @@ function typescript () {
113
121
  setDiagnosticsOptions();
114
122
  setExernalLibs();
115
123
  setEagerModelSync();
124
+ setEnableFeatrueEmmet();
116
125
  }
117
126
 
118
127
  exports["default"] = typescript;
@@ -120,4 +129,5 @@ exports.setCompilerOptions = setCompilerOptions;
120
129
  exports.setDiagnosticsOptions = setDiagnosticsOptions;
121
130
  exports.setDocumentFormattingEditProvider = setDocumentFormattingEditProvider;
122
131
  exports.setEagerModelSync = setEagerModelSync;
132
+ exports.setEnableFeatrueEmmet = setEnableFeatrueEmmet;
123
133
  exports.setExernalLibs = setExernalLibs;
@@ -0,0 +1,6 @@
1
+ import type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
2
+ /**
3
+ * VSCode did a complex node analysis, just use monaco's built-in tokenizer here.
4
+ * @see https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/abbreviationActions.ts#L438
5
+ */
6
+ export declare function isValidLocationForEmmetAbbreviation(model: monaco.editor.ITextModel, position: monaco.Position, syntax: string, language: string): boolean;
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Validate if the given position is valid for emmet abbreviation.
7
+ */
8
+ function isValidEmmetToken(tokens, index, syntax, language) {
9
+ const currentTokenType = tokens[index].type;
10
+
11
+ switch (syntax) {
12
+ case 'html':
13
+ return currentTokenType === 'text.html.basic';
14
+
15
+ case 'css':
16
+ return true;
17
+
18
+ case 'jsx':
19
+ return !currentTokenType.endsWith('.type.tsx');
20
+
21
+ default:
22
+ return false;
23
+ }
24
+ }
25
+ /**
26
+ * VSCode did a complex node analysis, just use monaco's built-in tokenizer here.
27
+ * @see https://github.com/microsoft/vscode/blob/50140a53cc2088f478a5560683ccd354f2d5f431/extensions/emmet/src/abbreviationActions.ts#L438
28
+ */
29
+
30
+
31
+ function isValidLocationForEmmetAbbreviation(model, position, syntax, language) {
32
+ const {
33
+ column,
34
+ lineNumber
35
+ } = position; // get current line's tokens
36
+
37
+ const _tokenization = // monaco-editor < 0.34.0
38
+ model._tokenization || // monaco-editor >= 0.34.0
39
+ model.tokenization._tokenization;
40
+
41
+ const _tokenizationStateStore = _tokenization._tokenizationStateStore;
42
+
43
+ const _tokenizationSupport = // monaco-editor >= 0.32.0
44
+ _tokenizationStateStore.tokenizationSupport || // monaco-editor < 0.32.0
45
+ _tokenization._tokenizationSupport;
46
+
47
+ const state = _tokenizationStateStore.getBeginState(lineNumber - 1).clone();
48
+
49
+ const tokenizationResult = _tokenizationSupport.tokenize(model.getLineContent(lineNumber), true, state, 0);
50
+
51
+ const tokens = tokenizationResult.tokens; // get token type at current column
52
+
53
+ for (let i = tokens.length - 1; i >= 0; i--) {
54
+ if (column - 1 > tokens[i].offset) {
55
+ // return true if current token is valid for emmet
56
+ if (isValidEmmetToken(tokens, i, syntax)) {
57
+ return true;
58
+ }
59
+ }
60
+ }
61
+
62
+ return false;
63
+ }
64
+
65
+ exports.isValidLocationForEmmetAbbreviation = isValidLocationForEmmetAbbreviation;
@@ -0,0 +1,13 @@
1
+ import type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
2
+ /**
3
+ * Enable emmet feature for HTML.
4
+ */
5
+ export declare function emmetHTML(_monaco: typeof monaco, languages: string[]): (() => void) | undefined;
6
+ /**
7
+ * Enable emmet feature for CSS.
8
+ */
9
+ export declare function emmetCSS(_monaco: typeof monaco, languages: string[]): (() => void) | undefined;
10
+ /**
11
+ * Enable emmet feature for JSX.
12
+ */
13
+ export declare function emmetJSX(_monaco: typeof monaco, languages: string[]): (() => void) | undefined;
@@ -0,0 +1,31 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var registerProvider = require('./registerProvider.js');
6
+
7
+ /**
8
+ * Enable emmet feature for HTML.
9
+ */
10
+
11
+ function emmetHTML(_monaco, languages) {
12
+ return registerProvider.registerProvider(_monaco, languages, 'html');
13
+ }
14
+ /**
15
+ * Enable emmet feature for CSS.
16
+ */
17
+
18
+ function emmetCSS(_monaco, languages) {
19
+ return registerProvider.registerProvider(_monaco, languages, 'css');
20
+ }
21
+ /**
22
+ * Enable emmet feature for JSX.
23
+ */
24
+
25
+ function emmetJSX(_monaco, languages) {
26
+ return registerProvider.registerProvider(_monaco, languages, 'jsx');
27
+ }
28
+
29
+ exports.emmetCSS = emmetCSS;
30
+ exports.emmetHTML = emmetHTML;
31
+ exports.emmetJSX = emmetJSX;
@@ -0,0 +1 @@
1
+ export * from './emmet';
@@ -0,0 +1,5 @@
1
+ import type * as monaco from 'monaco-editor/esm/vs/editor/editor.api';
2
+ /**
3
+ * Register completion provider of emmet.
4
+ */
5
+ export declare function registerProvider(_monaco: typeof monaco, languages: string[], syntax: string): (() => void) | undefined;
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var emmetHelper = require('../../vendors/vscode-emmet-helper/emmetHelper.js');
6
+ var utils = require('../../vendors/vscode-emmet-helper/utils.js');
7
+ var abbreviationActions = require('./abbreviationActions.js');
8
+
9
+ /**
10
+ * Register completion provider of emmet.
11
+ */
12
+
13
+ function registerProvider(_monaco, languages, syntax) {
14
+ if (!_monaco) {
15
+ return;
16
+ }
17
+
18
+ const providers = languages.map(language => _monaco.languages.registerCompletionItemProvider(language, {
19
+ triggerCharacters: utils.LANGUAGE_MODES[utils.MAPPED_MODES[language] || language],
20
+ provideCompletionItems: (model, position) => abbreviationActions.isValidLocationForEmmetAbbreviation(model, position, syntax) ? emmetHelper.doComplete(_monaco, model, position, syntax, utils.DEFAULT_CONFIG) : undefined
21
+ }));
22
+ return () => {
23
+ providers.forEach(provider => provider.dispose());
24
+ };
25
+ }
26
+
27
+ exports.registerProvider = registerProvider;
@@ -52,11 +52,11 @@ function createGrammarRegistry() {
52
52
  */
53
53
 
54
54
 
55
- async function initGrammars () {
55
+ async function initMonacoGrammars () {
56
56
  await onigasm.initOnigasm();
57
57
  const grammars = createGrammarMap();
58
58
  const registry = createGrammarRegistry();
59
59
  await textmate.wireTmGrammars(registry, grammars);
60
60
  }
61
61
 
62
- module.exports = initGrammars;
62
+ module.exports = initMonacoGrammars;
@@ -25,8 +25,12 @@ function _interopNamespace(e) {
25
25
  */
26
26
 
27
27
  async function prettier (value, options) {
28
- const prettier = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('prettier/standalone')); });
29
- return prettier.format(value, Object.assign(Object.assign({}, options), config.prettierConfigSource.config));
28
+ try {
29
+ const prettier = await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('prettier/standalone')); });
30
+ return prettier.format(value, Object.assign(Object.assign({}, options), config.prettierConfigSource.config));
31
+ } catch (_) {
32
+ return value;
33
+ }
30
34
  }
31
35
 
32
36
  module.exports = prettier;
@@ -0,0 +1,15 @@
1
+ export interface SnippetsMap {
2
+ [name: string]: string;
3
+ }
4
+ /**
5
+ * Parses raw snippets definitions with possibly multiple keys into a plan
6
+ * snippet map
7
+ */
8
+ export declare function parseSnippets(snippets: SnippetsMap): SnippetsMap;
9
+ /**
10
+ * List of all known syntaxes
11
+ */
12
+ export declare const syntaxes: {
13
+ markup: string[];
14
+ stylesheet: string[];
15
+ };
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /* eslint-disable */
6
+ /**
7
+ * List of all known syntaxes
8
+ */
9
+
10
+ const syntaxes = {
11
+ markup: ['html', 'xml', 'xsl', 'jsx', 'js', 'pug', 'slim', 'haml'],
12
+ stylesheet: ['css', 'sass', 'scss', 'less', 'sss', 'stylus']
13
+ };
14
+
15
+ exports.syntaxes = syntaxes;
@@ -0,0 +1,6 @@
1
+ export declare const cssData: {
2
+ properties: string[];
3
+ };
4
+ export declare const htmlData: {
5
+ tags: string[];
6
+ };
@@ -0,0 +1,22 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /* eslint-disable */
6
+
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/data.ts
13
+ * ==================================================================================================== */
14
+ const cssData = {
15
+ "properties": ["additive-symbols", "align-content", "align-items", "justify-items", "justify-self", "justify-items", "align-self", "all", "alt", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "backface-visibility", "background", "background-attachment", "background-blend-mode", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-position-x", "background-position-y", "background-repeat", "background-size", "behavior", "block-size", "border", "border-block-end", "border-block-start", "border-block-end-color", "border-block-start-color", "border-block-end-style", "border-block-start-style", "border-block-end-width", "border-block-start-width", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-inline-end", "border-inline-start", "border-inline-end-color", "border-inline-start-color", "border-inline-end-style", "border-inline-start-style", "border-inline-end-width", "border-inline-start-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "caret-color", "clear", "clip", "clip-path", "clip-rule", "color", "color-interpolation-filters", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "columns", "column-span", "column-width", "contain", "content", "counter-increment", "counter-reset", "cursor", "direction", "display", "empty-cells", "enable-background", "fallback", "fill", "fill-opacity", "fill-rule", "filter", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "flood-color", "flood-opacity", "font", "font-family", "font-feature-settings", "font-kerning", "font-language-override", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-synthesis", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-weight", "glyph-orientation-horizontal", "glyph-orientation-vertical", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "height", "hyphens", "image-orientation", "image-rendering", "ime-mode", "inline-size", "isolation", "justify-content", "kerning", "left", "letter-spacing", "lighting-color", "line-break", "line-height", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-block-end", "margin-block-start", "margin-bottom", "margin-inline-end", "margin-inline-start", "margin-left", "margin-right", "margin-top", "marker", "marker-end", "marker-mid", "marker-start", "mask-type", "max-block-size", "max-height", "max-inline-size", "max-width", "min-block-size", "min-height", "min-inline-size", "min-width", "mix-blend-mode", "motion", "motion-offset", "motion-path", "motion-rotation", "-moz-animation", "-moz-animation-delay", "-moz-animation-direction", "-moz-animation-duration", "-moz-animation-iteration-count", "-moz-animation-name", "-moz-animation-play-state", "-moz-animation-timing-function", "-moz-appearance", "-moz-backface-visibility", "-moz-background-clip", "-moz-background-inline-policy", "-moz-background-origin", "-moz-border-bottom-colors", "-moz-border-image", "-moz-border-left-colors", "-moz-border-right-colors", "-moz-border-top-colors", "-moz-box-align", "-moz-box-direction", "-moz-box-flex", "-moz-box-flexgroup", "-moz-box-ordinal-group", "-moz-box-orient", "-moz-box-pack", "-moz-box-sizing", "-moz-column-count", "-moz-column-gap", "-moz-column-rule", "-moz-column-rule-color", "-moz-column-rule-style", "-moz-column-rule-width", "-moz-columns", "-moz-column-width", "-moz-font-feature-settings", "-moz-hyphens", "-moz-perspective", "-moz-perspective-origin", "-moz-text-align-last", "-moz-text-decoration-color", "-moz-text-decoration-line", "-moz-text-decoration-style", "-moz-text-size-adjust", "-moz-transform", "-moz-transform-origin", "-moz-transition", "-moz-transition-delay", "-moz-transition-duration", "-moz-transition-property", "-moz-transition-timing-function", "-moz-user-focus", "-moz-user-select", "-ms-accelerator", "-ms-behavior", "-ms-block-progression", "-ms-content-zoom-chaining", "-ms-content-zooming", "-ms-content-zoom-limit", "-ms-content-zoom-limit-max", "-ms-content-zoom-limit-min", "-ms-content-zoom-snap", "-ms-content-zoom-snap-points", "-ms-content-zoom-snap-type", "-ms-filter", "-ms-flex", "-ms-flex-align", "-ms-flex-direction", "-ms-flex-flow", "-ms-flex-item-align", "-ms-flex-line-pack", "-ms-flex-order", "-ms-flex-pack", "-ms-flex-wrap", "-ms-flow-from", "-ms-flow-into", "-ms-grid-column", "-ms-grid-column-align", "-ms-grid-columns", "-ms-grid-column-span", "-ms-grid-layer", "-ms-grid-row", "-ms-grid-row-align", "-ms-grid-rows", "-ms-grid-row-span", "-ms-high-contrast-adjust", "-ms-hyphenate-limit-chars", "-ms-hyphenate-limit-lines", "-ms-hyphenate-limit-zone", "-ms-hyphens", "-ms-ime-mode", "-ms-interpolation-mode", "-ms-layout-grid", "-ms-layout-grid-char", "-ms-layout-grid-line", "-ms-layout-grid-mode", "-ms-layout-grid-type", "-ms-line-break", "-ms-overflow-style", "-ms-perspective", "-ms-perspective-origin", "-ms-perspective-origin-x", "-ms-perspective-origin-y", "-ms-progress-appearance", "-ms-scrollbar-3dlight-color", "-ms-scrollbar-arrow-color", "-ms-scrollbar-base-color", "-ms-scrollbar-darkshadow-color", "-ms-scrollbar-face-color", "-ms-scrollbar-highlight-color", "-ms-scrollbar-shadow-color", "-ms-scrollbar-track-color", "-ms-scroll-chaining", "-ms-scroll-limit", "-ms-scroll-limit-x-max", "-ms-scroll-limit-x-min", "-ms-scroll-limit-y-max", "-ms-scroll-limit-y-min", "-ms-scroll-rails", "-ms-scroll-snap-points-x", "-ms-scroll-snap-points-y", "-ms-scroll-snap-type", "-ms-scroll-snap-x", "-ms-scroll-snap-y", "-ms-scroll-translation", "-ms-text-align-last", "-ms-text-autospace", "-ms-text-combine-horizontal", "-ms-text-justify", "-ms-text-kashida-space", "-ms-text-overflow", "-ms-text-size-adjust", "-ms-text-underline-position", "-ms-touch-action", "-ms-touch-select", "-ms-transform", "-ms-transform-origin", "-ms-transform-origin-x", "-ms-transform-origin-y", "-ms-transform-origin-z", "-ms-user-select", "-ms-word-break", "-ms-word-wrap", "-ms-wrap-flow", "-ms-wrap-margin", "-ms-wrap-through", "-ms-writing-mode", "-ms-zoom", "-ms-zoom-animation", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "negative", "-o-animation", "-o-animation-delay", "-o-animation-direction", "-o-animation-duration", "-o-animation-fill-mode", "-o-animation-iteration-count", "-o-animation-name", "-o-animation-play-state", "-o-animation-timing-function", "object-fit", "object-position", "-o-border-image", "-o-object-fit", "-o-object-position", "opacity", "order", "orphans", "-o-table-baseline", "-o-tab-size", "-o-text-overflow", "-o-transform", "-o-transform-origin", "-o-transition", "-o-transition-delay", "-o-transition-duration", "-o-transition-property", "-o-transition-timing-function", "offset-block-end", "offset-block-start", "offset-inline-end", "offset-inline-start", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-wrap", "overflow-x", "overflow-y", "pad", "padding", "padding-bottom", "padding-block-end", "padding-block-start", "padding-inline-end", "padding-inline-start", "padding-left", "padding-right", "padding-top", "page-break-after", "page-break-before", "page-break-inside", "paint-order", "perspective", "perspective-origin", "pointer-events", "position", "prefix", "quotes", "range", "resize", "right", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span", "scrollbar-3dlight-color", "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-darkshadow-color", "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", "scrollbar-track-color", "scroll-behavior", "scroll-snap-coordinate", "scroll-snap-destination", "scroll-snap-points-x", "scroll-snap-points-y", "scroll-snap-type", "shape-image-threshold", "shape-margin", "shape-outside", "shape-rendering", "size", "src", "stop-color", "stop-opacity", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "suffix", "system", "symbols", "table-layout", "tab-size", "text-align", "text-align-last", "text-anchor", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-style", "text-indent", "text-justify", "text-orientation", "text-overflow", "text-rendering", "text-shadow", "text-transform", "text-underline-position", "top", "touch-action", "transform", "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "unicode-bidi", "unicode-range", "user-select", "vertical-align", "visibility", "-webkit-animation", "-webkit-animation-delay", "-webkit-animation-direction", "-webkit-animation-duration", "-webkit-animation-fill-mode", "-webkit-animation-iteration-count", "-webkit-animation-name", "-webkit-animation-play-state", "-webkit-animation-timing-function", "-webkit-appearance", "-webkit-backdrop-filter", "-webkit-backface-visibility", "-webkit-background-clip", "-webkit-background-composite", "-webkit-background-origin", "-webkit-border-image", "-webkit-box-align", "-webkit-box-direction", "-webkit-box-flex", "-webkit-box-flex-group", "-webkit-box-ordinal-group", "-webkit-box-orient", "-webkit-box-pack", "-webkit-box-reflect", "-webkit-box-sizing", "-webkit-break-after", "-webkit-break-before", "-webkit-break-inside", "-webkit-column-break-after", "-webkit-column-break-before", "-webkit-column-break-inside", "-webkit-column-count", "-webkit-column-gap", "-webkit-column-rule", "-webkit-column-rule-color", "-webkit-column-rule-style", "-webkit-column-rule-width", "-webkit-columns", "-webkit-column-span", "-webkit-column-width", "-webkit-filter", "-webkit-flow-from", "-webkit-flow-into", "-webkit-font-feature-settings", "-webkit-hyphens", "-webkit-line-break", "-webkit-margin-bottom-collapse", "-webkit-margin-collapse", "-webkit-margin-start", "-webkit-margin-top-collapse", "-webkit-mask-clip", "-webkit-mask-image", "-webkit-mask-origin", "-webkit-mask-repeat", "-webkit-mask-size", "-webkit-nbsp-mode", "-webkit-overflow-scrolling", "-webkit-padding-start", "-webkit-perspective", "-webkit-perspective-origin", "-webkit-region-fragment", "-webkit-tap-highlight-color", "-webkit-text-fill-color", "-webkit-text-size-adjust", "-webkit-text-stroke", "-webkit-text-stroke-color", "-webkit-text-stroke-width", "-webkit-touch-callout", "-webkit-transform", "-webkit-transform-origin", "-webkit-transform-origin-x", "-webkit-transform-origin-y", "-webkit-transform-origin-z", "-webkit-transform-style", "-webkit-transition", "-webkit-transition-delay", "-webkit-transition-duration", "-webkit-transition-property", "-webkit-transition-timing-function", "-webkit-user-drag", "-webkit-user-modify", "-webkit-user-select", "white-space", "widows", "width", "will-change", "word-break", "word-spacing", "word-wrap", "writing-mode", "z-index", "zoom"]
16
+ };
17
+ const htmlData = {
18
+ "tags": ["body", "head", "html", "address", "blockquote", "dd", "div", "section", "article", "aside", "header", "footer", "nav", "menu", "dl", "dt", "fieldset", "form", "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "iframe", "noframes", "object", "ol", "p", "ul", "applet", "center", "dir", "hr", "pre", "a", "abbr", "acronym", "area", "b", "base", "basefont", "bdo", "big", "br", "button", "caption", "cite", "code", "col", "colgroup", "del", "dfn", "em", "font", "i", "img", "input", "ins", "isindex", "kbd", "label", "legend", "li", "link", "map", "meta", "noscript", "optgroup", "option", "param", "q", "s", "samp", "script", "select", "small", "span", "strike", "strong", "style", "sub", "sup", "table", "tbody", "td", "textarea", "tfoot", "th", "thead", "title", "tr", "tt", "u", "var", "canvas", "main", "figure", "plaintext", "figcaption", "hgroup", "details", "summary"]
19
+ };
20
+
21
+ exports.cssData = cssData;
22
+ exports.htmlData = htmlData;