@elice/material-exercise 1.260429.0-improvetimerpopoverui.0 → 1.260430.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/material-exercise/context/index.js +0 -7
- package/cjs/components/material-exercise/context/recoil.d.ts +0 -44
- package/cjs/components/material-exercise/context/recoil.js +0 -108
- package/cjs/components/material-exercise/context/recoilTypes.d.ts +0 -7
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +1 -18
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +2 -4
- package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +27 -57
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -219
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +44 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +58 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.js +44 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +44 -0
- package/cjs/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
- package/cjs/components/material-exercise/exercise-runner/action/index.js +15 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +52 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +74 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.js +65 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
- package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +68 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +163 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +188 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +128 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +78 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +98 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +24 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +201 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +125 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +179 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +29 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +94 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +105 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +94 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +95 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +70 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/_context.js +18 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/index.js +13 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +38 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
- package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +33 -0
- package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/cjs/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
- package/cjs/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
- package/cjs/components/shared/monaco-editor/utils/prettier/config.js +1 -1
- package/cjs/hooks/index.d.ts +0 -1
- package/cjs/hooks/index.js +0 -2
- package/es/components/material-exercise/context/index.js +1 -1
- package/es/components/material-exercise/context/recoil.d.ts +0 -44
- package/es/components/material-exercise/context/recoil.js +1 -102
- package/es/components/material-exercise/context/recoilTypes.d.ts +0 -7
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
- package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +2 -18
- package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +3 -3
- package/es/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
- package/es/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +28 -58
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -214
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
- package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +40 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +54 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.js +40 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +40 -0
- package/es/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
- package/es/components/material-exercise/exercise-runner/action/index.js +5 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +46 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +68 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.js +59 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
- package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +62 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +148 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +177 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +118 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +70 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +90 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +20 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +197 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +112 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +161 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +25 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +84 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +97 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +86 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +87 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
- package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +62 -0
- package/es/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
- package/es/components/material-exercise/exercise-runner/arduino/_context.js +15 -0
- package/es/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
- package/es/components/material-exercise/exercise-runner/arduino/index.js +4 -0
- package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
- package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +32 -0
- package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
- package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +27 -0
- package/es/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
- package/es/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
- package/es/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
- package/es/components/shared/monaco-editor/utils/prettier/config.js +1 -1
- package/es/hooks/index.d.ts +0 -1
- package/es/hooks/index.js +0 -1
- package/package.json +15 -11
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -33
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
- package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -178
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -169
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
- package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -120
- package/cjs/constants/arduino.d.ts +0 -35
- package/cjs/constants/arduino.js +0 -73
- package/cjs/hooks/useArduino.d.ts +0 -14
- package/cjs/hooks/useArduino.js +0 -589
- package/cjs/typings/arduino.d.ts +0 -77
- package/cjs/utils/arduino.d.ts +0 -43
- package/cjs/utils/arduino.js +0 -82
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -29
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
- package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -170
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -161
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
- package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -112
- package/es/constants/arduino.d.ts +0 -35
- package/es/constants/arduino.js +0 -62
- package/es/hooks/useArduino.d.ts +0 -14
- package/es/hooks/useArduino.js +0 -583
- package/es/typings/arduino.d.ts +0 -77
- package/es/utils/arduino.d.ts +0 -43
- package/es/utils/arduino.js +0 -75
package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var intl = require('@elice/intl');
|
|
7
|
+
var mcuBridge = require('@elice/mcu-bridge');
|
|
8
|
+
var useArduinoTerminalWriter = require('./useArduinoTerminalWriter.js');
|
|
9
|
+
|
|
10
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
13
|
+
|
|
14
|
+
//
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
var ArduinoProviderSessionWriter = function ArduinoProviderSessionWriter(_ref) {
|
|
18
|
+
var xtermRef = _ref.xtermRef;
|
|
19
|
+
var intl$1 = intl.useRawEliceIntl();
|
|
20
|
+
var session = mcuBridge.useSession();
|
|
21
|
+
var previousSessionRef = React__default.default.useRef(null);
|
|
22
|
+
var _useArduinoTerminalWr = useArduinoTerminalWriter.useArduinoTerminalWriter({
|
|
23
|
+
xtermRef: xtermRef
|
|
24
|
+
}),
|
|
25
|
+
write = _useArduinoTerminalWr.write,
|
|
26
|
+
writeSystemMessage = _useArduinoTerminalWr.writeSystemMessage;
|
|
27
|
+
//
|
|
28
|
+
// Pipe board serial output into xterm.
|
|
29
|
+
//
|
|
30
|
+
React__default.default.useEffect(function () {
|
|
31
|
+
if (!session) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
var decoder = new TextDecoder();
|
|
35
|
+
return session.events.on('serial', function (chunk) {
|
|
36
|
+
write(decoder.decode(chunk));
|
|
37
|
+
});
|
|
38
|
+
}, [session, write]);
|
|
39
|
+
//
|
|
40
|
+
// Print board attach/detach lifecycle messages.
|
|
41
|
+
//
|
|
42
|
+
React__default.default.useEffect(function () {
|
|
43
|
+
var previous = previousSessionRef.current;
|
|
44
|
+
previousSessionRef.current = session;
|
|
45
|
+
if (!previous && session) {
|
|
46
|
+
writeSystemMessage(intl$1.formatMessage({
|
|
47
|
+
id: 'exerciseRunner.arduino.terminal.session.connected'
|
|
48
|
+
}, {
|
|
49
|
+
device: session.driver.board.name
|
|
50
|
+
}));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (previous && !session) {
|
|
54
|
+
writeSystemMessage(intl$1.formatMessage({
|
|
55
|
+
id: 'exerciseRunner.arduino.terminal.session.disconnected'
|
|
56
|
+
}));
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (previous && session && previous !== session) {
|
|
60
|
+
writeSystemMessage(intl$1.formatMessage({
|
|
61
|
+
id: 'exerciseRunner.arduino.terminal.session.reconnected'
|
|
62
|
+
}, {
|
|
63
|
+
device: session.driver.board.name
|
|
64
|
+
}));
|
|
65
|
+
}
|
|
66
|
+
}, [session, writeSystemMessage, intl$1]);
|
|
67
|
+
return null;
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
exports.default = ArduinoProviderSessionWriter;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ArduinoBridgeIntent = 'compile' | 'upload';
|
|
2
|
+
export type ArduinoConnectionIntent = 'connect' | 'upload';
|
|
3
|
+
interface ArduinoBridgeContextValue {
|
|
4
|
+
/**
|
|
5
|
+
* Intent set by the Compile / Upload buttons just before the runner submit
|
|
6
|
+
* fires. The provider reads it when the compiled hex arrives over the stdio
|
|
7
|
+
* WebSocket to decide whether to flash.
|
|
8
|
+
*/
|
|
9
|
+
setPendingIntent: (intent: ArduinoBridgeIntent) => void;
|
|
10
|
+
/**
|
|
11
|
+
* `true` between a Compile/Upload click and the arrival of the hex (or the
|
|
12
|
+
* flash terminating). Buttons gate themselves on this so a second click
|
|
13
|
+
* cannot overwrite the pending intent mid-round-trip.
|
|
14
|
+
*/
|
|
15
|
+
isPending: boolean;
|
|
16
|
+
/** Readback for the button group to know when a flash is in flight. */
|
|
17
|
+
isFlashing: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Picks the connection-guide dialog's copy variant. The guide's open state
|
|
20
|
+
* is derived from `permissionStore.phase`; this only chooses the wording.
|
|
21
|
+
*/
|
|
22
|
+
connectionIntent: ArduinoConnectionIntent | null;
|
|
23
|
+
setConnectionIntent: (intent: ArduinoConnectionIntent | null) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Help dialog opened by the controller-area help button (and auto-opened
|
|
26
|
+
* once on first visit). Only the open flag lives here — the dialog owns
|
|
27
|
+
* its `wasAutoOpened` and `dontShowAgain` form state internally.
|
|
28
|
+
*/
|
|
29
|
+
isHelpDialogOpen: boolean;
|
|
30
|
+
openHelpDialog: () => void;
|
|
31
|
+
closeHelpDialog: () => void;
|
|
32
|
+
}
|
|
33
|
+
export declare const ArduinoBridgeContext: import("react").Context<ArduinoBridgeContextValue | null>;
|
|
34
|
+
export declare const useArduinoBridge: () => ArduinoBridgeContextValue;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//
|
|
8
|
+
var ArduinoBridgeContext = React.createContext(null);
|
|
9
|
+
var useArduinoBridge = function useArduinoBridge() {
|
|
10
|
+
var ctx = React.useContext(ArduinoBridgeContext);
|
|
11
|
+
if (!ctx) {
|
|
12
|
+
throw new Error('useArduinoBridge must be used inside <ArduinoBridgeProvider>.');
|
|
13
|
+
}
|
|
14
|
+
return ctx;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.ArduinoBridgeContext = ArduinoBridgeContext;
|
|
18
|
+
exports.useArduinoBridge = useArduinoBridge;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as ArduinoBridgeProvider } from './ArduinoProvider';
|
|
2
|
+
export { useArduinoBridge } from './_context';
|
|
3
|
+
export { default as ArduinoControllerButtonGroup } from './ArduinoControllerButtonGroup';
|
|
4
|
+
export { default as ArduinoControllerStatusMessage } from './ArduinoControllerStatusMessage';
|
|
5
|
+
export type { ArduinoBridgeApi, ArduinoBridgeProviderProps } from './ArduinoProvider';
|
|
6
|
+
export type { ArduinoBridgeIntent } from './_context';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ArduinoProvider = require('./ArduinoProvider.js');
|
|
4
|
+
var _context = require('./_context.js');
|
|
5
|
+
var ArduinoControllerButtonGroup = require('./ArduinoControllerButtonGroup.js');
|
|
6
|
+
var ArduinoControllerStatusMessage = require('./ArduinoControllerStatusMessage.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
exports.ArduinoBridgeProvider = ArduinoProvider.default;
|
|
11
|
+
exports.useArduinoBridge = _context.useArduinoBridge;
|
|
12
|
+
exports.ArduinoControllerButtonGroup = ArduinoControllerButtonGroup.default;
|
|
13
|
+
exports.ArduinoControllerStatusMessage = ArduinoControllerStatusMessage.default;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ArduinoBridgeIntent } from './_context';
|
|
3
|
+
export interface UseArduinoRunIntentReturn {
|
|
4
|
+
pendingIntent: ArduinoBridgeIntent | null;
|
|
5
|
+
pendingIntentRef: React.MutableRefObject<ArduinoBridgeIntent | null>;
|
|
6
|
+
setRunIntent: (intent: ArduinoBridgeIntent) => void;
|
|
7
|
+
clearRunIntent: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare const useArduinoRunIntent: () => UseArduinoRunIntentReturn;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _rollupPluginBabelHelpers = require('../../../../_virtual/_rollupPluginBabelHelpers.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
9
|
+
|
|
10
|
+
//
|
|
11
|
+
//
|
|
12
|
+
//
|
|
13
|
+
var useArduinoRunIntent = function useArduinoRunIntent() {
|
|
14
|
+
var _return = React__default.default.useRef({});
|
|
15
|
+
var _React$useState = React__default.default.useState(null),
|
|
16
|
+
_React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
|
|
17
|
+
pendingIntent = _React$useState2[0],
|
|
18
|
+
setPendingIntent = _React$useState2[1];
|
|
19
|
+
var pendingIntentRef = React__default.default.useRef(null);
|
|
20
|
+
var setRunIntent = React__default.default.useCallback(function (intent) {
|
|
21
|
+
pendingIntentRef.current = intent;
|
|
22
|
+
setPendingIntent(intent);
|
|
23
|
+
}, []);
|
|
24
|
+
var clearRunIntent = React__default.default.useCallback(function () {
|
|
25
|
+
pendingIntentRef.current = null;
|
|
26
|
+
setPendingIntent(null);
|
|
27
|
+
}, []);
|
|
28
|
+
//
|
|
29
|
+
//
|
|
30
|
+
//
|
|
31
|
+
_return.current.pendingIntent = pendingIntent;
|
|
32
|
+
_return.current.pendingIntentRef = pendingIntentRef;
|
|
33
|
+
_return.current.setRunIntent = setRunIntent;
|
|
34
|
+
_return.current.clearRunIntent = clearRunIntent;
|
|
35
|
+
return _return.current;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
exports.useArduinoRunIntent = useArduinoRunIntent;
|
package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { XtermApis } from "../../../shared/xterm/Xterm";
|
|
3
|
+
export interface UseArduinoTerminalWriterParams {
|
|
4
|
+
xtermRef: React.RefObject<XtermApis | null>;
|
|
5
|
+
}
|
|
6
|
+
export interface UseArduinoTerminalWriterReturn {
|
|
7
|
+
write: (text: string) => void;
|
|
8
|
+
writeSystemMessage: (text: string) => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const useArduinoTerminalWriter: ({ xtermRef }: UseArduinoTerminalWriterParams) => UseArduinoTerminalWriterReturn;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
|
|
5
|
+
function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
|
|
6
|
+
|
|
7
|
+
var React__default = /*#__PURE__*/_interopDefaultCompat(React);
|
|
8
|
+
|
|
9
|
+
//
|
|
10
|
+
//
|
|
11
|
+
//
|
|
12
|
+
var ANSI_WRAP = function ANSI_WRAP(text) {
|
|
13
|
+
return "\x1B[1m\x1B[38;5;221m".concat(text, "\x1B[0m");
|
|
14
|
+
};
|
|
15
|
+
var useArduinoTerminalWriter = function useArduinoTerminalWriter(_ref) {
|
|
16
|
+
var xtermRef = _ref.xtermRef;
|
|
17
|
+
var _return = React__default.default.useRef({});
|
|
18
|
+
var write = React__default.default.useCallback(function (text) {
|
|
19
|
+
var _a;
|
|
20
|
+
(_a = xtermRef.current) === null || _a === void 0 ? void 0 : _a.write(text);
|
|
21
|
+
}, [xtermRef]);
|
|
22
|
+
var writeSystemMessage = React__default.default.useCallback(function (text) {
|
|
23
|
+
write(ANSI_WRAP(text));
|
|
24
|
+
}, [write]);
|
|
25
|
+
//
|
|
26
|
+
//
|
|
27
|
+
//
|
|
28
|
+
_return.current.write = write;
|
|
29
|
+
_return.current.writeSystemMessage = writeSystemMessage;
|
|
30
|
+
return _return.current;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.useArduinoTerminalWriter = useArduinoTerminalWriter;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageEn = {"exerciseRunner.
|
|
5
|
+
var messageEn = {"exerciseRunner.arduino.error.close":"Close","exerciseRunner.arduino.error.title":"Arduino connection error","exerciseRunner.arduino.help.button":"Help","exerciseRunner.arduino.help.title":"🤖 Welcome to the Arduino Lab!","exerciseRunner.arduino.help.greeting":"Write code in here to make a real Arduino board do things. Follow the steps below in order.","exerciseRunner.arduino.help.checklist.1.title":"Plug your Arduino board into the computer","exerciseRunner.arduino.help.checklist.1.body":"Connect the board with a USB cable, then click the [Connect] button next to the menu.","exerciseRunner.arduino.help.checklist.2.title":"Write code and press [Verify]","exerciseRunner.arduino.help.checklist.2.body":"Verify checks your code for problems before sending it.","exerciseRunner.arduino.help.checklist.3.title":"Press [Upload] to send it to the board","exerciseRunner.arduino.help.checklist.3.body":"Your program is sent to the Arduino board. Watch the serial window below for the results.","exerciseRunner.arduino.help.checklist.4.title":"If it works, press [Submit]!","exerciseRunner.arduino.help.checklist.4.body":"Submitting grades your code automatically and shows your score.","exerciseRunner.arduino.help.manual.title":"Need a usage guide?","exerciseRunner.arduino.help.manual.detail":"See the official manual for usage details.","exerciseRunner.arduino.help.dontShowAgain":"Don't show again","exerciseRunner.arduino.help.close":"Close","exerciseRunner.arduino.connectGuide.body":"For security, the browser shows the board picker directly. Find the small window under the address bar at the top-left of the screen and pick your Arduino board.","exerciseRunner.arduino.connectGuide.footer":"Don't see the window? Check the lock icon next to the address bar.","exerciseRunner.arduino.connectGuide.preview.cancel":"Cancel","exerciseRunner.arduino.connectGuide.preview.connect":"Connect","exerciseRunner.arduino.connectGuide.preview.host":"{host} wants to connect to a serial port","exerciseRunner.arduino.connectGuide.preview.label":"It will look like this","exerciseRunner.arduino.connectGuide.steps.1":"Click the entry whose name starts with {usbmodem} or {usbserial}.","exerciseRunner.arduino.connectGuide.steps.2":"Press the {connect} button at the bottom right to connect.","exerciseRunner.arduino.connectGuide.steps.3":"If you click {cancel} by mistake, you can try again.","exerciseRunner.arduino.connectGuide.title.connect":"Select your board in the browser","exerciseRunner.arduino.connectGuide.title.upload":"Let's connect the board first","exerciseRunner.arduino.connectGuide.upload.note":"Connecting the board is required to upload. Once connected, the upload will start automatically.","exerciseRunner.arduino.terminal.board.notConnected":"/* Arduino is not connected. Please connect and try again. */\n","exerciseRunner.arduino.terminal.compile.done":"/* Compile complete. */\n","exerciseRunner.arduino.terminal.firmware.readFail":"/* Failed to read the firmware file. */\n","exerciseRunner.arduino.terminal.session.connected":"/* [connected] {device} */\n","exerciseRunner.arduino.terminal.session.disconnected":"/* [disconnected] */\n","exerciseRunner.arduino.terminal.session.reconnected":"/* [reconnected] {device} */\n","exerciseRunner.arduino.terminal.upload.done":"/* Upload complete. */\n","exerciseRunner.arduino.terminal.upload.error":"/* Error: {error} */\n","exerciseRunner.arduino.terminal.upload.errorUnknown":"Unknown","exerciseRunner.arduino.terminal.upload.progress":"/* Uploading... ({percent}%) */\r","exerciseRunner.arduino.terminal.upload.start":"/* Starting upload. */\n","exerciseRunner.arduino.terminal.upload.verifying":"/* Verifying... */\n","exerciseRunner.controller.arduino.boardStatus.connected":"{device} connected","exerciseRunner.controller.arduino.boardStatus.connectedNoName":"Board connected","exerciseRunner.controller.arduino.boardStatus.disconnected":"Disconnected","exerciseRunner.controller.arduino.boardStatus.idle":"Arduino board not connected","exerciseRunner.controller.arduino.boardStatus.reconnecting":"Reconnecting","exerciseRunner.controller.arduino.button.compile":"Compile","exerciseRunner.controller.arduino.button.connect":"Connect","exerciseRunner.controller.arduino.button.disconnect":"Disconnect","exerciseRunner.controller.arduino.button.upload":"Upload","exerciseRunner.controller.arduino.button.verify":"Verify","exerciseRunner.controller.buttonGroup.button.helpRequest":"Ask about the dragged code","exerciseRunner.controller.buttonGroup.button.run":"Run","exerciseRunner.controller.buttonGroup.button.stop":"Stop","exerciseRunner.controller.buttonGroup.button.submit":"Submit","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"Exercise without submission","exerciseRunner.controller.buttonGroup.button.syncRequest":"Sync code","exerciseRunner.controller.runningInfo.error.fetch":"An error occurred while fetching running info","exerciseRunner.controller.runningInfo.lastRunningDatetime":"Last running datetime","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"Last submit datetime","exerciseRunner.controller.runningInfo.lastSubmitScore":"Last submit score","exerciseRunner.controller.runningInfo.score":"{score}","exerciseRunner.controller.statusMessage.closed":"Editor disconnected","exerciseRunner.controller.statusMessage.connecting":"Connecting to editor...","exerciseRunner.controller.statusMessage.open":"Editor connected","exerciseRunner.controller.timer.runningRemainingTime":"Remaining: {remainingTime}","exerciseRunner.controller.tooltip.closed":"The connection to the code server is currently unstable, so your edits may not be saved.\nPlease check your network and try again.","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"Reload page","exerciseRunner.submitErrorDialog.body.commonError":"An error occurred while running the code.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"You have exceeded the allowed number of lab submissions.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"The exercise image has been updated.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.networkError":"An error occurred while running the code.\nPlease refresh and try again.\nIf the problem persists, please check the network status.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"This exercise is not allowed to be submitted.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"The exercise room is being prepared.\nPlease try again later.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"The exercise room is running.\nPlease wait a moment.","exerciseRunner.submitErrorDialog.body.unknown":"An error occurred while running the code.\nPlease try again later.","exerciseRunner.submitErrorDialog.title":"Unable to run the code"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageEn;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var ja = {"exerciseRunner.
|
|
5
|
+
var ja = {"exerciseRunner.arduino.connectGuide.body":"セキュリティのため、ブラウザがボード選択ウィンドウを直接表示します。画面左上のアドレスバー下に表示される小さなウィンドウから Arduino ボードを選択してください。","exerciseRunner.arduino.connectGuide.footer":"ウィンドウが表示されない場合は、アドレスバーの鍵アイコンを確認してください。","exerciseRunner.arduino.connectGuide.preview.cancel":"キャンセル","exerciseRunner.arduino.connectGuide.preview.connect":"接続","exerciseRunner.arduino.connectGuide.preview.host":"{host} がシリアルポートに接続しようとしています","exerciseRunner.arduino.connectGuide.preview.label":"このようなウィンドウが表示されます","exerciseRunner.arduino.connectGuide.steps.1":"{usbmodem} または {usbserial} で始まる名前の項目をクリックしてください。","exerciseRunner.arduino.connectGuide.steps.2":"右下の {connect} ボタンを押すと接続されます。","exerciseRunner.arduino.connectGuide.steps.3":"誤って {cancel} を押した場合は、もう一度試すことができます。","exerciseRunner.arduino.connectGuide.title.connect":"ブラウザでボードを選択してください","exerciseRunner.arduino.connectGuide.title.upload":"まずボードを接続します","exerciseRunner.arduino.connectGuide.upload.note":"アップロードにはボードの接続が必要です。接続が完了するとすぐにアップロードが始まります。","exerciseRunner.arduino.error.close":"閉じる","exerciseRunner.arduino.error.title":"Arduino 接続エラー","exerciseRunner.arduino.help.button":"ヘルプ","exerciseRunner.arduino.help.checklist.1.body":"USB ケーブルでボードをコンピュータに接続し、メニューの隣にある [接続] ボタンをクリックしてください。","exerciseRunner.arduino.help.checklist.1.title":"Arduino ボードをコンピュータに接続します","exerciseRunner.arduino.help.checklist.2.body":"確認では、送信前にコードに問題がないかチェックします。","exerciseRunner.arduino.help.checklist.2.title":"コードを書いて [確認] を押します","exerciseRunner.arduino.help.checklist.3.body":"Arduino ボードに作成したプログラムが送信されます。下のシリアルウィンドウで結果を確認できます。","exerciseRunner.arduino.help.checklist.3.title":"[アップロード] でボードに送信します","exerciseRunner.arduino.help.checklist.4.body":"提出すると自動的に採点され、点数が表示されます。","exerciseRunner.arduino.help.checklist.4.title":"うまく動いたら [提出]!","exerciseRunner.arduino.help.close":"閉じる","exerciseRunner.arduino.help.dontShowAgain":"次回から表示しない","exerciseRunner.arduino.help.greeting":"ここにコードを書いて、本物の Arduino ボードを動かしてみましょう。下の手順を順番に進めてください。","exerciseRunner.arduino.help.manual.detail":"公式マニュアルで詳しい使い方を確認できます。","exerciseRunner.arduino.help.manual.title":"使い方を知りたいですか?","exerciseRunner.arduino.help.title":"🤖 Arduino ラボへようこそ!","exerciseRunner.arduino.terminal.board.notConnected":"/* Arduino が接続されていません。接続後もう一度お試しください。 */\n","exerciseRunner.arduino.terminal.compile.done":"/* コンパイルが完了しました。 */\n","exerciseRunner.arduino.terminal.firmware.readFail":"/* ファームウェアファイルを読み取れませんでした。 */\n","exerciseRunner.arduino.terminal.session.connected":"/* [接続] {device} */\n","exerciseRunner.arduino.terminal.session.disconnected":"/* [切断] */\n","exerciseRunner.arduino.terminal.session.reconnected":"/* [再接続] {device} */\n","exerciseRunner.arduino.terminal.upload.done":"/* アップロードが完了しました。 */\n","exerciseRunner.arduino.terminal.upload.error":"/* エラーが発生しました: {error} */\n","exerciseRunner.arduino.terminal.upload.errorUnknown":"不明","exerciseRunner.arduino.terminal.upload.progress":"/* アップロード中... ({percent}%) */\r","exerciseRunner.arduino.terminal.upload.start":"/* アップロードを開始します。 */\n","exerciseRunner.arduino.terminal.upload.verifying":"/* 確認中... */\n","exerciseRunner.controller.arduino.boardStatus.connected":"{device} 接続済み","exerciseRunner.controller.arduino.boardStatus.connectedNoName":"ボード接続済み","exerciseRunner.controller.arduino.boardStatus.disconnected":"切断","exerciseRunner.controller.arduino.boardStatus.idle":"Arduino ボード未接続","exerciseRunner.controller.arduino.boardStatus.reconnecting":"再接続中","exerciseRunner.controller.arduino.button.compile":"コンパイル","exerciseRunner.controller.arduino.button.connect":"接続","exerciseRunner.controller.arduino.button.disconnect":"切断","exerciseRunner.controller.arduino.button.upload":"アップロード","exerciseRunner.controller.arduino.button.verify":"確認","exerciseRunner.controller.buttonGroup.button.helpRequest":"ドラッグしたコードの質問","exerciseRunner.controller.buttonGroup.button.run":"ラン","exerciseRunner.controller.buttonGroup.button.stop":"停止","exerciseRunner.controller.buttonGroup.button.submit":"提出","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"提出なしの運動","exerciseRunner.controller.buttonGroup.button.syncRequest":"コードを同期します","exerciseRunner.controller.runningInfo.error.fetch":"ランニング情報を取得中にエラーが発生しました。","exerciseRunner.controller.runningInfo.lastRunningDatetime":"最終実行日時","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"最終送信日時","exerciseRunner.controller.runningInfo.lastSubmitScore":"最後に提出したスコア","exerciseRunner.controller.runningInfo.score":"{score} 点","exerciseRunner.controller.statusMessage.closed":"エディタが切断されました。","exerciseRunner.controller.statusMessage.connecting":"エディタへの接続中...","exerciseRunner.controller.statusMessage.open":"エディターが接続されました","exerciseRunner.controller.timer.runningRemainingTime":"残り時間: {remainingTime}","exerciseRunner.controller.tooltip.closed":"現在、コードサーバーとの接続が不安定なため、編集内容が反映されない可能性があります。\nネットワークの状態を確認してから作業を続けてください。","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"ページをリロードしてください。","exerciseRunner.submitErrorDialog.body.commonError":"コードを実行中にエラーが発生しました。\nページを更新してもう一度お試しください。","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"許可された実験提出回数を超えています。","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"エクササイズ画像が更新されました。\nもう一度更新してやり直してください。","exerciseRunner.submitErrorDialog.body.networkError":"コードを実行中にエラーが発生しました。\nページを更新して、もう一度お試しください。\n問題が解決しない場合は、ネットワークの状態を確認してください。","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"この演習は提出してはいけません。","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"エクササイズルームは準備中です。\n後で再試行してください。","exerciseRunner.submitErrorDialog.body.roomIsBusy":"運動室は稼働しています。\n少々お待ちください。","exerciseRunner.submitErrorDialog.body.unknown":"コードの実行中にエラーが発生しました。\n後でもう一度お試しください。","exerciseRunner.submitErrorDialog.title":"コードを実行できません。"};
|
|
6
6
|
|
|
7
7
|
exports.default = ja;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageKo = {"exerciseRunner.
|
|
5
|
+
var messageKo = {"exerciseRunner.arduino.error.close":"닫기","exerciseRunner.arduino.error.title":"아두이노 연결 오류","exerciseRunner.arduino.help.button":"도움말","exerciseRunner.arduino.help.title":"🤖 아두이노 실습실에 오신 걸 환영해요!","exerciseRunner.arduino.help.greeting":"이 실습실에서는 코드를 작성해서 진짜 아두이노 보드를 움직여볼 수 있어요. 아래 단계를 차례로 따라해보세요.","exerciseRunner.arduino.help.checklist.1.title":"아두이노 보드를 컴퓨터에 연결해요","exerciseRunner.arduino.help.checklist.1.body":"USB 케이블로 보드를 컴퓨터에 꽂은 뒤, 메뉴 옆 [연결하기] 버튼을 누르세요.","exerciseRunner.arduino.help.checklist.2.title":"코드를 작성하고 [확인]을 눌러요","exerciseRunner.arduino.help.checklist.2.body":"확인 버튼은 코드에 문제가 없는지 검사해줘요.","exerciseRunner.arduino.help.checklist.3.title":"[업로드]로 보드에 전송해요","exerciseRunner.arduino.help.checklist.3.body":"아두이노 보드에 작성한 프로그램을 보내요. 아래 시리얼 창에서 결과를 볼 수 있어요.","exerciseRunner.arduino.help.checklist.4.title":"잘 동작하면 [제출]!","exerciseRunner.arduino.help.checklist.4.body":"제출하면 자동으로 채점이 되고 점수를 알려줘요.","exerciseRunner.arduino.help.manual.title":"사용 방법이 궁금하신가요?","exerciseRunner.arduino.help.manual.detail":"공식 매뉴얼에서 자세한 사용법을 확인할 수 있어요.","exerciseRunner.arduino.help.dontShowAgain":"다시 보지 않기","exerciseRunner.arduino.help.close":"닫기","exerciseRunner.arduino.connectGuide.body":"보안을 위해 브라우저가 직접 보드 선택 창을 띄워요. 화면 왼쪽 위 주소창 아래에 나타나는 작은 창에서 내 아두이노 보드를 골라주세요.","exerciseRunner.arduino.connectGuide.footer":"창이 안 보이면 주소창 옆 자물쇠 아이콘을 확인해보세요","exerciseRunner.arduino.connectGuide.preview.cancel":"취소","exerciseRunner.arduino.connectGuide.preview.connect":"연결","exerciseRunner.arduino.connectGuide.preview.host":"{host}에서 시리얼 포트에 연결하려고 합니다.","exerciseRunner.arduino.connectGuide.preview.label":"이렇게 생긴 창이 떠요","exerciseRunner.arduino.connectGuide.steps.1":"이름이 {usbmodem} 또는 {usbserial}로 시작하는 항목을 클릭하세요.","exerciseRunner.arduino.connectGuide.steps.2":"오른쪽 아래 {connect} 버튼을 누르면 연결돼요.","exerciseRunner.arduino.connectGuide.steps.3":"실수로 {cancel}을 눌러도 다시 시도할 수 있어요.","exerciseRunner.arduino.connectGuide.title.connect":"브라우저에서 보드 선택해주세요","exerciseRunner.arduino.connectGuide.title.upload":"보드를 먼저 연결할게요","exerciseRunner.arduino.connectGuide.upload.note":"업로드를 위해 보드 연결이 필요해요. 연결이 끝나면 바로 업로드가 시작돼요.","exerciseRunner.arduino.terminal.board.notConnected":"/* 아두이노가 연결되어 있지 않습니다. 연결 후 다시 시도해 주세요. */\n","exerciseRunner.arduino.terminal.compile.done":"/* 컴파일이 완료되었습니다. */\n","exerciseRunner.arduino.terminal.firmware.readFail":"/* 펌웨어 파일을 읽지 못했습니다. */\n","exerciseRunner.arduino.terminal.session.connected":"/* [연결됨] {device} */\n","exerciseRunner.arduino.terminal.session.disconnected":"/* [연결 끊김] */\n","exerciseRunner.arduino.terminal.session.reconnected":"/* [재연결] {device} */\n","exerciseRunner.arduino.terminal.upload.done":"/* 업로드가 완료되었습니다. */\n","exerciseRunner.arduino.terminal.upload.error":"/* 에러가 발생했습니다: {error} */\n","exerciseRunner.arduino.terminal.upload.errorUnknown":"알 수 없음","exerciseRunner.arduino.terminal.upload.progress":"/* 업로드 중입니다... ({percent}%) */\r","exerciseRunner.arduino.terminal.upload.start":"/* 업로드를 시작합니다. */\n","exerciseRunner.arduino.terminal.upload.verifying":"/* 확인 중입니다... */\n","exerciseRunner.controller.arduino.boardStatus.connected":"{device} 연결됨","exerciseRunner.controller.arduino.boardStatus.connectedNoName":"보드 연결됨","exerciseRunner.controller.arduino.boardStatus.disconnected":"연결 끊김","exerciseRunner.controller.arduino.boardStatus.idle":"아두이노 보드 연결 안 됨","exerciseRunner.controller.arduino.boardStatus.reconnecting":"재연결 중","exerciseRunner.controller.arduino.button.compile":"컴파일(확인)","exerciseRunner.controller.arduino.button.connect":"연결하기","exerciseRunner.controller.arduino.button.disconnect":"연결 해제","exerciseRunner.controller.arduino.button.upload":"업로드","exerciseRunner.controller.arduino.button.verify":"확인","exerciseRunner.controller.buttonGroup.button.helpRequest":"드래그한 코드 질문","exerciseRunner.controller.buttonGroup.button.run":"실행","exerciseRunner.controller.buttonGroup.button.stop":"정지","exerciseRunner.controller.buttonGroup.button.submit":"제출","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"실행만 가능한 실습입니다.","exerciseRunner.controller.buttonGroup.button.syncRequest":"코드 동기화","exerciseRunner.controller.runningInfo.error.fetch":"최종 실행 내역을 가져오는데 문제가 발생하였습니다.","exerciseRunner.controller.runningInfo.lastRunningDatetime":"최종 실행 시간","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"최종 제출 시간","exerciseRunner.controller.runningInfo.lastSubmitScore":"최종 제출 점수","exerciseRunner.controller.runningInfo.score":"{score} 점","exerciseRunner.controller.statusMessage.closed":"에디터 연결 끊김","exerciseRunner.controller.statusMessage.connecting":"에디터 연결 중...","exerciseRunner.controller.statusMessage.open":"에디터 연결됨","exerciseRunner.controller.timer.runningRemainingTime":"실행 제한시간: {remainingTime}","exerciseRunner.controller.tooltip.closed":"현재 코드 서버와 네트워크 연결 상태가 불안정하여 편집 내용이 반영되지 않습니다.\n네트워크 상태를 확인하여 코드 작성을 진행해주세요.","exerciseRunner.submitErrorDialog.action.confirm":"확인","exerciseRunner.submitErrorDialog.action.reload":"새로고침","exerciseRunner.submitErrorDialog.body.commonError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"실습 제출 허용 횟수를 초과했습니다.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"실습환경이 업데이트 되었습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.networkError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.\n문제가 계속되면 네트워크 상태를 확인해주세요.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"제출이 허용되지 않은 실습입니다.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"실습환경이 준비 중입니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"실습을 실행하고 있습니다.\n잠시만 기다려 주세요.","exerciseRunner.submitErrorDialog.body.unknown":"코드 실행 중 오류가 발생했습니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.title":"실습을 실행할 수 없습니다"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageKo;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var th = {"exerciseRunner.
|
|
5
|
+
var th = {"exerciseRunner.arduino.connectGuide.body":"เพื่อความปลอดภัย เบราว์เซอร์จะแสดงหน้าต่างเลือกบอร์ดให้โดยตรง โปรดมองหาหน้าต่างเล็กๆ ใต้แถบที่อยู่บริเวณซ้ายบนของหน้าจอ แล้วเลือกบอร์ด Arduino ของคุณ","exerciseRunner.arduino.connectGuide.footer":"ถ้ามองไม่เห็นหน้าต่าง ลองตรวจสอบไอคอนกุญแจข้างแถบที่อยู่","exerciseRunner.arduino.connectGuide.preview.cancel":"ยกเลิก","exerciseRunner.arduino.connectGuide.preview.connect":"เชื่อมต่อ","exerciseRunner.arduino.connectGuide.preview.host":"{host} ต้องการเชื่อมต่อกับพอร์ตอนุกรม","exerciseRunner.arduino.connectGuide.preview.label":"หน้าต่างจะมีลักษณะแบบนี้","exerciseRunner.arduino.connectGuide.steps.1":"คลิกที่รายการที่มีชื่อขึ้นต้นด้วย {usbmodem} หรือ {usbserial}","exerciseRunner.arduino.connectGuide.steps.2":"กดปุ่ม {connect} ที่มุมขวาล่างเพื่อเชื่อมต่อ","exerciseRunner.arduino.connectGuide.steps.3":"ถ้าเผลอกด {cancel} ก็สามารถลองใหม่ได้","exerciseRunner.arduino.connectGuide.title.connect":"เลือกบอร์ดในเบราว์เซอร์","exerciseRunner.arduino.connectGuide.title.upload":"เชื่อมต่อบอร์ดก่อน","exerciseRunner.arduino.connectGuide.upload.note":"การอัปโหลดต้องใช้การเชื่อมต่อบอร์ด เมื่อเชื่อมต่อเสร็จ การอัปโหลดจะเริ่มทันที","exerciseRunner.arduino.error.close":"ปิด","exerciseRunner.arduino.error.title":"เกิดข้อผิดพลาดในการเชื่อมต่อ Arduino","exerciseRunner.arduino.help.button":"วิธีใช้","exerciseRunner.arduino.help.checklist.1.body":"เชื่อมต่อบอร์ดกับคอมพิวเตอร์ด้วยสาย USB จากนั้นคลิกปุ่ม [เชื่อมต่อ] ที่อยู่ข้างเมนู","exerciseRunner.arduino.help.checklist.1.title":"เชื่อมต่อบอร์ด Arduino กับคอมพิวเตอร์","exerciseRunner.arduino.help.checklist.2.body":"ปุ่มตรวจสอบจะตรวจหาปัญหาในโค้ดก่อนที่จะส่ง","exerciseRunner.arduino.help.checklist.2.title":"เขียนโค้ดและกด [ตรวจสอบ]","exerciseRunner.arduino.help.checklist.3.body":"โปรแกรมของคุณจะถูกส่งไปยังบอร์ด Arduino ดูผลลัพธ์ในหน้าต่างซีเรียลด้านล่าง","exerciseRunner.arduino.help.checklist.3.title":"กด [อัปโหลด] เพื่อส่งไปยังบอร์ด","exerciseRunner.arduino.help.checklist.4.body":"การส่งจะตรวจให้คะแนนโค้ดของคุณโดยอัตโนมัติและแสดงคะแนน","exerciseRunner.arduino.help.checklist.4.title":"ถ้าใช้ได้ดี กด [ส่ง]!","exerciseRunner.arduino.help.close":"ปิด","exerciseRunner.arduino.help.dontShowAgain":"ไม่ต้องแสดงอีก","exerciseRunner.arduino.help.greeting":"เขียนโค้ดที่นี่เพื่อทำให้บอร์ด Arduino จริงทำงาน ทำตามขั้นตอนด้านล่างตามลำดับ","exerciseRunner.arduino.help.manual.detail":"ดูคู่มืออย่างเป็นทางการสำหรับรายละเอียดการใช้งาน","exerciseRunner.arduino.help.manual.title":"ต้องการคู่มือการใช้งาน?","exerciseRunner.arduino.help.title":"🤖 ยินดีต้อนรับสู่ห้องแล็บ Arduino!","exerciseRunner.arduino.terminal.board.notConnected":"/* Arduino ไม่ได้เชื่อมต่อ กรุณาเชื่อมต่อแล้วลองใหม่ */\n","exerciseRunner.arduino.terminal.compile.done":"/* คอมไพล์เสร็จสมบูรณ์ */\n","exerciseRunner.arduino.terminal.firmware.readFail":"/* อ่านไฟล์เฟิร์มแวร์ไม่สำเร็จ */\n","exerciseRunner.arduino.terminal.session.connected":"/* [เชื่อมต่อแล้ว] {device} */\n","exerciseRunner.arduino.terminal.session.disconnected":"/* [ตัดการเชื่อมต่อ] */\n","exerciseRunner.arduino.terminal.session.reconnected":"/* [เชื่อมต่อใหม่] {device} */\n","exerciseRunner.arduino.terminal.upload.done":"/* อัปโหลดเสร็จสมบูรณ์ */\n","exerciseRunner.arduino.terminal.upload.error":"/* เกิดข้อผิดพลาด: {error} */\n","exerciseRunner.arduino.terminal.upload.errorUnknown":"ไม่ทราบ","exerciseRunner.arduino.terminal.upload.progress":"/* กำลังอัปโหลด... ({percent}%) */\r","exerciseRunner.arduino.terminal.upload.start":"/* เริ่มอัปโหลด */\n","exerciseRunner.arduino.terminal.upload.verifying":"/* กำลังตรวจสอบ... */\n","exerciseRunner.controller.arduino.boardStatus.connected":"{device} เชื่อมต่อแล้ว","exerciseRunner.controller.arduino.boardStatus.connectedNoName":"เชื่อมต่อบอร์ดแล้ว","exerciseRunner.controller.arduino.boardStatus.disconnected":"ตัดการเชื่อมต่อ","exerciseRunner.controller.arduino.boardStatus.idle":"ไม่ได้เชื่อมต่อบอร์ด Arduino","exerciseRunner.controller.arduino.boardStatus.reconnecting":"กำลังเชื่อมต่อใหม่","exerciseRunner.controller.arduino.button.compile":"คอมไพล์","exerciseRunner.controller.arduino.button.connect":"เชื่อมต่อ","exerciseRunner.controller.arduino.button.disconnect":"ตัดการเชื่อมต่อ","exerciseRunner.controller.arduino.button.upload":"อัปโหลด","exerciseRunner.controller.arduino.button.verify":"ตรวจสอบ","exerciseRunner.controller.buttonGroup.button.helpRequest":"ถามเกี่ยวกับโค้ดที่ลาก","exerciseRunner.controller.buttonGroup.button.run":"เรียกใช้งาน","exerciseRunner.controller.buttonGroup.button.stop":"หยุด","exerciseRunner.controller.buttonGroup.button.submit":"ส่ง","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"การฝึกอบรมนี้รองรับเฉพาะการรันเท่านั้น","exerciseRunner.controller.buttonGroup.button.syncRequest":"ซิงค์โค้ด","exerciseRunner.controller.runningInfo.error.fetch":"เกิดข้อผิดพลาดขณะดึงข้อมูลการทำงานใหม่","exerciseRunner.controller.runningInfo.lastRunningDatetime":"วันที่และเวลาที่ทำการเรียกใช้ครั้งล่าสุด","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"เวลาส่งครั้งล่าสุด","exerciseRunner.controller.runningInfo.lastSubmitScore":"คะแนนส่งครั้งล่าสุด","exerciseRunner.controller.runningInfo.score":"{score} คะแนน","exerciseRunner.controller.statusMessage.closed":"การเชื่อมต่อกับ Editor ถูกยกเลิก","exerciseRunner.controller.statusMessage.connecting":"กำลังเชื่อมต่อกับ Editor...","exerciseRunner.controller.statusMessage.open":"เชื่อมต่อกับ Editor สำเร็จ","exerciseRunner.controller.timer.runningRemainingTime":"เวลาที่เหลืออยู่: {remainingTime}","exerciseRunner.controller.tooltip.closed":"ขณะนี้การเชื่อมต่อกับเซิร์ฟเวอร์โค้ดไม่เสถียร การแก้ไขของคุณอาจไม่ถูกบันทึก\nกรุณาตรวจสอบเครือข่ายของคุณก่อนดำเนินการต่อ","exerciseRunner.submitErrorDialog.action.confirm":"ยืนยัน","exerciseRunner.submitErrorDialog.action.reload":"โหลดหน้าใหม่","exerciseRunner.submitErrorDialog.body.commonError":"เกิดข้อผิดพลาดขณะรันโค้ด\nโปรดรีเฟรชและลองอีกครั้ง","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"คุณส่งเกินจำนวนที่กำหนด","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"สภาพแวดล้อมการฝึกอบรมหมดอายุ กรุณารีเฟรชและลองอีกครั้ง","exerciseRunner.submitErrorDialog.body.networkError":"เกิดข้อผิดพลาดขณะรันโค้ด กรุณารีเฟรชและลองอีกครั้ง\nหากยังมีปัญหา กรุณาตรวจสอบสภาพการเชื่อมต่ออินเทอร์เน็ต","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"การส่งผลงานสำหรับการฝึกอบรมนี้ไม่ถูกต้อง","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"สภาพแวดล้อมการฝึกอบรมกำลังถูกตั้งค่า กรุณารอสักครู่และลองอีกครั้ง","exerciseRunner.submitErrorDialog.body.roomIsBusy":"มีการรันโค้ดอยู่ในขณะนี้ กรุณารอจนกว่าจะเสร็จสิ้น","exerciseRunner.submitErrorDialog.body.unknown":"เกิดข้อผิดพลาดขณะรันโค้ด กรุณารอสักครู่และลองอีกครั้ง","exerciseRunner.submitErrorDialog.title":"ไม่สามารถรันโค้ดได้"};
|
|
6
6
|
|
|
7
7
|
exports.default = th;
|
package/cjs/hooks/index.d.ts
CHANGED
package/cjs/hooks/index.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var useArduino = require('./useArduino.js');
|
|
4
3
|
var useExerciseFile = require('./useExerciseFile.js');
|
|
5
4
|
var useExericseShortcut = require('./useExericseShortcut.js');
|
|
6
5
|
var useRunnerRoomWebSocket = require('./useRunnerRoomWebSocket.js');
|
|
@@ -10,7 +9,6 @@ var useUsercodeEditWebSocket = require('./useUsercodeEditWebSocket.js');
|
|
|
10
9
|
|
|
11
10
|
|
|
12
11
|
|
|
13
|
-
exports.useArduino = useArduino.useArduino;
|
|
14
12
|
exports.useExerciseFileEditable = useExerciseFile.useExerciseFileEditable;
|
|
15
13
|
exports.useExerciseFileResettable = useExerciseFile.useExerciseFileResettable;
|
|
16
14
|
exports.useExericseShortcut = useExericseShortcut.useExericseShortcut;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { exerciseActiveFilenameState, exerciseAibotInfoEnableState,
|
|
1
|
+
export { exerciseActiveFilenameState, exerciseAibotInfoEnableState, exerciseContainerSizeState, exerciseEditorPreferenceState, exerciseFileEditorCursorSelectionValueState, exerciseFileEditorCursorState, exerciseFileTabsOpenedState, exerciseFileTreeOpenedState, exerciseLectureState, exerciseMonacoEditorApisState, exerciseMultilangEnvironmentState, exerciseMultilangLanguagesState, exercisePreviewDisplayModeState, exercisePreviewTypeState, exerciseRightpaneActiveState, exerciseRoomState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerRunTypeState, exerciseRunnerRunningState, exerciseRunnerStdioFilesState, exerciseRunnerSubmittingState, exerciseState, exerciseUserState, exerciseWebSocketTotalStatusQuery, exerciseWebsocketQuery, exerciseWebsocketStates } from './recoil.js';
|
|
2
2
|
export { ExerciseContext } from './context.js';
|
|
3
3
|
export { ExercisePreviewDisplayMode, ExercisePreviewType } from './recoilTypes.js';
|
|
4
4
|
export { exerciseFileEditorContentChange$, exerciseFileEditorSaveAction$, exerciseFileEditorSyncRequestAction$, exerciseRunnerRoomsOpen$, exerciseRunnerTextSend$ } from './subjects.js';
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ExercisePreviewDisplayMode, ExercisePreviewType } from './recoilTypes';
|
|
2
2
|
import type { MonacoEditorApis } from "../../shared/monaco-editor";
|
|
3
|
-
import type { ArduinoAgentConnectionStatus, ArduinoUploadProgressStatus } from "../../../typings/arduino";
|
|
4
3
|
import type { AtomContainerSizeState, AtomExerciseRoomState, AtomExerciseState, AtomFileEditorCursorState, AtomLectureState, AtomMultilangEnvironmentJson, AtomMultilangEnvironmentState, AtomRunnerRoomConnectionInfoState, AtomRunnerRunTypeState, AtomRunnerStdioFilesState, AtomUserState, AtomVisibilityState, AtomWebSocketStateKey, AtomWebSocketStates } from './recoilTypes';
|
|
5
4
|
/**
|
|
6
5
|
* Lecture.
|
|
@@ -84,49 +83,6 @@ export declare const exerciseMultilangEnvironmentState: (param: {
|
|
|
84
83
|
materialExerciseId: number;
|
|
85
84
|
exerciseRoomId: number;
|
|
86
85
|
}) => import("recoil").RecoilState<AtomMultilangEnvironmentJson>;
|
|
87
|
-
/**
|
|
88
|
-
* Arduino preference.
|
|
89
|
-
*/
|
|
90
|
-
export declare const exerciseArduinoPreferenceState: import("recoil").RecoilState<Required<{
|
|
91
|
-
baudRate: number;
|
|
92
|
-
port: string;
|
|
93
|
-
}>>;
|
|
94
|
-
/**
|
|
95
|
-
* Arduino ports.
|
|
96
|
-
*/
|
|
97
|
-
export declare const exerciseArduinoPortsState: import("recoil").RecoilState<{
|
|
98
|
-
Name: string;
|
|
99
|
-
SerialNumber: string;
|
|
100
|
-
DeviceClass: string;
|
|
101
|
-
IsOpen: boolean;
|
|
102
|
-
IsPrimary: boolean;
|
|
103
|
-
Baud: number;
|
|
104
|
-
BufferAlgorithm: string;
|
|
105
|
-
Ver: string;
|
|
106
|
-
NetworkPort: boolean;
|
|
107
|
-
VendorID: string;
|
|
108
|
-
ProductID: string;
|
|
109
|
-
}[]>;
|
|
110
|
-
/**
|
|
111
|
-
* Opened arduino port.
|
|
112
|
-
*/
|
|
113
|
-
export declare const exerciseArduinoOpenedPortNameState: import("recoil").RecoilState<string | null>;
|
|
114
|
-
/**
|
|
115
|
-
* Arduino port open handler.
|
|
116
|
-
*/
|
|
117
|
-
export declare const exerciseArduinoOnSelectPortState: import("recoil").RecoilState<(name: string) => void>;
|
|
118
|
-
/**
|
|
119
|
-
* Arduino agent connection status.
|
|
120
|
-
*/
|
|
121
|
-
export declare const exerciseArduinoAgentConnectionState: import("recoil").RecoilState<ArduinoAgentConnectionStatus>;
|
|
122
|
-
/**
|
|
123
|
-
* Arduino upload progress.
|
|
124
|
-
*/
|
|
125
|
-
export declare const exerciseArduinoUploadProgressState: import("recoil").RecoilState<ArduinoUploadProgressStatus>;
|
|
126
|
-
/**
|
|
127
|
-
* Arduino agent modal open status.
|
|
128
|
-
*/
|
|
129
|
-
export declare const exerciseArduinoAgentModalState: import("recoil").RecoilState<boolean>;
|
|
130
86
|
/**
|
|
131
87
|
*
|
|
132
88
|
*/
|