@elice/material-exercise 1.250602.0 → 1.250602.1
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.
|
@@ -16,13 +16,7 @@ var styled = require('styled-components');
|
|
|
16
16
|
var XtermLazy = require('../../shared/xterm/XtermLazy.js');
|
|
17
17
|
var stylesheets = require('../../../constants/stylesheets.js');
|
|
18
18
|
var useArduino = require('../../../hooks/useArduino.js');
|
|
19
|
-
var
|
|
20
|
-
var context = require('../context/context.js');
|
|
21
|
-
var recoilTypes = require('../context/recoilTypes.js');
|
|
22
|
-
var subjects = require('../context/subjects.js');
|
|
23
|
-
require('../context/ExerciseProvider.js');
|
|
24
|
-
var async = require('../../../utils/async.js');
|
|
25
|
-
var runner = require('../../../utils/runner.js');
|
|
19
|
+
var useExerciseFile = require('../../../hooks/useExerciseFile.js');
|
|
26
20
|
var useRunnerRoomWebSocket = require('../../../hooks/useRunnerRoomWebSocket.js');
|
|
27
21
|
var useStdioWebSocket = require('../../../hooks/useStdioWebSocket.js');
|
|
28
22
|
require('ot-text-unicode');
|
|
@@ -33,6 +27,13 @@ require('lodash/debounce');
|
|
|
33
27
|
require('random-words');
|
|
34
28
|
require('unicount');
|
|
35
29
|
var useStdioTextConcator = require('../../../hooks/useStdioTextConcator.js');
|
|
30
|
+
var async = require('../../../utils/async.js');
|
|
31
|
+
var runner = require('../../../utils/runner.js');
|
|
32
|
+
var recoil$1 = require('../context/recoil.js');
|
|
33
|
+
var context = require('../context/context.js');
|
|
34
|
+
var recoilTypes = require('../context/recoilTypes.js');
|
|
35
|
+
var subjects = require('../context/subjects.js');
|
|
36
|
+
require('../context/ExerciseProvider.js');
|
|
36
37
|
var ExerciseRunnerContext = require('./ExerciseRunnerContext.js');
|
|
37
38
|
var ExerciseRunnerController = require('./ExerciseRunnerController.js');
|
|
38
39
|
var en = require('./locales/en.json.js');
|
|
@@ -69,6 +70,9 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
69
70
|
var exercise = recoil.useRecoilValue(recoil$1.exerciseState(materialExerciseId));
|
|
70
71
|
var _useRecoilValue = recoil.useRecoilValue(recoil$1.exerciseEditorPreferenceState),
|
|
71
72
|
editorPreferenceFontSize = _useRecoilValue.fontSize;
|
|
73
|
+
// file states
|
|
74
|
+
var activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
|
|
75
|
+
var isFileEditable = useExerciseFile.useExerciseFileEditable(activeFilename);
|
|
72
76
|
// runner states
|
|
73
77
|
var setRunnerSubmitting = recoil.useSetRecoilState(recoil$1.exerciseRunnerSubmittingState);
|
|
74
78
|
var setRunnerRunning = recoil.useSetRecoilState(recoil$1.exerciseRunnerRunningState);
|
|
@@ -297,32 +301,51 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
297
301
|
break;
|
|
298
302
|
}
|
|
299
303
|
};
|
|
300
|
-
var requestUsercodeSync = function
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
304
|
+
var requestUsercodeSync = /*#__PURE__*/function () {
|
|
305
|
+
var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
|
|
306
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
|
|
307
|
+
while (1) switch (_context.prev = _context.next) {
|
|
308
|
+
case 0:
|
|
309
|
+
if (isFileEditable) {
|
|
310
|
+
_context.next = 2;
|
|
311
|
+
break;
|
|
312
|
+
}
|
|
313
|
+
return _context.abrupt("return");
|
|
314
|
+
case 2:
|
|
315
|
+
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
316
|
+
subjects.exerciseFileEditorSyncRequestAction$.next({
|
|
317
|
+
onSucceed: resolve,
|
|
318
|
+
onFailed: reject
|
|
319
|
+
});
|
|
320
|
+
}));
|
|
321
|
+
case 3:
|
|
322
|
+
case "end":
|
|
323
|
+
return _context.stop();
|
|
324
|
+
}
|
|
325
|
+
}, _callee);
|
|
326
|
+
}));
|
|
327
|
+
return function requestUsercodeSync() {
|
|
328
|
+
return _ref2.apply(this, arguments);
|
|
329
|
+
};
|
|
330
|
+
}();
|
|
308
331
|
/**
|
|
309
332
|
* Handle submit code to runner and run / grade.
|
|
310
333
|
*/
|
|
311
334
|
var handleRunnerSubmit = /*#__PURE__*/function () {
|
|
312
|
-
var
|
|
335
|
+
var _ref3 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee2(runType) {
|
|
313
336
|
var _a, _b, _c, readyExerciseImage, roomToken;
|
|
314
|
-
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function
|
|
315
|
-
while (1) switch (
|
|
337
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
338
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
316
339
|
case 0:
|
|
317
|
-
|
|
318
|
-
|
|
340
|
+
_context2.prev = 0;
|
|
341
|
+
_context2.next = 3;
|
|
319
342
|
return async.withTimeout(requestUsercodeSync(), 2000);
|
|
320
343
|
case 3:
|
|
321
|
-
|
|
344
|
+
_context2.next = 9;
|
|
322
345
|
break;
|
|
323
346
|
case 5:
|
|
324
|
-
|
|
325
|
-
|
|
347
|
+
_context2.prev = 5;
|
|
348
|
+
_context2.t0 = _context2["catch"](0);
|
|
326
349
|
setRunnerSubmitErrorDialog({
|
|
327
350
|
code: 'try_again',
|
|
328
351
|
message: __intl.formatMessage({
|
|
@@ -335,20 +358,20 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
335
358
|
return window.location.reload();
|
|
336
359
|
}
|
|
337
360
|
});
|
|
338
|
-
return
|
|
361
|
+
return _context2.abrupt("return");
|
|
339
362
|
case 9:
|
|
340
363
|
readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
|
|
341
364
|
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
342
365
|
if (!(!readyExerciseImage || !roomToken)) {
|
|
343
|
-
|
|
366
|
+
_context2.next = 13;
|
|
344
367
|
break;
|
|
345
368
|
}
|
|
346
|
-
return
|
|
369
|
+
return _context2.abrupt("return");
|
|
347
370
|
case 13:
|
|
348
371
|
setRunnerStdioFilesState([]);
|
|
349
372
|
setRunnerRunTypeState(runType);
|
|
350
373
|
setRunnerSubmitting(true);
|
|
351
|
-
return
|
|
374
|
+
return _context2.abrupt("return", apiClient.postOrgMaterialExerciseExerciseRunningSubmit({
|
|
352
375
|
roomToken: roomToken,
|
|
353
376
|
runType: runType,
|
|
354
377
|
exerciseImageId: readyExerciseImage.id,
|
|
@@ -367,22 +390,22 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
367
390
|
}));
|
|
368
391
|
case 17:
|
|
369
392
|
case "end":
|
|
370
|
-
return
|
|
393
|
+
return _context2.stop();
|
|
371
394
|
}
|
|
372
|
-
},
|
|
395
|
+
}, _callee2, null, [[0, 5]]);
|
|
373
396
|
}));
|
|
374
397
|
return function handleRunnerSubmit(_x) {
|
|
375
|
-
return
|
|
398
|
+
return _ref3.apply(this, arguments);
|
|
376
399
|
};
|
|
377
400
|
}();
|
|
378
401
|
/**
|
|
379
402
|
* Handle runner to cancel running.
|
|
380
403
|
*/
|
|
381
404
|
var handleRunnerCancel = /*#__PURE__*/function () {
|
|
382
|
-
var
|
|
405
|
+
var _ref4 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee3() {
|
|
383
406
|
var _a, roomToken;
|
|
384
|
-
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function
|
|
385
|
-
while (1) switch (
|
|
407
|
+
return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
408
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
386
409
|
case 0:
|
|
387
410
|
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
388
411
|
if (roomToken) {
|
|
@@ -392,12 +415,12 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
392
415
|
}
|
|
393
416
|
case 2:
|
|
394
417
|
case "end":
|
|
395
|
-
return
|
|
418
|
+
return _context3.stop();
|
|
396
419
|
}
|
|
397
|
-
},
|
|
420
|
+
}, _callee3);
|
|
398
421
|
}));
|
|
399
422
|
return function handleRunnerCancel() {
|
|
400
|
-
return
|
|
423
|
+
return _ref4.apply(this, arguments);
|
|
401
424
|
};
|
|
402
425
|
}();
|
|
403
426
|
/**
|
|
@@ -12,13 +12,7 @@ import styled from 'styled-components';
|
|
|
12
12
|
import XtermLazy from '../../shared/xterm/XtermLazy.js';
|
|
13
13
|
import { MATERIAL_RESIZABLE_COMMON_PROPS } from '../../../constants/stylesheets.js';
|
|
14
14
|
import { useArduino } from '../../../hooks/useArduino.js';
|
|
15
|
-
import {
|
|
16
|
-
import { ExerciseContext } from '../context/context.js';
|
|
17
|
-
import { ExercisePreviewType, ExercisePreviewDisplayMode } from '../context/recoilTypes.js';
|
|
18
|
-
import { exerciseRunnerTextSend$, exerciseFileEditorSyncRequestAction$ } from '../context/subjects.js';
|
|
19
|
-
import '../context/ExerciseProvider.js';
|
|
20
|
-
import { withTimeout } from '../../../utils/async.js';
|
|
21
|
-
import { getProgrammingErrorResult } from '../../../utils/runner.js';
|
|
15
|
+
import { useExerciseFileEditable } from '../../../hooks/useExerciseFile.js';
|
|
22
16
|
import { useRunnerRoomWebSocket } from '../../../hooks/useRunnerRoomWebSocket.js';
|
|
23
17
|
import { useStdioWebSocket } from '../../../hooks/useStdioWebSocket.js';
|
|
24
18
|
import 'ot-text-unicode';
|
|
@@ -29,6 +23,13 @@ import 'lodash/debounce';
|
|
|
29
23
|
import 'random-words';
|
|
30
24
|
import 'unicount';
|
|
31
25
|
import { useStdioTextConcator } from '../../../hooks/useStdioTextConcator.js';
|
|
26
|
+
import { withTimeout } from '../../../utils/async.js';
|
|
27
|
+
import { getProgrammingErrorResult } from '../../../utils/runner.js';
|
|
28
|
+
import { exerciseState, exerciseEditorPreferenceState, exerciseActiveFilenameState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseRunnerRunTypeState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerStdioFilesState, exercisePreviewTypeState, exercisePreviewDisplayModeState, exerciseMonacoEditorApisState, exerciseWebsocketQuery, exerciseContainerSizeState } from '../context/recoil.js';
|
|
29
|
+
import { ExerciseContext } from '../context/context.js';
|
|
30
|
+
import { ExercisePreviewType, ExercisePreviewDisplayMode } from '../context/recoilTypes.js';
|
|
31
|
+
import { exerciseRunnerTextSend$, exerciseFileEditorSyncRequestAction$ } from '../context/subjects.js';
|
|
32
|
+
import '../context/ExerciseProvider.js';
|
|
32
33
|
import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
|
|
33
34
|
import ExerciseRunnerController from './ExerciseRunnerController.js';
|
|
34
35
|
import messageEn from './locales/en.json.js';
|
|
@@ -60,6 +61,9 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
60
61
|
var exercise = useRecoilValue(exerciseState(materialExerciseId));
|
|
61
62
|
var _useRecoilValue = useRecoilValue(exerciseEditorPreferenceState),
|
|
62
63
|
editorPreferenceFontSize = _useRecoilValue.fontSize;
|
|
64
|
+
// file states
|
|
65
|
+
var activeFilename = useRecoilValue(exerciseActiveFilenameState);
|
|
66
|
+
var isFileEditable = useExerciseFileEditable(activeFilename);
|
|
63
67
|
// runner states
|
|
64
68
|
var setRunnerSubmitting = useSetRecoilState(exerciseRunnerSubmittingState);
|
|
65
69
|
var setRunnerRunning = useSetRecoilState(exerciseRunnerRunningState);
|
|
@@ -288,32 +292,51 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
288
292
|
break;
|
|
289
293
|
}
|
|
290
294
|
};
|
|
291
|
-
var requestUsercodeSync = function
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
295
|
+
var requestUsercodeSync = /*#__PURE__*/function () {
|
|
296
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
297
|
+
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
298
|
+
while (1) switch (_context.prev = _context.next) {
|
|
299
|
+
case 0:
|
|
300
|
+
if (isFileEditable) {
|
|
301
|
+
_context.next = 2;
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
return _context.abrupt("return");
|
|
305
|
+
case 2:
|
|
306
|
+
return _context.abrupt("return", new Promise(function (resolve, reject) {
|
|
307
|
+
exerciseFileEditorSyncRequestAction$.next({
|
|
308
|
+
onSucceed: resolve,
|
|
309
|
+
onFailed: reject
|
|
310
|
+
});
|
|
311
|
+
}));
|
|
312
|
+
case 3:
|
|
313
|
+
case "end":
|
|
314
|
+
return _context.stop();
|
|
315
|
+
}
|
|
316
|
+
}, _callee);
|
|
317
|
+
}));
|
|
318
|
+
return function requestUsercodeSync() {
|
|
319
|
+
return _ref2.apply(this, arguments);
|
|
320
|
+
};
|
|
321
|
+
}();
|
|
299
322
|
/**
|
|
300
323
|
* Handle submit code to runner and run / grade.
|
|
301
324
|
*/
|
|
302
325
|
var handleRunnerSubmit = /*#__PURE__*/function () {
|
|
303
|
-
var
|
|
326
|
+
var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(runType) {
|
|
304
327
|
var _a, _b, _c, readyExerciseImage, roomToken;
|
|
305
|
-
return _regeneratorRuntime().wrap(function
|
|
306
|
-
while (1) switch (
|
|
328
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
329
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
307
330
|
case 0:
|
|
308
|
-
|
|
309
|
-
|
|
331
|
+
_context2.prev = 0;
|
|
332
|
+
_context2.next = 3;
|
|
310
333
|
return withTimeout(requestUsercodeSync(), 2000);
|
|
311
334
|
case 3:
|
|
312
|
-
|
|
335
|
+
_context2.next = 9;
|
|
313
336
|
break;
|
|
314
337
|
case 5:
|
|
315
|
-
|
|
316
|
-
|
|
338
|
+
_context2.prev = 5;
|
|
339
|
+
_context2.t0 = _context2["catch"](0);
|
|
317
340
|
setRunnerSubmitErrorDialog({
|
|
318
341
|
code: 'try_again',
|
|
319
342
|
message: __intl.formatMessage({
|
|
@@ -326,20 +349,20 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
326
349
|
return window.location.reload();
|
|
327
350
|
}
|
|
328
351
|
});
|
|
329
|
-
return
|
|
352
|
+
return _context2.abrupt("return");
|
|
330
353
|
case 9:
|
|
331
354
|
readyExerciseImage = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage;
|
|
332
355
|
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
333
356
|
if (!(!readyExerciseImage || !roomToken)) {
|
|
334
|
-
|
|
357
|
+
_context2.next = 13;
|
|
335
358
|
break;
|
|
336
359
|
}
|
|
337
|
-
return
|
|
360
|
+
return _context2.abrupt("return");
|
|
338
361
|
case 13:
|
|
339
362
|
setRunnerStdioFilesState([]);
|
|
340
363
|
setRunnerRunTypeState(runType);
|
|
341
364
|
setRunnerSubmitting(true);
|
|
342
|
-
return
|
|
365
|
+
return _context2.abrupt("return", postOrgMaterialExerciseExerciseRunningSubmit({
|
|
343
366
|
roomToken: roomToken,
|
|
344
367
|
runType: runType,
|
|
345
368
|
exerciseImageId: readyExerciseImage.id,
|
|
@@ -358,22 +381,22 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
358
381
|
}));
|
|
359
382
|
case 17:
|
|
360
383
|
case "end":
|
|
361
|
-
return
|
|
384
|
+
return _context2.stop();
|
|
362
385
|
}
|
|
363
|
-
},
|
|
386
|
+
}, _callee2, null, [[0, 5]]);
|
|
364
387
|
}));
|
|
365
388
|
return function handleRunnerSubmit(_x) {
|
|
366
|
-
return
|
|
389
|
+
return _ref3.apply(this, arguments);
|
|
367
390
|
};
|
|
368
391
|
}();
|
|
369
392
|
/**
|
|
370
393
|
* Handle runner to cancel running.
|
|
371
394
|
*/
|
|
372
395
|
var handleRunnerCancel = /*#__PURE__*/function () {
|
|
373
|
-
var
|
|
396
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
374
397
|
var _a, roomToken;
|
|
375
|
-
return _regeneratorRuntime().wrap(function
|
|
376
|
-
while (1) switch (
|
|
398
|
+
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
399
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
377
400
|
case 0:
|
|
378
401
|
roomToken = (_a = wsRunnerRoom.roomConnectionInfo) === null || _a === void 0 ? void 0 : _a.roomToken;
|
|
379
402
|
if (roomToken) {
|
|
@@ -383,12 +406,12 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
|
|
|
383
406
|
}
|
|
384
407
|
case 2:
|
|
385
408
|
case "end":
|
|
386
|
-
return
|
|
409
|
+
return _context3.stop();
|
|
387
410
|
}
|
|
388
|
-
},
|
|
411
|
+
}, _callee3);
|
|
389
412
|
}));
|
|
390
413
|
return function handleRunnerCancel() {
|
|
391
|
-
return
|
|
414
|
+
return _ref4.apply(this, arguments);
|
|
392
415
|
};
|
|
393
416
|
}();
|
|
394
417
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elice/material-exercise",
|
|
3
|
-
"version": "1.250602.
|
|
3
|
+
"version": "1.250602.1",
|
|
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",
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"@elice/icons": "^1.230814.0",
|
|
84
84
|
"@elice/intl": "0.241127.0",
|
|
85
85
|
"@elice/markdown": "1.241015.0",
|
|
86
|
-
"@elice/material-shared-types": "1.250602.
|
|
87
|
-
"@elice/material-shared-utils": "1.250602.
|
|
86
|
+
"@elice/material-shared-types": "1.250602.1",
|
|
87
|
+
"@elice/material-shared-utils": "1.250602.1",
|
|
88
88
|
"@elice/mui-elements": "^5.250108.0-controllabel.0",
|
|
89
89
|
"@elice/mui-system": "^5.250108.0-controllabel.0",
|
|
90
90
|
"@elice/types": "1.241220.0",
|