@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
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { useRawEliceIntl } from '@elice/intl';
|
|
3
|
+
import Box from '@mui/material/Box';
|
|
4
|
+
import Stack from '@mui/material/Stack';
|
|
5
|
+
import Typography from '@mui/material/Typography';
|
|
6
|
+
|
|
7
|
+
//
|
|
8
|
+
//
|
|
9
|
+
//
|
|
10
|
+
var CHECKLIST_STEPS = [1, 2, 3, 4];
|
|
11
|
+
//
|
|
12
|
+
//
|
|
13
|
+
//
|
|
14
|
+
var ArduinoHelpDialogChecklist = function ArduinoHelpDialogChecklist() {
|
|
15
|
+
var intl = useRawEliceIntl();
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
var renderStepBadge = function renderStepBadge(step) {
|
|
20
|
+
return jsx(Box, {
|
|
21
|
+
"aria-hidden": "true",
|
|
22
|
+
sx: {
|
|
23
|
+
width: 24,
|
|
24
|
+
height: 24,
|
|
25
|
+
borderRadius: '50%',
|
|
26
|
+
display: 'flex',
|
|
27
|
+
alignItems: 'center',
|
|
28
|
+
justifyContent: 'center',
|
|
29
|
+
fontSize: 13,
|
|
30
|
+
fontWeight: 700,
|
|
31
|
+
bgcolor: 'primary.main',
|
|
32
|
+
color: 'primary.contrastText',
|
|
33
|
+
flexShrink: 0
|
|
34
|
+
},
|
|
35
|
+
children: step
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
var renderItem = function renderItem(step) {
|
|
42
|
+
var title = intl.formatMessage({
|
|
43
|
+
id: "exerciseRunner.arduino.help.checklist.".concat(step, ".title")
|
|
44
|
+
});
|
|
45
|
+
var body = intl.formatMessage({
|
|
46
|
+
id: "exerciseRunner.arduino.help.checklist.".concat(step, ".body")
|
|
47
|
+
});
|
|
48
|
+
return jsxs(Stack, {
|
|
49
|
+
direction: "row",
|
|
50
|
+
spacing: 1.5,
|
|
51
|
+
alignItems: "flex-start",
|
|
52
|
+
children: [renderStepBadge(step), jsxs(Box, {
|
|
53
|
+
sx: {
|
|
54
|
+
flex: 1,
|
|
55
|
+
pt: 0.25
|
|
56
|
+
},
|
|
57
|
+
children: [jsx(Typography, {
|
|
58
|
+
variant: "body2",
|
|
59
|
+
fontWeight: 700,
|
|
60
|
+
children: title
|
|
61
|
+
}), jsx(Typography, {
|
|
62
|
+
variant: "caption",
|
|
63
|
+
color: "text.secondary",
|
|
64
|
+
sx: {
|
|
65
|
+
display: 'block',
|
|
66
|
+
mt: 0.25
|
|
67
|
+
},
|
|
68
|
+
children: body
|
|
69
|
+
})]
|
|
70
|
+
})]
|
|
71
|
+
}, step);
|
|
72
|
+
};
|
|
73
|
+
//
|
|
74
|
+
//
|
|
75
|
+
//
|
|
76
|
+
return jsx(Stack, {
|
|
77
|
+
spacing: 1.5,
|
|
78
|
+
children: CHECKLIST_STEPS.map(function (step) {
|
|
79
|
+
return renderItem(step);
|
|
80
|
+
})
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
export { ArduinoHelpDialogChecklist as default };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { XtermApis } from "../../../shared/xterm/Xterm";
|
|
3
|
+
export interface ArduinoBridgeApi {
|
|
4
|
+
handleIncomingHex: (dataUrl: string) => void;
|
|
5
|
+
sendText: (text: string) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface ArduinoBridgeProviderProps {
|
|
8
|
+
xtermRef: React.RefObject<XtermApis | null>;
|
|
9
|
+
apiRef: React.MutableRefObject<ArduinoBridgeApi | null>;
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
}
|
|
12
|
+
export interface ArduinoBridgeProviderGateProps extends ArduinoBridgeProviderProps {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
declare const _default: ({ enabled, children, ...rest }: ArduinoBridgeProviderGateProps) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export default _default;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import { __rest } from 'tslib';
|
|
3
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
import React, { useEffect } from 'react';
|
|
5
|
+
import { useFlash, usePermissionPhase, setupMCUBridge, ArduinoUnoDriver, ArduinoMegaDriver } from '@elice/mcu-bridge';
|
|
6
|
+
import { ArduinoBridgeContext } from './_context.js';
|
|
7
|
+
import ArduinoConnectionGuideDialog from './ArduinoConnectionGuideDialog.js';
|
|
8
|
+
import ArduinoErrorDialog from './ArduinoErrorDialog.js';
|
|
9
|
+
import ArduinoHelpDialog from './ArduinoHelpDialog.js';
|
|
10
|
+
import ArduinoProviderApiBinder from './ArduinoProviderApiBinder.js';
|
|
11
|
+
import ArduinoProviderFlashWriter from './ArduinoProviderFlashWriter.js';
|
|
12
|
+
import ArduinoProviderSessionWriter from './ArduinoProviderSessionWriter.js';
|
|
13
|
+
import { useArduinoRunIntent } from './useArduinoRunIntent.js';
|
|
14
|
+
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
var ArduinoBridgeProvider = function ArduinoBridgeProvider(_ref) {
|
|
19
|
+
var xtermRef = _ref.xtermRef,
|
|
20
|
+
apiRef = _ref.apiRef,
|
|
21
|
+
children = _ref.children;
|
|
22
|
+
var _useFlash = useFlash(),
|
|
23
|
+
isFlashing = _useFlash.isFlashing;
|
|
24
|
+
var _useArduinoRunIntent = useArduinoRunIntent(),
|
|
25
|
+
pendingIntent = _useArduinoRunIntent.pendingIntent,
|
|
26
|
+
pendingIntentRef = _useArduinoRunIntent.pendingIntentRef,
|
|
27
|
+
setRunIntent = _useArduinoRunIntent.setRunIntent,
|
|
28
|
+
clearRunIntent = _useArduinoRunIntent.clearRunIntent;
|
|
29
|
+
var permissionPhase = usePermissionPhase();
|
|
30
|
+
var _React$useState = React.useState(null),
|
|
31
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
32
|
+
connectionIntent = _React$useState2[0],
|
|
33
|
+
setConnectionIntent = _React$useState2[1];
|
|
34
|
+
var _React$useState3 = React.useState(false),
|
|
35
|
+
_React$useState4 = _slicedToArray(_React$useState3, 2),
|
|
36
|
+
isHelpDialogOpen = _React$useState4[0],
|
|
37
|
+
setHelpDialogOpen = _React$useState4[1];
|
|
38
|
+
var openHelpDialog = React.useCallback(function () {
|
|
39
|
+
return setHelpDialogOpen(true);
|
|
40
|
+
}, []);
|
|
41
|
+
var closeHelpDialog = React.useCallback(function () {
|
|
42
|
+
return setHelpDialogOpen(false);
|
|
43
|
+
}, []);
|
|
44
|
+
useEffect(function () {
|
|
45
|
+
setupMCUBridge([ArduinoUnoDriver, ArduinoMegaDriver]);
|
|
46
|
+
}, []);
|
|
47
|
+
// Clear the variant tag once the picker resolves so it can't bleed into
|
|
48
|
+
// an unrelated future connect flow.
|
|
49
|
+
useEffect(function () {
|
|
50
|
+
if (permissionPhase === 'granted') {
|
|
51
|
+
setConnectionIntent(null);
|
|
52
|
+
}
|
|
53
|
+
}, [permissionPhase]);
|
|
54
|
+
//
|
|
55
|
+
//
|
|
56
|
+
//
|
|
57
|
+
return jsxs(ArduinoBridgeContext.Provider, {
|
|
58
|
+
value: {
|
|
59
|
+
setPendingIntent: setRunIntent,
|
|
60
|
+
isPending: pendingIntent !== null,
|
|
61
|
+
isFlashing: isFlashing,
|
|
62
|
+
connectionIntent: connectionIntent,
|
|
63
|
+
setConnectionIntent: setConnectionIntent,
|
|
64
|
+
isHelpDialogOpen: isHelpDialogOpen,
|
|
65
|
+
openHelpDialog: openHelpDialog,
|
|
66
|
+
closeHelpDialog: closeHelpDialog
|
|
67
|
+
},
|
|
68
|
+
children: [children, jsx(ArduinoProviderSessionWriter, {
|
|
69
|
+
xtermRef: xtermRef
|
|
70
|
+
}), jsx(ArduinoProviderFlashWriter, {
|
|
71
|
+
xtermRef: xtermRef
|
|
72
|
+
}), jsx(ArduinoProviderApiBinder, {
|
|
73
|
+
apiRef: apiRef,
|
|
74
|
+
xtermRef: xtermRef,
|
|
75
|
+
pendingIntentRef: pendingIntentRef,
|
|
76
|
+
clearRunIntent: clearRunIntent
|
|
77
|
+
}), jsx(ArduinoConnectionGuideDialog, {}), jsx(ArduinoHelpDialog, {}), jsx(ArduinoErrorDialog, {})]
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
//
|
|
81
|
+
//
|
|
82
|
+
//
|
|
83
|
+
var ArduinoBridgeProvider$1 = (function (_a) {
|
|
84
|
+
var enabled = _a.enabled,
|
|
85
|
+
children = _a.children,
|
|
86
|
+
rest = __rest(_a, ["enabled", "children"]);
|
|
87
|
+
if (!enabled) {
|
|
88
|
+
return jsx(Fragment, {
|
|
89
|
+
children: children
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
return jsx(ArduinoBridgeProvider, Object.assign({}, rest, {
|
|
93
|
+
children: children
|
|
94
|
+
}));
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
export { ArduinoBridgeProvider$1 as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { XtermApis } from "../../../shared/xterm/Xterm";
|
|
3
|
+
import type { ArduinoBridgeIntent } from './_context';
|
|
4
|
+
import type { ArduinoBridgeApi } from './ArduinoProvider';
|
|
5
|
+
export interface ArduinoProviderApiBinderProps {
|
|
6
|
+
apiRef: React.MutableRefObject<ArduinoBridgeApi | null>;
|
|
7
|
+
xtermRef: React.RefObject<XtermApis | null>;
|
|
8
|
+
pendingIntentRef: React.MutableRefObject<ArduinoBridgeIntent | null>;
|
|
9
|
+
clearRunIntent: () => void;
|
|
10
|
+
}
|
|
11
|
+
declare const ArduinoProviderApiBinder: React.FC<ArduinoProviderApiBinderProps>;
|
|
12
|
+
export default ArduinoProviderApiBinder;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useRawEliceIntl } from '@elice/intl';
|
|
3
|
+
import { useSession, useFlash } from '@elice/mcu-bridge';
|
|
4
|
+
import { useArduinoTerminalWriter } from './useArduinoTerminalWriter.js';
|
|
5
|
+
|
|
6
|
+
//
|
|
7
|
+
//
|
|
8
|
+
//
|
|
9
|
+
function decodeHexDataUrl(dataUrl) {
|
|
10
|
+
var base64 = dataUrl.includes(',') ? dataUrl.split(',')[1] : dataUrl;
|
|
11
|
+
var binary = atob(base64);
|
|
12
|
+
var bytes = new Uint8Array(binary.length);
|
|
13
|
+
for (var i = 0; i < binary.length; i += 1) {
|
|
14
|
+
bytes[i] = binary.charCodeAt(i);
|
|
15
|
+
}
|
|
16
|
+
return bytes;
|
|
17
|
+
}
|
|
18
|
+
//
|
|
19
|
+
//
|
|
20
|
+
//
|
|
21
|
+
var ArduinoProviderApiBinder = function ArduinoProviderApiBinder(_ref) {
|
|
22
|
+
var apiRef = _ref.apiRef,
|
|
23
|
+
xtermRef = _ref.xtermRef,
|
|
24
|
+
pendingIntentRef = _ref.pendingIntentRef,
|
|
25
|
+
clearRunIntent = _ref.clearRunIntent;
|
|
26
|
+
var intl = useRawEliceIntl();
|
|
27
|
+
var session = useSession();
|
|
28
|
+
var _useFlash = useFlash(),
|
|
29
|
+
flash = _useFlash.flash;
|
|
30
|
+
var _useArduinoTerminalWr = useArduinoTerminalWriter({
|
|
31
|
+
xtermRef: xtermRef
|
|
32
|
+
}),
|
|
33
|
+
writeSystemMessage = _useArduinoTerminalWr.writeSystemMessage;
|
|
34
|
+
//
|
|
35
|
+
// Expose imperative API to the parent runner via ref.
|
|
36
|
+
//
|
|
37
|
+
React.useEffect(function () {
|
|
38
|
+
apiRef.current = {
|
|
39
|
+
handleIncomingHex: function handleIncomingHex(dataUrl) {
|
|
40
|
+
var intent = pendingIntentRef.current;
|
|
41
|
+
clearRunIntent();
|
|
42
|
+
if (intent !== 'upload') {
|
|
43
|
+
if (intent === 'compile') {
|
|
44
|
+
writeSystemMessage(intl.formatMessage({
|
|
45
|
+
id: 'exerciseRunner.arduino.terminal.compile.done'
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (!session) {
|
|
51
|
+
writeSystemMessage(intl.formatMessage({
|
|
52
|
+
id: 'exerciseRunner.arduino.terminal.board.notConnected'
|
|
53
|
+
}));
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
writeSystemMessage(intl.formatMessage({
|
|
57
|
+
id: 'exerciseRunner.arduino.terminal.compile.done'
|
|
58
|
+
}));
|
|
59
|
+
var bytes;
|
|
60
|
+
try {
|
|
61
|
+
bytes = decodeHexDataUrl(dataUrl);
|
|
62
|
+
} catch (_a) {
|
|
63
|
+
writeSystemMessage(intl.formatMessage({
|
|
64
|
+
id: 'exerciseRunner.arduino.terminal.firmware.readFail'
|
|
65
|
+
}));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
void flash(bytes)["catch"](function () {
|
|
69
|
+
// Error already surfaced through the progress writer.
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
sendText: function sendText(text) {
|
|
73
|
+
if (!session) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
void session.writeText(text);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return function () {
|
|
80
|
+
apiRef.current = null;
|
|
81
|
+
};
|
|
82
|
+
}, [apiRef, session, flash, pendingIntentRef, clearRunIntent, writeSystemMessage, intl]);
|
|
83
|
+
return null;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
export { ArduinoProviderApiBinder as default };
|
package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { XtermApis } from "../../../shared/xterm/Xterm";
|
|
3
|
+
export interface ArduinoProviderFlashWriterProps {
|
|
4
|
+
xtermRef: React.RefObject<XtermApis | null>;
|
|
5
|
+
}
|
|
6
|
+
declare const ArduinoProviderFlashWriter: React.FC<ArduinoProviderFlashWriterProps>;
|
|
7
|
+
export default ArduinoProviderFlashWriter;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useRawEliceIntl } from '@elice/intl';
|
|
3
|
+
import { useFlash } from '@elice/mcu-bridge';
|
|
4
|
+
import { useArduinoTerminalWriter } from './useArduinoTerminalWriter.js';
|
|
5
|
+
|
|
6
|
+
//
|
|
7
|
+
//
|
|
8
|
+
//
|
|
9
|
+
var UPLOAD_PROGRESS_THROTTLE_MS = 200;
|
|
10
|
+
var ArduinoProviderFlashWriter = function ArduinoProviderFlashWriter(_ref) {
|
|
11
|
+
var xtermRef = _ref.xtermRef;
|
|
12
|
+
var intl = useRawEliceIntl();
|
|
13
|
+
var _useFlash = useFlash(),
|
|
14
|
+
progress = _useFlash.progress;
|
|
15
|
+
var _useArduinoTerminalWr = useArduinoTerminalWriter({
|
|
16
|
+
xtermRef: xtermRef
|
|
17
|
+
}),
|
|
18
|
+
writeSystemMessage = _useArduinoTerminalWr.writeSystemMessage;
|
|
19
|
+
var lastStageRef = React.useRef(null);
|
|
20
|
+
var lastUploadWriteAtRef = React.useRef(0);
|
|
21
|
+
//
|
|
22
|
+
// Translate flash progress into terminal messages.
|
|
23
|
+
//
|
|
24
|
+
React.useEffect(function () {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
if (!progress) {
|
|
27
|
+
lastStageRef.current = null;
|
|
28
|
+
lastUploadWriteAtRef.current = 0;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
var stage = progress.stage,
|
|
32
|
+
percent = progress.percent;
|
|
33
|
+
var isStageChange = lastStageRef.current !== stage;
|
|
34
|
+
lastStageRef.current = stage;
|
|
35
|
+
switch (stage) {
|
|
36
|
+
case 'start':
|
|
37
|
+
writeSystemMessage(intl.formatMessage({
|
|
38
|
+
id: 'exerciseRunner.arduino.terminal.upload.start'
|
|
39
|
+
}));
|
|
40
|
+
return;
|
|
41
|
+
case 'upload':
|
|
42
|
+
{
|
|
43
|
+
var now = Date.now();
|
|
44
|
+
if (!isStageChange && now - lastUploadWriteAtRef.current < UPLOAD_PROGRESS_THROTTLE_MS) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
lastUploadWriteAtRef.current = now;
|
|
48
|
+
writeSystemMessage(intl.formatMessage({
|
|
49
|
+
id: 'exerciseRunner.arduino.terminal.upload.progress'
|
|
50
|
+
}, {
|
|
51
|
+
percent: percent
|
|
52
|
+
}));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
case 'verify':
|
|
56
|
+
if (isStageChange) {
|
|
57
|
+
writeSystemMessage(intl.formatMessage({
|
|
58
|
+
id: 'exerciseRunner.arduino.terminal.upload.verifying'
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
case 'done':
|
|
63
|
+
if (isStageChange) {
|
|
64
|
+
writeSystemMessage(intl.formatMessage({
|
|
65
|
+
id: 'exerciseRunner.arduino.terminal.upload.done'
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
return;
|
|
69
|
+
case 'error':
|
|
70
|
+
if (isStageChange) {
|
|
71
|
+
writeSystemMessage(intl.formatMessage({
|
|
72
|
+
id: 'exerciseRunner.arduino.terminal.upload.error'
|
|
73
|
+
}, {
|
|
74
|
+
error: (_b = (_a = progress.error) === null || _a === void 0 ? void 0 : _a.message) !== null && _b !== void 0 ? _b : intl.formatMessage({
|
|
75
|
+
id: 'exerciseRunner.arduino.terminal.upload.errorUnknown'
|
|
76
|
+
})
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
default:
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
}, [progress, writeSystemMessage, intl]);
|
|
84
|
+
return null;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
export { ArduinoProviderFlashWriter as default };
|
package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { XtermApis } from "../../../shared/xterm/Xterm";
|
|
3
|
+
export interface ArduinoProviderSessionWriterProps {
|
|
4
|
+
xtermRef: React.RefObject<XtermApis | null>;
|
|
5
|
+
}
|
|
6
|
+
declare const ArduinoProviderSessionWriter: React.FC<ArduinoProviderSessionWriterProps>;
|
|
7
|
+
export default ArduinoProviderSessionWriter;
|
package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useRawEliceIntl } from '@elice/intl';
|
|
3
|
+
import { useSession } from '@elice/mcu-bridge';
|
|
4
|
+
import { useArduinoTerminalWriter } from './useArduinoTerminalWriter.js';
|
|
5
|
+
|
|
6
|
+
//
|
|
7
|
+
//
|
|
8
|
+
//
|
|
9
|
+
var ArduinoProviderSessionWriter = function ArduinoProviderSessionWriter(_ref) {
|
|
10
|
+
var xtermRef = _ref.xtermRef;
|
|
11
|
+
var intl = useRawEliceIntl();
|
|
12
|
+
var session = useSession();
|
|
13
|
+
var previousSessionRef = React.useRef(null);
|
|
14
|
+
var _useArduinoTerminalWr = useArduinoTerminalWriter({
|
|
15
|
+
xtermRef: xtermRef
|
|
16
|
+
}),
|
|
17
|
+
write = _useArduinoTerminalWr.write,
|
|
18
|
+
writeSystemMessage = _useArduinoTerminalWr.writeSystemMessage;
|
|
19
|
+
//
|
|
20
|
+
// Pipe board serial output into xterm.
|
|
21
|
+
//
|
|
22
|
+
React.useEffect(function () {
|
|
23
|
+
if (!session) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
var decoder = new TextDecoder();
|
|
27
|
+
return session.events.on('serial', function (chunk) {
|
|
28
|
+
write(decoder.decode(chunk));
|
|
29
|
+
});
|
|
30
|
+
}, [session, write]);
|
|
31
|
+
//
|
|
32
|
+
// Print board attach/detach lifecycle messages.
|
|
33
|
+
//
|
|
34
|
+
React.useEffect(function () {
|
|
35
|
+
var previous = previousSessionRef.current;
|
|
36
|
+
previousSessionRef.current = session;
|
|
37
|
+
if (!previous && session) {
|
|
38
|
+
writeSystemMessage(intl.formatMessage({
|
|
39
|
+
id: 'exerciseRunner.arduino.terminal.session.connected'
|
|
40
|
+
}, {
|
|
41
|
+
device: session.driver.board.name
|
|
42
|
+
}));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (previous && !session) {
|
|
46
|
+
writeSystemMessage(intl.formatMessage({
|
|
47
|
+
id: 'exerciseRunner.arduino.terminal.session.disconnected'
|
|
48
|
+
}));
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (previous && session && previous !== session) {
|
|
52
|
+
writeSystemMessage(intl.formatMessage({
|
|
53
|
+
id: 'exerciseRunner.arduino.terminal.session.reconnected'
|
|
54
|
+
}, {
|
|
55
|
+
device: session.driver.board.name
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
}, [session, writeSystemMessage, intl]);
|
|
59
|
+
return null;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export { ArduinoProviderSessionWriter as default };
|
|
@@ -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,15 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
//
|
|
6
|
+
var ArduinoBridgeContext = createContext(null);
|
|
7
|
+
var useArduinoBridge = function useArduinoBridge() {
|
|
8
|
+
var ctx = useContext(ArduinoBridgeContext);
|
|
9
|
+
if (!ctx) {
|
|
10
|
+
throw new Error('useArduinoBridge must be used inside <ArduinoBridgeProvider>.');
|
|
11
|
+
}
|
|
12
|
+
return ctx;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { ArduinoBridgeContext, 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,4 @@
|
|
|
1
|
+
export { default as ArduinoBridgeProvider } from './ArduinoProvider.js';
|
|
2
|
+
export { useArduinoBridge } from './_context.js';
|
|
3
|
+
export { default as ArduinoControllerButtonGroup } from './ArduinoControllerButtonGroup.js';
|
|
4
|
+
export { default as ArduinoControllerStatusMessage } from './ArduinoControllerStatusMessage.js';
|
|
@@ -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,32 @@
|
|
|
1
|
+
import { slicedToArray as _slicedToArray } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
|
|
4
|
+
//
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
var useArduinoRunIntent = function useArduinoRunIntent() {
|
|
8
|
+
var _return = React.useRef({});
|
|
9
|
+
var _React$useState = React.useState(null),
|
|
10
|
+
_React$useState2 = _slicedToArray(_React$useState, 2),
|
|
11
|
+
pendingIntent = _React$useState2[0],
|
|
12
|
+
setPendingIntent = _React$useState2[1];
|
|
13
|
+
var pendingIntentRef = React.useRef(null);
|
|
14
|
+
var setRunIntent = React.useCallback(function (intent) {
|
|
15
|
+
pendingIntentRef.current = intent;
|
|
16
|
+
setPendingIntent(intent);
|
|
17
|
+
}, []);
|
|
18
|
+
var clearRunIntent = React.useCallback(function () {
|
|
19
|
+
pendingIntentRef.current = null;
|
|
20
|
+
setPendingIntent(null);
|
|
21
|
+
}, []);
|
|
22
|
+
//
|
|
23
|
+
//
|
|
24
|
+
//
|
|
25
|
+
_return.current.pendingIntent = pendingIntent;
|
|
26
|
+
_return.current.pendingIntentRef = pendingIntentRef;
|
|
27
|
+
_return.current.setRunIntent = setRunIntent;
|
|
28
|
+
_return.current.clearRunIntent = clearRunIntent;
|
|
29
|
+
return _return.current;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { useArduinoRunIntent };
|
|
@@ -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,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
//
|
|
5
|
+
//
|
|
6
|
+
var ANSI_WRAP = function ANSI_WRAP(text) {
|
|
7
|
+
return "\x1B[1m\x1B[38;5;221m".concat(text, "\x1B[0m");
|
|
8
|
+
};
|
|
9
|
+
var useArduinoTerminalWriter = function useArduinoTerminalWriter(_ref) {
|
|
10
|
+
var xtermRef = _ref.xtermRef;
|
|
11
|
+
var _return = React.useRef({});
|
|
12
|
+
var write = React.useCallback(function (text) {
|
|
13
|
+
var _a;
|
|
14
|
+
(_a = xtermRef.current) === null || _a === void 0 ? void 0 : _a.write(text);
|
|
15
|
+
}, [xtermRef]);
|
|
16
|
+
var writeSystemMessage = React.useCallback(function (text) {
|
|
17
|
+
write(ANSI_WRAP(text));
|
|
18
|
+
}, [write]);
|
|
19
|
+
//
|
|
20
|
+
//
|
|
21
|
+
//
|
|
22
|
+
_return.current.write = write;
|
|
23
|
+
_return.current.writeSystemMessage = writeSystemMessage;
|
|
24
|
+
return _return.current;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export { useArduinoTerminalWriter };
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var messageEn = {"exerciseRunner.
|
|
1
|
+
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"};
|
|
2
2
|
|
|
3
3
|
export { messageEn as default };
|