@elice/material-exercise 1.220830.0 → 1.220919.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 (89) 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/emmet.d.ts +13 -0
  14. package/cjs/components/shared/monaco-editor/utils/emmet/emmet.js +31 -0
  15. package/cjs/components/shared/monaco-editor/utils/emmet/index.d.ts +1 -0
  16. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.d.ts +5 -0
  17. package/cjs/components/shared/monaco-editor/utils/emmet/registerProvider.js +26 -0
  18. package/cjs/components/shared/monaco-editor/utils/grammar/index.js +2 -2
  19. package/cjs/components/shared/monaco-editor/utils/prettier/index.js +6 -2
  20. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.d.ts +15 -0
  21. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +15 -0
  22. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.d.ts +6 -0
  23. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +22 -0
  24. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.d.ts +96 -0
  25. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +900 -0
  26. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.d.ts +2 -0
  27. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.d.ts +12 -0
  28. package/cjs/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +42 -0
  29. package/cjs/components/shared/web-browser/WebBrowser.js +16 -11
  30. package/cjs/components/shared/xterm/Xterm.js +10 -3
  31. package/es/components/material-exercise/MaterialExercise.styled.js +1 -1
  32. package/es/components/material-exercise/exercise-menu/ExerciseMenuDropdown.js +10 -2
  33. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +5 -1
  34. package/es/components/shared/monaco-editor/MonacoEditor.js +11 -11
  35. package/es/components/shared/monaco-editor/editor-hooks/useMonacoMarkers.js +3 -3
  36. package/es/components/shared/monaco-editor/editor-languages/css/index.d.ts +4 -0
  37. package/es/components/shared/monaco-editor/editor-languages/css/index.js +12 -1
  38. package/es/components/shared/monaco-editor/editor-languages/html/index.d.ts +4 -0
  39. package/es/components/shared/monaco-editor/editor-languages/html/index.js +10 -1
  40. package/es/components/shared/monaco-editor/editor-languages/index.js +2 -2
  41. package/es/components/shared/monaco-editor/editor-languages/typescript/index.d.ts +4 -0
  42. package/es/components/shared/monaco-editor/editor-languages/typescript/index.js +10 -1
  43. package/es/components/shared/monaco-editor/utils/emmet/emmet.d.ts +13 -0
  44. package/es/components/shared/monaco-editor/utils/emmet/emmet.js +25 -0
  45. package/es/components/shared/monaco-editor/utils/emmet/index.d.ts +1 -0
  46. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.d.ts +5 -0
  47. package/es/components/shared/monaco-editor/utils/emmet/registerProvider.js +22 -0
  48. package/es/components/shared/monaco-editor/utils/grammar/index.js +2 -2
  49. package/es/components/shared/monaco-editor/utils/prettier/index.js +6 -2
  50. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.d.ts +15 -0
  51. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/configCompat.js +11 -0
  52. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.d.ts +6 -0
  53. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/data.js +17 -0
  54. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.d.ts +96 -0
  55. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/emmetHelper.js +883 -0
  56. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/index.d.ts +2 -0
  57. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.d.ts +12 -0
  58. package/es/components/shared/monaco-editor/vendors/vscode-emmet-helper/utils.js +36 -0
  59. package/es/components/shared/web-browser/WebBrowser.js +16 -11
  60. package/es/components/shared/xterm/Xterm.js +10 -3
  61. package/package.json +7 -6
  62. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/OnDisposed.d.ts +0 -0
  63. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.d.ts +0 -0
  64. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.js +0 -0
  65. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.d.ts +0 -0
  66. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.js +0 -0
  67. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.d.ts +0 -0
  68. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.js +0 -0
  69. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.d.ts +0 -0
  70. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.js +0 -0
  71. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.d.ts +0 -0
  72. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.js +0 -0
  73. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/index.d.ts +0 -0
  74. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.d.ts +0 -0
  75. /package/cjs/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.js +0 -0
  76. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/OnDisposed.d.ts +0 -0
  77. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.d.ts +0 -0
  78. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursor.js +0 -0
  79. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.d.ts +0 -0
  80. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorManager.js +0 -0
  81. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.d.ts +0 -0
  82. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteCursorWidget.js +0 -0
  83. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.d.ts +0 -0
  84. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelection.js +0 -0
  85. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.d.ts +0 -0
  86. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/RemoteSelectionManager.js +0 -0
  87. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/index.d.ts +0 -0
  88. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.d.ts +0 -0
  89. /package/es/components/shared/monaco-editor/{utils/remoteMarker → vendors/monaco-collab-ext}/styles.js +0 -0
@@ -0,0 +1,2 @@
1
+ export { doComplete } from './emmetHelper';
2
+ export { DEFAULT_CONFIG, LANGUAGE_MODES, MAPPED_MODES } from './utils';
@@ -0,0 +1,12 @@
1
+ import { VSCodeEmmetConfig } from "./emmetHelper";
2
+ /**
3
+ * -ref: https://github.com/microsoft/vscode/blob/main/extensions/emmet/src/util.ts#L86
4
+ */
5
+ export declare const LANGUAGE_MODES: {
6
+ [id: string]: string[];
7
+ };
8
+ /**
9
+ * https://github.com/microsoft/vscode/blob/main/extensions/emmet/src/util.ts#L124
10
+ */
11
+ export declare const MAPPED_MODES: Record<string, string>;
12
+ export declare const DEFAULT_CONFIG: VSCodeEmmetConfig;
@@ -0,0 +1,36 @@
1
+ /* eslint-disable */
2
+
3
+ /**
4
+ * -ref: https://github.com/microsoft/vscode/blob/main/extensions/emmet/src/util.ts#L86
5
+ */
6
+ const LANGUAGE_MODES = {
7
+ html: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
8
+ jade: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
9
+ slim: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
10
+ haml: ['!', '.', '}', ':', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
11
+ xml: ['.', '}', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
12
+ xsl: ['!', '.', '}', '*', '$', '/', ']', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
13
+ css: [':', '!', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
14
+ scss: [':', '!', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
15
+ sass: [':', '!', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
16
+ less: [':', '!', '-', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
17
+ stylus: [':', '!', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
18
+ javascript: ['!', '.', '}', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'],
19
+ typescript: ['!', '.', '}', '*', '$', ']', '/', '>', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
20
+ };
21
+ /**
22
+ * https://github.com/microsoft/vscode/blob/main/extensions/emmet/src/util.ts#L124
23
+ */
24
+
25
+ const MAPPED_MODES = {
26
+ handlebars: 'html',
27
+ php: 'html',
28
+ twig: 'html'
29
+ };
30
+ const DEFAULT_CONFIG = {
31
+ showExpandedAbbreviation: 'always',
32
+ showAbbreviationSuggestions: true,
33
+ showSuggestionsAsSnippets: false
34
+ };
35
+
36
+ export { DEFAULT_CONFIG, LANGUAGE_MODES, MAPPED_MODES };
@@ -13,6 +13,20 @@ const StyledHeaderUrlInput = styled.input.withConfig({
13
13
  const StyledIframe = styled.iframe.withConfig({
14
14
  componentId: "sc-1c55yq-1"
15
15
  })(["flex:1;width:100%;height:100%;min-height:0;border:0;"]);
16
+ /**
17
+ * Attach `_cachebust` search parameter to the URL to prevent caching.
18
+ */
19
+
20
+ const createCacheBustedUrl = url => {
21
+ try {
22
+ const urlObject = new URL(url);
23
+ urlObject.searchParams.set('_cachebust', Date.now().toString());
24
+ return urlObject.href;
25
+ } catch (_) {
26
+ return url;
27
+ }
28
+ };
29
+
16
30
  const WebBrowser = forwardRef(({
17
31
  httpUri,
18
32
  menuButtons = null
@@ -20,15 +34,7 @@ const WebBrowser = forwardRef(({
20
34
  const [url, setUrl] = React.useState('');
21
35
  const [inputUrl, setInputUrl] = React.useState('');
22
36
  const iframeRef = React.useRef(null);
23
- const iframeSrc = React.useMemo(() => {
24
- try {
25
- const urlObj = new URL(url);
26
- urlObj.searchParams.set('_', Date.now().toString());
27
- return urlObj.href;
28
- } catch (_) {
29
- return '';
30
- }
31
- }, [url]);
37
+ const iframeSrc = React.useMemo(() => createCacheBustedUrl(url), [url]);
32
38
  /**
33
39
  * Navigate browser.
34
40
  */
@@ -44,8 +50,7 @@ const WebBrowser = forwardRef(({
44
50
 
45
51
  const reload = React.useCallback(() => {
46
52
  if (iframeRef.current) {
47
- // eslint-disable-next-line no-self-assign
48
- iframeRef.current.src = iframeRef.current.src;
53
+ iframeRef.current.src = createCacheBustedUrl(iframeRef.current.src);
49
54
  }
50
55
  }, []);
51
56
  /**
@@ -147,6 +147,16 @@ const Xterm = forwardRef(({
147
147
 
148
148
  return (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.setOption('fontSize', fontSize);
149
149
  }, [fontSize]); //
150
+ // Reset and resize xterm when code is running.
151
+ //
152
+
153
+ React.useEffect(() => {
154
+ if (isRunning) {
155
+ reset();
156
+ onTtyResizeRequest(ttySize.current);
157
+ }
158
+ }, // eslint-disable-next-line react-hooks/exhaustive-deps
159
+ [isRunning]); //
150
160
  // Write system message when code is running.
151
161
  //
152
162
 
@@ -156,9 +166,6 @@ const Xterm = forwardRef(({
156
166
  }
157
167
 
158
168
  if (isRunning) {
159
- //
160
- reset();
161
- onTtyResizeRequest(ttySize.current);
162
169
  writeSystem(intl.formatMessage({
163
170
  id: 'xterm.systemMessage.running'
164
171
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elice/material-exercise",
3
- "version": "1.220830.0",
3
+ "version": "1.220919.0",
4
4
  "description": "User view and editing components of Elice material exercise",
5
5
  "repository": "https://git.elicer.io/elice/frontend/library/elice-material",
6
6
  "license": "UNLICENSED",
@@ -36,7 +36,7 @@
36
36
  "@elice/markdown": "^1.220803.0",
37
37
  "@elice/material-shared-types": "22.7.2-1",
38
38
  "@elice/material-shared-utils": "22.7.2-1",
39
- "@elice/types": "^1.220803.0",
39
+ "@elice/types": "^1.220914.0",
40
40
  "@elice/websocket": "^1.220803.0",
41
41
  "humps": "^2.0.1",
42
42
  "lodash": "^4.17.21",
@@ -71,6 +71,7 @@
71
71
  "classnames": "^2.2.0",
72
72
  "color": "^4.2.3",
73
73
  "dayjs": "^1.10.6",
74
+ "emmet": "^2.3.0",
74
75
  "file-saver": "^2.0.5",
75
76
  "filesize": "^8.0.7",
76
77
  "mime": "^2.5.2",
@@ -115,9 +116,9 @@
115
116
  "@elice/design-tokens": "^1.220803.0",
116
117
  "@elice/icons": "^1.220803.0",
117
118
  "@elice/markdown": "^1.220803.0",
118
- "@elice/material-shared-types": "1.220830.0",
119
- "@elice/material-shared-utils": "1.220830.0",
120
- "@elice/types": "^1.220803.0",
119
+ "@elice/material-shared-types": "1.220919.0",
120
+ "@elice/material-shared-utils": "1.220919.0",
121
+ "@elice/types": "^1.220914.0",
121
122
  "@elice/websocket": "^1.220803.0",
122
123
  "@types/classnames": "^2.3.1",
123
124
  "@types/color": "^3.0.3",
@@ -138,5 +139,5 @@
138
139
  "recoil": "^0.6.1",
139
140
  "styled-components": "^5.2.0"
140
141
  },
141
- "gitHead": "551cded86307d1a01f0d1c1e6432020c16406c03"
142
+ "gitHead": "bddb3a6f9165572b2ba351356d5443f85d0ff519"
142
143
  }