@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.
Files changed (187) hide show
  1. package/cjs/components/material-exercise/context/index.js +0 -7
  2. package/cjs/components/material-exercise/context/recoil.d.ts +0 -44
  3. package/cjs/components/material-exercise/context/recoil.js +0 -108
  4. package/cjs/components/material-exercise/context/recoilTypes.d.ts +0 -7
  5. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
  6. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +1 -18
  7. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +2 -4
  8. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  9. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  10. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +27 -57
  11. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
  12. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
  13. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -219
  14. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
  15. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
  16. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +44 -0
  17. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
  18. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +58 -0
  19. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
  20. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.js +44 -0
  21. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
  22. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +44 -0
  23. package/cjs/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
  24. package/cjs/components/material-exercise/exercise-runner/action/index.js +15 -0
  25. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
  26. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +52 -0
  27. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
  28. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +74 -0
  29. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
  30. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.js +65 -0
  31. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
  32. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +68 -0
  33. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
  34. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +163 -0
  35. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
  36. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +188 -0
  37. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
  38. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +128 -0
  39. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
  40. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +78 -0
  41. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
  42. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +98 -0
  43. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
  44. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +24 -0
  45. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
  46. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +201 -0
  47. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
  48. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +125 -0
  49. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
  50. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +179 -0
  51. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
  52. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +29 -0
  53. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
  54. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +94 -0
  55. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
  56. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +105 -0
  57. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
  58. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +94 -0
  59. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
  60. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +95 -0
  61. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
  62. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +70 -0
  63. package/cjs/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
  64. package/cjs/components/material-exercise/exercise-runner/arduino/_context.js +18 -0
  65. package/cjs/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
  66. package/cjs/components/material-exercise/exercise-runner/arduino/index.js +13 -0
  67. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
  68. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +38 -0
  69. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
  70. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +33 -0
  71. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  72. package/cjs/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
  73. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  74. package/cjs/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
  75. package/cjs/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
  76. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +1 -1
  77. package/cjs/hooks/index.d.ts +0 -1
  78. package/cjs/hooks/index.js +0 -2
  79. package/es/components/material-exercise/context/index.js +1 -1
  80. package/es/components/material-exercise/context/recoil.d.ts +0 -44
  81. package/es/components/material-exercise/context/recoil.js +1 -102
  82. package/es/components/material-exercise/context/recoilTypes.d.ts +0 -7
  83. package/es/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
  84. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +2 -18
  85. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +3 -3
  86. package/es/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  87. package/es/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  88. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +28 -58
  89. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
  90. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
  91. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -214
  92. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
  93. package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
  94. package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +40 -0
  95. package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
  96. package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +54 -0
  97. package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
  98. package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.js +40 -0
  99. package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
  100. package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +40 -0
  101. package/es/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
  102. package/es/components/material-exercise/exercise-runner/action/index.js +5 -0
  103. package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
  104. package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +46 -0
  105. package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
  106. package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +68 -0
  107. package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
  108. package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.js +59 -0
  109. package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
  110. package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +62 -0
  111. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
  112. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +148 -0
  113. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
  114. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +177 -0
  115. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
  116. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +118 -0
  117. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
  118. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +70 -0
  119. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
  120. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +90 -0
  121. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
  122. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +20 -0
  123. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
  124. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +197 -0
  125. package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
  126. package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +112 -0
  127. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
  128. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +161 -0
  129. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
  130. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +25 -0
  131. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
  132. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +84 -0
  133. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
  134. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +97 -0
  135. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
  136. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +86 -0
  137. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
  138. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +87 -0
  139. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
  140. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +62 -0
  141. package/es/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
  142. package/es/components/material-exercise/exercise-runner/arduino/_context.js +15 -0
  143. package/es/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
  144. package/es/components/material-exercise/exercise-runner/arduino/index.js +4 -0
  145. package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
  146. package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +32 -0
  147. package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
  148. package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +27 -0
  149. package/es/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  150. package/es/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
  151. package/es/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  152. package/es/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
  153. package/es/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
  154. package/es/components/shared/monaco-editor/utils/prettier/config.js +1 -1
  155. package/es/hooks/index.d.ts +0 -1
  156. package/es/hooks/index.js +0 -1
  157. package/package.json +15 -11
  158. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
  159. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -33
  160. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
  161. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -178
  162. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
  163. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -169
  164. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
  165. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -120
  166. package/cjs/constants/arduino.d.ts +0 -35
  167. package/cjs/constants/arduino.js +0 -73
  168. package/cjs/hooks/useArduino.d.ts +0 -14
  169. package/cjs/hooks/useArduino.js +0 -589
  170. package/cjs/typings/arduino.d.ts +0 -77
  171. package/cjs/utils/arduino.d.ts +0 -43
  172. package/cjs/utils/arduino.js +0 -82
  173. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
  174. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -29
  175. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
  176. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -170
  177. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
  178. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -161
  179. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
  180. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -112
  181. package/es/constants/arduino.d.ts +0 -35
  182. package/es/constants/arduino.js +0 -62
  183. package/es/hooks/useArduino.d.ts +0 -14
  184. package/es/hooks/useArduino.js +0 -583
  185. package/es/typings/arduino.d.ts +0 -77
  186. package/es/utils/arduino.d.ts +0 -43
  187. package/es/utils/arduino.js +0 -75
@@ -0,0 +1,59 @@
1
+ import { toConsumableArray as _toConsumableArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import React from 'react';
3
+ import { enums } from '@elice/types';
4
+ import { EliceWebSocket } from '@elice/websocket';
5
+ import { useRecoilValue } from 'recoil';
6
+ import { ExerciseRunnerContext } from '../ExerciseRunnerContext.js';
7
+ import { exerciseActiveFilenameState, exerciseWebSocketTotalStatusQuery, exerciseRunnerRunTypeState, exerciseRunnerSubmittingState, exerciseRunnerRunningState } from '../../context/recoil.js';
8
+ import { useExerciseFileEditable } from '../../../../hooks/useExerciseFile.js';
9
+
10
+ //
11
+ //
12
+ //
13
+ /**
14
+ * Provides state and handler for the exercise runner's "run" action.
15
+ */
16
+ var useControllerActionRun = function useControllerActionRun() {
17
+ var _return = React.useRef({});
18
+ var _React$useContext = React.useContext(ExerciseRunnerContext),
19
+ onSubmit = _React$useContext.onSubmit;
20
+ var activeFilename = useRecoilValue(exerciseActiveFilenameState);
21
+ var isFileEditable = useExerciseFileEditable(activeFilename);
22
+ var runnerWebsocketStatus = useRecoilValue(exerciseWebSocketTotalStatusQuery([].concat(_toConsumableArray(isFileEditable ? ['usercodeEdit'] : []), ['runnerRoom', 'stdio'])));
23
+ var exerciseRunType = useRecoilValue(exerciseRunnerRunTypeState);
24
+ var isSubmitting = useRecoilValue(exerciseRunnerSubmittingState);
25
+ var isRunning = useRecoilValue(exerciseRunnerRunningState);
26
+ var isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
27
+ var isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
28
+ var isHidden = isRunning;
29
+ var isDisabled = isHidden || isNotReady || isConnecting || isSubmitting;
30
+ var isLoading = isConnecting || isSubmitting && exerciseRunType === enums.ExerciseRunType.Run;
31
+ /**
32
+ *
33
+ */
34
+ var run = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
35
+ return _regenerator().w(function (_context) {
36
+ while (1) switch (_context.n) {
37
+ case 0:
38
+ if (isDisabled) {
39
+ _context.n = 1;
40
+ break;
41
+ }
42
+ _context.n = 1;
43
+ return onSubmit(enums.ExerciseRunType.Run);
44
+ case 1:
45
+ return _context.a(2);
46
+ }
47
+ }, _callee);
48
+ })), [isDisabled, onSubmit]);
49
+ //
50
+ //
51
+ //
52
+ _return.current.isHidden = isHidden;
53
+ _return.current.isDisabled = isDisabled;
54
+ _return.current.isLoading = isLoading;
55
+ _return.current.run = run;
56
+ return _return.current;
57
+ };
58
+
59
+ export { useControllerActionRun };
@@ -0,0 +1,15 @@
1
+ export interface UseControllerActionSyncRequestReturn {
2
+ /** Whether the sync-request button should be hidden. */
3
+ isHidden: boolean;
4
+ /** Whether the sync-request button should be disabled. */
5
+ isDisabled: boolean;
6
+ /** Whether the sync-request button should show a loading indicator. */
7
+ isLoading: boolean;
8
+ /** Request the runner to sync the latest user code. */
9
+ syncRequest: () => void;
10
+ }
11
+ /**
12
+ * Provides state and handler for the exercise runner's "sync request" action,
13
+ * and forwards file-editor save actions to the same handler.
14
+ */
15
+ export declare const useControllerActionSyncRequest: () => UseControllerActionSyncRequestReturn;
@@ -0,0 +1,62 @@
1
+ import { toConsumableArray as _toConsumableArray } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import React from 'react';
3
+ import { EliceWebSocket } from '@elice/websocket';
4
+ import { useRecoilValue } from 'recoil';
5
+ import { ExerciseRunnerContext } from '../ExerciseRunnerContext.js';
6
+ import { ExerciseContext } from '../../context/context.js';
7
+ import { exerciseActiveFilenameState, exerciseWebSocketTotalStatusQuery, exerciseState, exerciseRunnerRunningState } from '../../context/recoil.js';
8
+ import { useExerciseFileEditable } from '../../../../hooks/useExerciseFile.js';
9
+ import { exerciseFileEditorSaveAction$ } from '../../context/subjects.js';
10
+
11
+ //
12
+ //
13
+ //
14
+ /**
15
+ * Provides state and handler for the exercise runner's "sync request" action,
16
+ * and forwards file-editor save actions to the same handler.
17
+ */
18
+ var useControllerActionSyncRequest = function useControllerActionSyncRequest() {
19
+ var _a;
20
+ var _return = React.useRef({});
21
+ var _React$useContext = React.useContext(ExerciseContext),
22
+ materialExerciseId = _React$useContext.materialExerciseId;
23
+ var _React$useContext2 = React.useContext(ExerciseRunnerContext),
24
+ onSyncRequest = _React$useContext2.onSyncRequest;
25
+ var activeFilename = useRecoilValue(exerciseActiveFilenameState);
26
+ var isFileEditable = useExerciseFileEditable(activeFilename);
27
+ var runnerWebsocketStatus = useRecoilValue(exerciseWebSocketTotalStatusQuery([].concat(_toConsumableArray(isFileEditable ? ['usercodeEdit'] : []), ['runnerRoom', 'stdio'])));
28
+ var exercise = useRecoilValue(exerciseState(materialExerciseId));
29
+ var isRunning = useRecoilValue(exerciseRunnerRunningState);
30
+ var isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
31
+ var isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
32
+ var isHidden = !isRunning || !((_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.httpPort);
33
+ var isDisabled = isHidden || isNotReady || isConnecting;
34
+ var isLoading = isConnecting;
35
+ /**
36
+ *
37
+ */
38
+ var syncRequest = React.useCallback(function () {
39
+ if (!isDisabled) {
40
+ onSyncRequest();
41
+ }
42
+ }, [isDisabled, onSyncRequest]);
43
+ //
44
+ //
45
+ //
46
+ React.useEffect(function () {
47
+ var saveActionSub = exerciseFileEditorSaveAction$.subscribe(syncRequest);
48
+ return function () {
49
+ saveActionSub.unsubscribe();
50
+ };
51
+ }, [syncRequest]);
52
+ //
53
+ //
54
+ //
55
+ _return.current.isHidden = isHidden;
56
+ _return.current.isDisabled = isDisabled;
57
+ _return.current.isLoading = isLoading;
58
+ _return.current.syncRequest = syncRequest;
59
+ return _return.current;
60
+ };
61
+
62
+ export { useControllerActionSyncRequest };
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ declare const ArduinoConnectionGuideDialog: React.VFC;
3
+ export default ArduinoConnectionGuideDialog;
@@ -0,0 +1,148 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useRawEliceIntl } from '@elice/intl';
3
+ import { usePermissionPhase } from '@elice/mcu-bridge';
4
+ import ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';
5
+ import Alert from '@mui/material/Alert';
6
+ import Dialog from '@mui/material/Dialog';
7
+ import DialogActions from '@mui/material/DialogActions';
8
+ import DialogContent from '@mui/material/DialogContent';
9
+ import DialogTitle from '@mui/material/DialogTitle';
10
+ import Stack from '@mui/material/Stack';
11
+ import Typography from '@mui/material/Typography';
12
+ import { useArduinoBridge } from './_context.js';
13
+ import ArduinoConnectionGuideDialogNativeMock from './ArduinoConnectionGuideDialogNativeMock.js';
14
+ import ArduinoConnectionGuideDialogSteps from './ArduinoConnectionGuideDialogSteps.js';
15
+
16
+ //
17
+ //
18
+ //
19
+ var ACCENT = '#7353ea';
20
+ var PREVIEW_BG = '#f6f8fb';
21
+ var PREVIEW_BORDER = '#e9ebf0';
22
+ //
23
+ //
24
+ //
25
+ var ArduinoConnectionGuideDialog = function ArduinoConnectionGuideDialog() {
26
+ var intl = useRawEliceIntl();
27
+ var phase = usePermissionPhase();
28
+ var _useArduinoBridge = useArduinoBridge(),
29
+ connectionIntent = _useArduinoBridge.connectionIntent;
30
+ var open = phase === 'requesting';
31
+ var isUpload = connectionIntent === 'upload';
32
+ /**
33
+ *
34
+ */
35
+ var renderTitle = function renderTitle() {
36
+ return intl.formatMessage({
37
+ id: isUpload ? 'exerciseRunner.arduino.connectGuide.title.upload' : 'exerciseRunner.arduino.connectGuide.title.connect'
38
+ });
39
+ };
40
+ /**
41
+ *
42
+ */
43
+ var renderUploadNotice = function renderUploadNotice() {
44
+ if (!isUpload) {
45
+ return null;
46
+ }
47
+ return jsx(Alert, {
48
+ severity: "info",
49
+ variant: "outlined",
50
+ icon: false,
51
+ children: intl.formatMessage({
52
+ id: 'exerciseRunner.arduino.connectGuide.upload.note'
53
+ })
54
+ });
55
+ };
56
+ /**
57
+ *
58
+ */
59
+ var renderPreview = function renderPreview() {
60
+ return jsxs(Stack, {
61
+ alignItems: "center",
62
+ spacing: 1.25,
63
+ sx: {
64
+ bgcolor: PREVIEW_BG,
65
+ border: "1px solid ".concat(PREVIEW_BORDER),
66
+ borderRadius: '10px',
67
+ p: '14px'
68
+ },
69
+ children: [jsxs(Stack, {
70
+ direction: "row",
71
+ spacing: 0.75,
72
+ alignItems: "center",
73
+ sx: {
74
+ color: ACCENT
75
+ },
76
+ children: [jsx(ArrowUpwardIcon, {
77
+ sx: {
78
+ fontSize: 11
79
+ }
80
+ }), jsx(Typography, {
81
+ sx: {
82
+ fontSize: 12,
83
+ fontWeight: 700,
84
+ letterSpacing: '-.01em',
85
+ color: ACCENT
86
+ },
87
+ children: intl.formatMessage({
88
+ id: 'exerciseRunner.arduino.connectGuide.preview.label'
89
+ })
90
+ })]
91
+ }), jsx(ArduinoConnectionGuideDialogNativeMock, {})]
92
+ });
93
+ };
94
+ /**
95
+ *
96
+ */
97
+ var renderActions = function renderActions() {
98
+ return jsx(DialogActions, {
99
+ sx: {
100
+ justifyContent: 'flex-start',
101
+ px: 3,
102
+ py: 2
103
+ },
104
+ children: jsx(Typography, {
105
+ variant: "caption",
106
+ color: "text.secondary",
107
+ children: intl.formatMessage({
108
+ id: 'exerciseRunner.arduino.connectGuide.footer'
109
+ })
110
+ })
111
+ });
112
+ };
113
+ //
114
+ //
115
+ //
116
+ // No onClose: open state is fully derived from the picker phase.
117
+ return jsxs(Dialog, {
118
+ disableEnforceFocus: true,
119
+ hideBackdrop: true,
120
+ fullWidth: true,
121
+ open: open,
122
+ maxWidth: "sm",
123
+ sx: {
124
+ pointerEvents: 'none'
125
+ },
126
+ PaperProps: {
127
+ sx: {
128
+ pointerEvents: 'auto'
129
+ }
130
+ },
131
+ children: [jsx(DialogTitle, {
132
+ children: renderTitle()
133
+ }), jsx(DialogContent, {
134
+ children: jsxs(Stack, {
135
+ spacing: 2,
136
+ children: [renderUploadNotice(), jsx(Typography, {
137
+ variant: "body2",
138
+ color: "text.secondary",
139
+ children: intl.formatMessage({
140
+ id: 'exerciseRunner.arduino.connectGuide.body'
141
+ })
142
+ }), renderPreview(), jsx(ArduinoConnectionGuideDialogSteps, {})]
143
+ })
144
+ }), renderActions()]
145
+ });
146
+ };
147
+
148
+ export { ArduinoConnectionGuideDialog as default };
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ declare const ArduinoConnectionGuideDialogNativeMock: React.VFC;
3
+ export default ArduinoConnectionGuideDialogNativeMock;
@@ -0,0 +1,177 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useRawEliceIntl } from '@elice/intl';
3
+ import LockIcon from '@mui/icons-material/Lock';
4
+ import Box from '@mui/material/Box';
5
+ import Stack from '@mui/material/Stack';
6
+ import Typography from '@mui/material/Typography';
7
+
8
+ //
9
+ //
10
+ //
11
+ // Mirrors the Chromium serial picker palette so the kid sees what the native
12
+ // browser dialog will look like before it pops. Theme tokens are intentionally
13
+ // not used here — the goal is to imitate the OS chrome, not the app brand.
14
+ var MOCK_BG = '#2a2c30';
15
+ var MOCK_FOOT_BG = '#202124';
16
+ var MOCK_TEXT = '#e8eaed';
17
+ var MOCK_ROW_TEXT = '#cdd0d4';
18
+ var MOCK_BORDER = 'rgba(255,255,255,.08)';
19
+ var MOCK_SEL_BG = '#3367d6';
20
+ var MOCK_BTN_BORDER = 'rgba(255,255,255,.18)';
21
+ var MOCK_BTN_PRIMARY_BG = '#8ab4f8';
22
+ var MOCK_BTN_PRIMARY_TEXT = '#202124';
23
+ var MOCK_HELP_BORDER = 'rgba(255,255,255,.25)';
24
+ var MOCK_HELP_TEXT = '#9aa0a6';
25
+ var SYSTEM_FONT = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif';
26
+ //
27
+ //
28
+ //
29
+ var ArduinoConnectionGuideDialogNativeMock = function ArduinoConnectionGuideDialogNativeMock() {
30
+ var intl = useRawEliceIntl();
31
+ /**
32
+ *
33
+ */
34
+ var renderHeader = function renderHeader() {
35
+ return jsxs(Stack, {
36
+ direction: "row",
37
+ spacing: 1,
38
+ alignItems: "center",
39
+ sx: {
40
+ pt: '11px',
41
+ pb: '9px',
42
+ px: '14px',
43
+ borderBottom: "1px solid ".concat(MOCK_BORDER),
44
+ color: MOCK_TEXT
45
+ },
46
+ children: [jsx(LockIcon, {
47
+ sx: {
48
+ fontSize: 11,
49
+ color: '#5f6368'
50
+ }
51
+ }), jsx(Typography, {
52
+ noWrap: true,
53
+ sx: {
54
+ fontSize: 12.5,
55
+ fontFamily: SYSTEM_FONT,
56
+ color: MOCK_TEXT
57
+ },
58
+ children: intl.formatMessage({
59
+ id: 'exerciseRunner.arduino.connectGuide.preview.host'
60
+ }, {
61
+ host: window.location.host
62
+ })
63
+ })]
64
+ });
65
+ };
66
+ /**
67
+ *
68
+ */
69
+ var renderRows = function renderRows() {
70
+ var rowSx = {
71
+ px: '14px',
72
+ py: '7px',
73
+ fontSize: 12.5,
74
+ color: MOCK_ROW_TEXT,
75
+ fontFamily: SYSTEM_FONT
76
+ };
77
+ return jsxs(Stack, {
78
+ sx: {
79
+ py: '6px'
80
+ },
81
+ children: [jsx(Box, {
82
+ sx: rowSx,
83
+ children: "cu.Bluetooth-Incoming-Port"
84
+ }), jsx(Box, {
85
+ sx: rowSx,
86
+ children: "cu.debug-console"
87
+ }), jsx(Box, {
88
+ sx: Object.assign(Object.assign({}, rowSx), {
89
+ bgcolor: MOCK_SEL_BG,
90
+ color: '#fff',
91
+ fontWeight: 500
92
+ }),
93
+ children: "cu.usbmodem2112401"
94
+ })]
95
+ });
96
+ };
97
+ /**
98
+ *
99
+ */
100
+ var renderFooter = function renderFooter() {
101
+ var btnBaseSx = {
102
+ display: 'inline-flex',
103
+ alignItems: 'center',
104
+ height: 28,
105
+ px: '14px',
106
+ borderRadius: '4px',
107
+ fontSize: 12,
108
+ fontWeight: 500,
109
+ fontFamily: SYSTEM_FONT
110
+ };
111
+ return jsxs(Stack, {
112
+ direction: "row",
113
+ spacing: 1,
114
+ alignItems: "center",
115
+ sx: {
116
+ py: '8px',
117
+ px: '12px',
118
+ bgcolor: MOCK_FOOT_BG,
119
+ borderTop: "1px solid ".concat(MOCK_BORDER)
120
+ },
121
+ children: [jsx(Box, {
122
+ sx: {
123
+ width: 22,
124
+ height: 22,
125
+ borderRadius: '50%',
126
+ border: "1px solid ".concat(MOCK_HELP_BORDER),
127
+ display: 'flex',
128
+ alignItems: 'center',
129
+ justifyContent: 'center',
130
+ fontSize: 11,
131
+ color: MOCK_HELP_TEXT
132
+ },
133
+ children: "?"
134
+ }), jsx(Box, {
135
+ sx: {
136
+ flex: 1
137
+ }
138
+ }), jsx(Box, {
139
+ sx: Object.assign(Object.assign({}, btnBaseSx), {
140
+ border: "1px solid ".concat(MOCK_BTN_BORDER),
141
+ color: MOCK_ROW_TEXT,
142
+ bgcolor: 'transparent'
143
+ }),
144
+ children: intl.formatMessage({
145
+ id: 'exerciseRunner.arduino.connectGuide.preview.cancel'
146
+ })
147
+ }), jsx(Box, {
148
+ sx: Object.assign(Object.assign({}, btnBaseSx), {
149
+ border: "1px solid ".concat(MOCK_BTN_PRIMARY_BG),
150
+ bgcolor: MOCK_BTN_PRIMARY_BG,
151
+ color: MOCK_BTN_PRIMARY_TEXT
152
+ }),
153
+ children: intl.formatMessage({
154
+ id: 'exerciseRunner.arduino.connectGuide.preview.connect'
155
+ })
156
+ })]
157
+ });
158
+ };
159
+ //
160
+ //
161
+ //
162
+ return jsxs(Box, {
163
+ sx: {
164
+ bgcolor: MOCK_BG,
165
+ color: MOCK_TEXT,
166
+ borderRadius: '8px',
167
+ boxShadow: '0 4px 14px rgba(0,0,0,.25)',
168
+ width: 340,
169
+ maxWidth: '100%',
170
+ border: "1px solid ".concat(MOCK_BORDER),
171
+ overflow: 'hidden'
172
+ },
173
+ children: [renderHeader(), renderRows(), renderFooter()]
174
+ });
175
+ };
176
+
177
+ export { ArduinoConnectionGuideDialogNativeMock as default };
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ declare const ArduinoConnectionGuideDialogSteps: React.VFC;
3
+ export default ArduinoConnectionGuideDialogSteps;
@@ -0,0 +1,118 @@
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 ACCENT = '#7353ea';
11
+ var ACCENT_BG = 'rgba(115,83,234,.12)';
12
+ var STEP_CODE_BG = '#f3f5f8';
13
+ var STEP_CODE_BORDER = '#e9ebf0';
14
+ var STEP_KEYS = [1, 2, 3];
15
+ //
16
+ //
17
+ //
18
+ var ArduinoConnectionGuideDialogSteps = function ArduinoConnectionGuideDialogSteps() {
19
+ var intl = useRawEliceIntl();
20
+ /**
21
+ *
22
+ */
23
+ var renderInlineCode = function renderInlineCode(text) {
24
+ return jsx(Box, {
25
+ component: "code",
26
+ sx: {
27
+ fontFamily: 'monospace',
28
+ fontSize: 12,
29
+ fontWeight: 600,
30
+ px: 0.75,
31
+ py: '1px',
32
+ mx: 0.25,
33
+ borderRadius: 0.5,
34
+ bgcolor: STEP_CODE_BG,
35
+ border: "1px solid ".concat(STEP_CODE_BORDER),
36
+ color: ACCENT
37
+ },
38
+ children: text
39
+ });
40
+ };
41
+ /**
42
+ *
43
+ */
44
+ var renderStrong = function renderStrong(text) {
45
+ return jsx(Box, {
46
+ component: "strong",
47
+ sx: {
48
+ color: '#191f28',
49
+ fontWeight: 700
50
+ },
51
+ children: text
52
+ });
53
+ };
54
+ /**
55
+ *
56
+ */
57
+ var renderStepBadge = function renderStepBadge(step) {
58
+ return jsx(Box, {
59
+ "aria-hidden": "true",
60
+ sx: {
61
+ flexShrink: 0,
62
+ width: 22,
63
+ height: 22,
64
+ borderRadius: '50%',
65
+ bgcolor: ACCENT_BG,
66
+ color: ACCENT,
67
+ display: 'inline-flex',
68
+ alignItems: 'center',
69
+ justifyContent: 'center',
70
+ fontSize: 11.5,
71
+ fontWeight: 800,
72
+ mt: '1px'
73
+ },
74
+ children: step
75
+ });
76
+ };
77
+ /**
78
+ *
79
+ */
80
+ var renderStep = function renderStep(step) {
81
+ return jsxs(Stack, {
82
+ direction: "row",
83
+ spacing: 1.25,
84
+ alignItems: "flex-start",
85
+ children: [renderStepBadge(step), jsx(Typography, {
86
+ sx: {
87
+ fontSize: 13.5,
88
+ lineHeight: 1.55,
89
+ color: '#4b5562',
90
+ fontWeight: 500
91
+ },
92
+ children: intl.formatMessage({
93
+ id: "exerciseRunner.arduino.connectGuide.steps.".concat(step)
94
+ }, {
95
+ usbmodem: renderInlineCode('usbmodem'),
96
+ usbserial: renderInlineCode('usbserial'),
97
+ connect: renderStrong(intl.formatMessage({
98
+ id: 'exerciseRunner.arduino.connectGuide.preview.connect'
99
+ })),
100
+ cancel: renderStrong(intl.formatMessage({
101
+ id: 'exerciseRunner.arduino.connectGuide.preview.cancel'
102
+ }))
103
+ })
104
+ })]
105
+ }, step);
106
+ };
107
+ //
108
+ //
109
+ //
110
+ return jsx(Stack, {
111
+ spacing: 1.25,
112
+ children: STEP_KEYS.map(function (step) {
113
+ return renderStep(step);
114
+ })
115
+ });
116
+ };
117
+
118
+ export { ArduinoConnectionGuideDialogSteps as default };
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ArduinoControllerActionCompile: React.FC;
3
+ export default ArduinoControllerActionCompile;
@@ -0,0 +1,70 @@
1
+ import { asyncToGenerator as _asyncToGenerator, regenerator as _regenerator } from '../../../../_virtual/_rollupPluginBabelHelpers.js';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import React from 'react';
4
+ import { useRawEliceIntl } from '@elice/intl';
5
+ import { LoadingButton } from '@mui/lab';
6
+ import { useArduinoBridge } from './_context.js';
7
+ import { useControllerActionRun } from '../action/useControllerActionRun.js';
8
+ import { useExericseShortcut } from '../../../../hooks/useExericseShortcut.js';
9
+
10
+ //
11
+ //
12
+ //
13
+ var ArduinoControllerActionCompile = function ArduinoControllerActionCompile() {
14
+ var intl = useRawEliceIntl();
15
+ var _useControllerActionR = useControllerActionRun(),
16
+ isHidden = _useControllerActionR.isHidden,
17
+ isDisabled = _useControllerActionR.isDisabled,
18
+ isLoading = _useControllerActionR.isLoading,
19
+ run = _useControllerActionR.run;
20
+ var _useArduinoBridge = useArduinoBridge(),
21
+ setPendingIntent = _useArduinoBridge.setPendingIntent,
22
+ isPending = _useArduinoBridge.isPending,
23
+ isFlashing = _useArduinoBridge.isFlashing;
24
+ var isCompileDisabled = isDisabled || isPending || isFlashing;
25
+ var isCompileLoading = isLoading || isPending;
26
+ /**
27
+ * Submit the Arduino sketch for compilation without flashing the board.
28
+ */
29
+ var compile = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
30
+ return _regenerator().w(function (_context) {
31
+ while (1) switch (_context.n) {
32
+ case 0:
33
+ if (!isCompileDisabled) {
34
+ _context.n = 1;
35
+ break;
36
+ }
37
+ return _context.a(2);
38
+ case 1:
39
+ setPendingIntent('compile');
40
+ _context.n = 2;
41
+ return run();
42
+ case 2:
43
+ return _context.a(2);
44
+ }
45
+ }, _callee);
46
+ })), [isCompileDisabled, setPendingIntent, run]);
47
+ //
48
+ // register the shortcut
49
+ //
50
+ useExericseShortcut('RUNNER_SUBMIT_RUN', compile);
51
+ //
52
+ //
53
+ //
54
+ if (isHidden) {
55
+ return null;
56
+ }
57
+ return jsx(LoadingButton, {
58
+ size: "small",
59
+ variant: "contained",
60
+ color: "primary",
61
+ loading: isCompileLoading,
62
+ disabled: isCompileDisabled,
63
+ onClick: compile,
64
+ children: intl.formatMessage({
65
+ id: 'exerciseRunner.controller.arduino.button.compile'
66
+ })
67
+ });
68
+ };
69
+
70
+ export { ArduinoControllerActionCompile as default };
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ArduinoControllerActionUpload: React.FC;
3
+ export default ArduinoControllerActionUpload;