@elice/material-exercise 1.260305.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 (253) hide show
  1. package/cjs/components/material-exercise/MaterialExercise.js +113 -17
  2. package/cjs/components/material-exercise/context/ExerciseProvider.d.ts +3 -1
  3. package/cjs/components/material-exercise/context/index.js +0 -7
  4. package/cjs/components/material-exercise/context/recoil.d.ts +0 -44
  5. package/cjs/components/material-exercise/context/recoil.js +0 -108
  6. package/cjs/components/material-exercise/context/recoilTypes.d.ts +0 -7
  7. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +52 -7
  8. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
  9. package/cjs/components/material-exercise/exercise-menu/ExerciseMenu.js +1 -18
  10. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +2 -4
  11. package/cjs/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  12. package/cjs/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  13. package/cjs/components/material-exercise/exercise-runner/ExerciseRunner.js +27 -57
  14. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
  15. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
  16. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -219
  17. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
  18. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
  19. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +44 -0
  20. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
  21. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +58 -0
  22. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
  23. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionRun.js +44 -0
  24. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
  25. package/cjs/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +44 -0
  26. package/cjs/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
  27. package/cjs/components/material-exercise/exercise-runner/action/index.js +15 -0
  28. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
  29. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +52 -0
  30. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
  31. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +74 -0
  32. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
  33. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionRun.js +65 -0
  34. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
  35. package/cjs/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +68 -0
  36. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
  37. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +163 -0
  38. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
  39. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +188 -0
  40. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
  41. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +128 -0
  42. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
  43. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +78 -0
  44. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
  45. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +98 -0
  46. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
  47. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +24 -0
  48. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
  49. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +201 -0
  50. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
  51. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +125 -0
  52. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
  53. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +179 -0
  54. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
  55. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +29 -0
  56. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
  57. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +94 -0
  58. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
  59. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +105 -0
  60. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
  61. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +94 -0
  62. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
  63. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +95 -0
  64. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
  65. package/cjs/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +70 -0
  66. package/cjs/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
  67. package/cjs/components/material-exercise/exercise-runner/arduino/_context.js +18 -0
  68. package/cjs/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
  69. package/cjs/components/material-exercise/exercise-runner/arduino/index.js +13 -0
  70. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
  71. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +38 -0
  72. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
  73. package/cjs/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +33 -0
  74. package/cjs/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  75. package/cjs/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
  76. package/cjs/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  77. package/cjs/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
  78. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.js +18 -2
  79. package/cjs/components/shared/exercise-version-list/ExerciseVersionListItem.d.ts +1 -0
  80. package/cjs/components/shared/file-tabs/FileTab.js +70 -8
  81. package/cjs/components/shared/file-tabs/FileTabs.js +24 -3
  82. package/cjs/components/shared/file-tree/FileTreeListItemContent.js +103 -14
  83. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.js +24 -3
  84. package/cjs/components/shared/file-tree/FileTreeListItems.js +28 -3
  85. package/cjs/components/shared/file-tree/file-tree-toolbar/FileTreeToolbar.js +7 -2
  86. package/cjs/components/shared/material-modal/MaterialModal.d.ts +1 -0
  87. package/cjs/components/shared/material-modal/MaterialModal.js +34 -6
  88. package/cjs/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
  89. package/cjs/components/shared/monaco-editor/utils/prettier/config.js +1 -1
  90. package/cjs/hooks/index.d.ts +0 -1
  91. package/cjs/hooks/index.js +0 -2
  92. package/es/components/material-exercise/MaterialExercise.js +97 -2
  93. package/es/components/material-exercise/context/ExerciseProvider.d.ts +3 -1
  94. package/es/components/material-exercise/context/index.js +1 -1
  95. package/es/components/material-exercise/context/recoil.d.ts +0 -44
  96. package/es/components/material-exercise/context/recoil.js +1 -102
  97. package/es/components/material-exercise/context/recoilTypes.d.ts +0 -7
  98. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.js +46 -2
  99. package/es/components/material-exercise/exercise-menu/ExerciseMenu.d.ts +1 -1
  100. package/es/components/material-exercise/exercise-menu/ExerciseMenu.js +2 -18
  101. package/es/components/material-exercise/exercise-menu/ExerciseMenuStdioFileBrowser.styled.js +3 -3
  102. package/es/components/material-exercise/exercise-menu/locales/en.json.js +1 -1
  103. package/es/components/material-exercise/exercise-menu/locales/ko.json.js +1 -1
  104. package/es/components/material-exercise/exercise-runner/ExerciseRunner.js +28 -58
  105. package/es/components/material-exercise/exercise-runner/ExerciseRunnerController.js +34 -7
  106. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.d.ts +1 -1
  107. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerButtonGroup.js +13 -214
  108. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerCodeHelpRequestButton.d.ts +2 -2
  109. package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.d.ts +3 -0
  110. package/es/components/material-exercise/exercise-runner/action/ControllerActionCancel.js +40 -0
  111. package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.d.ts +3 -0
  112. package/es/components/material-exercise/exercise-runner/action/ControllerActionGrade.js +54 -0
  113. package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.d.ts +3 -0
  114. package/es/components/material-exercise/exercise-runner/action/ControllerActionRun.js +40 -0
  115. package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.d.ts +3 -0
  116. package/es/components/material-exercise/exercise-runner/action/ControllerActionSyncRequest.js +40 -0
  117. package/es/components/material-exercise/exercise-runner/action/index.d.ts +5 -0
  118. package/es/components/material-exercise/exercise-runner/action/index.js +5 -0
  119. package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.d.ts +14 -0
  120. package/es/components/material-exercise/exercise-runner/action/useControllerActionCancel.js +46 -0
  121. package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.d.ts +16 -0
  122. package/es/components/material-exercise/exercise-runner/action/useControllerActionGrade.js +68 -0
  123. package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.d.ts +14 -0
  124. package/es/components/material-exercise/exercise-runner/action/useControllerActionRun.js +59 -0
  125. package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.d.ts +15 -0
  126. package/es/components/material-exercise/exercise-runner/action/useControllerActionSyncRequest.js +62 -0
  127. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.d.ts +3 -0
  128. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialog.js +148 -0
  129. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.d.ts +3 -0
  130. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogNativeMock.js +177 -0
  131. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.d.ts +3 -0
  132. package/es/components/material-exercise/exercise-runner/arduino/ArduinoConnectionGuideDialogSteps.js +118 -0
  133. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.d.ts +3 -0
  134. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionCompile.js +70 -0
  135. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.d.ts +3 -0
  136. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerActionUpload.js +90 -0
  137. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.d.ts +3 -0
  138. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerButtonGroup.js +20 -0
  139. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.d.ts +3 -0
  140. package/es/components/material-exercise/exercise-runner/arduino/ArduinoControllerStatusMessage.js +197 -0
  141. package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.d.ts +3 -0
  142. package/es/components/material-exercise/exercise-runner/arduino/ArduinoErrorDialog.js +112 -0
  143. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.d.ts +3 -0
  144. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialog.js +161 -0
  145. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.d.ts +3 -0
  146. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogButton.js +25 -0
  147. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.d.ts +3 -0
  148. package/es/components/material-exercise/exercise-runner/arduino/ArduinoHelpDialogChecklist.js +84 -0
  149. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.d.ts +16 -0
  150. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProvider.js +97 -0
  151. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.d.ts +12 -0
  152. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderApiBinder.js +86 -0
  153. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.d.ts +7 -0
  154. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderFlashWriter.js +87 -0
  155. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.d.ts +7 -0
  156. package/es/components/material-exercise/exercise-runner/arduino/ArduinoProviderSessionWriter.js +62 -0
  157. package/es/components/material-exercise/exercise-runner/arduino/_context.d.ts +35 -0
  158. package/es/components/material-exercise/exercise-runner/arduino/_context.js +15 -0
  159. package/es/components/material-exercise/exercise-runner/arduino/index.d.ts +6 -0
  160. package/es/components/material-exercise/exercise-runner/arduino/index.js +4 -0
  161. package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.d.ts +9 -0
  162. package/es/components/material-exercise/exercise-runner/arduino/useArduinoRunIntent.js +32 -0
  163. package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.d.ts +10 -0
  164. package/es/components/material-exercise/exercise-runner/arduino/useArduinoTerminalWriter.js +27 -0
  165. package/es/components/material-exercise/exercise-runner/locales/en.json.js +1 -1
  166. package/es/components/material-exercise/exercise-runner/locales/ja.json.js +1 -1
  167. package/es/components/material-exercise/exercise-runner/locales/ko.json.js +1 -1
  168. package/es/components/material-exercise/exercise-runner/locales/th.json.js +1 -1
  169. package/es/components/shared/exercise-version-list/ExerciseVersionList.js +13 -1
  170. package/es/components/shared/exercise-version-list/ExerciseVersionListItem.d.ts +1 -0
  171. package/es/components/shared/file-tabs/FileTab.js +62 -1
  172. package/es/components/shared/file-tabs/FileTabs.js +21 -1
  173. package/es/components/shared/file-tree/FileTreeListItemContent.js +90 -2
  174. package/es/components/shared/file-tree/FileTreeListItemContentInput.js +21 -1
  175. package/es/components/shared/file-tree/FileTreeListItems.js +22 -1
  176. package/es/components/shared/file-tree/file-tree-toolbar/FileTreeToolbar.js +5 -1
  177. package/es/components/shared/material-modal/MaterialModal.d.ts +1 -0
  178. package/es/components/shared/material-modal/MaterialModal.js +26 -2
  179. package/es/components/shared/monaco-editor/utils/prettier/config.d.ts +1 -1
  180. package/es/components/shared/monaco-editor/utils/prettier/config.js +1 -1
  181. package/es/hooks/index.d.ts +0 -1
  182. package/es/hooks/index.js +0 -1
  183. package/package.json +34 -21
  184. package/cjs/components/material-exercise/MaterialExercise.styled.d.ts +0 -66
  185. package/cjs/components/material-exercise/MaterialExercise.styled.js +0 -119
  186. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.d.ts +0 -24
  187. package/cjs/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +0 -62
  188. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
  189. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -33
  190. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
  191. package/cjs/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -178
  192. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
  193. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -169
  194. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
  195. package/cjs/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -120
  196. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.d.ts +0 -5
  197. package/cjs/components/shared/exercise-version-list/ExerciseVersionList.styled.js +0 -22
  198. package/cjs/components/shared/file-tabs/FileTab.styled.d.ts +0 -33
  199. package/cjs/components/shared/file-tabs/FileTab.styled.js +0 -77
  200. package/cjs/components/shared/file-tabs/FileTabs.styled.d.ts +0 -12
  201. package/cjs/components/shared/file-tabs/FileTabs.styled.js +0 -31
  202. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.d.ts +0 -62
  203. package/cjs/components/shared/file-tree/FileTreeListItemContent.styled.js +0 -108
  204. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.d.ts +0 -7
  205. package/cjs/components/shared/file-tree/FileTreeListItemContentInput.styled.js +0 -31
  206. package/cjs/components/shared/file-tree/FileTreeListItems.styled.d.ts +0 -8
  207. package/cjs/components/shared/file-tree/FileTreeListItems.styled.js +0 -32
  208. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.d.ts +0 -4
  209. package/cjs/components/shared/file-tree/FileTreeToolbar.styled.js +0 -14
  210. package/cjs/components/shared/material-modal/MaterialModal.styled.d.ts +0 -20
  211. package/cjs/components/shared/material-modal/MaterialModal.styled.js +0 -39
  212. package/cjs/constants/arduino.d.ts +0 -35
  213. package/cjs/constants/arduino.js +0 -73
  214. package/cjs/hooks/useArduino.d.ts +0 -14
  215. package/cjs/hooks/useArduino.js +0 -589
  216. package/cjs/typings/arduino.d.ts +0 -77
  217. package/cjs/utils/arduino.d.ts +0 -43
  218. package/cjs/utils/arduino.js +0 -82
  219. package/es/components/material-exercise/MaterialExercise.styled.d.ts +0 -66
  220. package/es/components/material-exercise/MaterialExercise.styled.js +0 -100
  221. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.d.ts +0 -24
  222. package/es/components/material-exercise/exercise-code-history/ExerciseCodeHistory.styled.js +0 -49
  223. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.d.ts +0 -3
  224. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoAgentModalButton.js +0 -29
  225. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.d.ts +0 -3
  226. package/es/components/material-exercise/exercise-menu/ExerciseMenuArduinoSettings.js +0 -170
  227. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.d.ts +0 -3
  228. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoAgentModal.js +0 -161
  229. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.d.ts +0 -3
  230. package/es/components/material-exercise/exercise-runner/ExerciseRunnerControllerArduinoStatusMessage.js +0 -112
  231. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.d.ts +0 -5
  232. package/es/components/shared/exercise-version-list/ExerciseVersionList.styled.js +0 -16
  233. package/es/components/shared/file-tabs/FileTab.styled.d.ts +0 -33
  234. package/es/components/shared/file-tabs/FileTab.styled.js +0 -65
  235. package/es/components/shared/file-tabs/FileTabs.styled.d.ts +0 -12
  236. package/es/components/shared/file-tabs/FileTabs.styled.js +0 -24
  237. package/es/components/shared/file-tree/FileTreeListItemContent.styled.d.ts +0 -62
  238. package/es/components/shared/file-tree/FileTreeListItemContent.styled.js +0 -94
  239. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.d.ts +0 -7
  240. package/es/components/shared/file-tree/FileTreeListItemContentInput.styled.js +0 -24
  241. package/es/components/shared/file-tree/FileTreeListItems.styled.d.ts +0 -8
  242. package/es/components/shared/file-tree/FileTreeListItems.styled.js +0 -25
  243. package/es/components/shared/file-tree/FileTreeToolbar.styled.d.ts +0 -4
  244. package/es/components/shared/file-tree/FileTreeToolbar.styled.js +0 -8
  245. package/es/components/shared/material-modal/MaterialModal.styled.d.ts +0 -20
  246. package/es/components/shared/material-modal/MaterialModal.styled.js +0 -29
  247. package/es/constants/arduino.d.ts +0 -35
  248. package/es/constants/arduino.js +0 -62
  249. package/es/hooks/useArduino.d.ts +0 -14
  250. package/es/hooks/useArduino.js +0 -583
  251. package/es/typings/arduino.d.ts +0 -77
  252. package/es/utils/arduino.d.ts +0 -43
  253. package/es/utils/arduino.js +0 -75
@@ -1,10 +1,12 @@
1
+ import _styled from '@emotion/styled/base';
1
2
  import { jsx, jsxs } from 'react/jsx-runtime';
2
3
  import React from 'react';
3
- import { Button, Text } from '@elice/blocks';
4
+ import { Flex, Text, Button } from '@elice/blocks';
5
+ import { base } from '@elice/design-tokens';
4
6
  import { IntlComponentBuilder } from '@elice/intl';
7
+ import { css } from '@emotion/react';
5
8
  import dayjs from 'dayjs';
6
9
  import { useRecoilValue } from 'recoil';
7
- import { StyledModalContent, StyledVersionsWrapper, StyledVersionRangeInputWrapper, StyledVersionRangeInput, StyledEditorWrapper, StyledFileNameBox } from './ExerciseCodeHistory.styled.js';
8
10
  import messageEn from './locales/en.json.js';
9
11
  import messageKo from './locales/ko.json.js';
10
12
  import { useUsercodeHistory } from '../../../hooks/useUsercodeHistory.js';
@@ -15,6 +17,48 @@ import ExerciseVersionListItem from '../../shared/exercise-version-list/Exercise
15
17
  import { ExerciseContext } from '../context/context.js';
16
18
  import { exerciseActiveFilenameState, exerciseEditorPreferenceState } from '../context/recoil.js';
17
19
 
20
+ function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
21
+ var cssInputRangeTrack = "production" === "production" ? {
22
+ name: "jsy83f",
23
+ styles: "width:100%;height:0.375rem;cursor:pointer;transition:all 0.2s ease"
24
+ } : {
25
+ name: "jsy83f",
26
+ styles: "width:100%;height:0.375rem;cursor:pointer;transition:all 0.2s ease",
27
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
28
+ };
29
+ var cssInputRangeThumb = /*#__PURE__*/css("height:1rem;width:1rem;border-radius:50%;background:", base.color.primary6, ";cursor:pointer;");
30
+ var StyledModalContent = /*#__PURE__*/_styled(Flex, {
31
+ target: "e1y3ui135"
32
+ })("production" === "production" ? {
33
+ name: "1j1fdpn",
34
+ styles: "position:absolute;width:100%;height:100%;overflow:hidden"
35
+ } : {
36
+ name: "1j1fdpn",
37
+ styles: "position:absolute;width:100%;height:100%;overflow:hidden",
38
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
39
+ });
40
+ var StyledVersionRangeInput = /*#__PURE__*/_styled("input", {
41
+ target: "e1y3ui134"
42
+ })("--webkit-appearance:none;margin:0.5rem 0;width:100%;cursor:pointer;&:focus{outline:none;}&::-webkit-slider-runnable-track{background:", base.color.navy9, ";", cssInputRangeTrack, ";}&::-webkit-slider-thumb{-webkit-appearance:none;margin-top:calc((0.375rem - 1rem) / 2);", cssInputRangeThumb, ";}&:focus::-webkit-slider-runnable-track{background:rgba(", base.color.navy9, ", 0.05);}&::-moz-range-track{background:", base.color.navy9, ";", cssInputRangeTrack, ";}&::-moz-range-thumb{", cssInputRangeThumb, ";}");
43
+ var StyledVersionsWrapper = /*#__PURE__*/_styled(Flex, {
44
+ target: "e1y3ui133"
45
+ })("flex-direction:column;flex:1 1.75 25rem;position:relative;height:100%;border-right:1px solid ", base.color.navy9, ";");
46
+ var StyledVersionRangeInputWrapper = /*#__PURE__*/_styled(Flex, {
47
+ target: "e1y3ui132"
48
+ })("height:3rem;padding:1rem;border-bottom:1px solid ", base.color.navy9, ";");
49
+ var StyledEditorWrapper = /*#__PURE__*/_styled(Flex, {
50
+ target: "e1y3ui131"
51
+ })("production" === "production" ? {
52
+ name: "xf8y5j",
53
+ styles: "flex-direction:column;flex:1 1 auto;width:100%;height:100%;overflow:scroll"
54
+ } : {
55
+ name: "xf8y5j",
56
+ styles: "flex-direction:column;flex:1 1 auto;width:100%;height:100%;overflow:scroll",
57
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
58
+ });
59
+ var StyledFileNameBox = /*#__PURE__*/_styled(Text, {
60
+ target: "e1y3ui130"
61
+ })("min-height:3rem;height:3rem;line-height:3rem;padding-left:1rem;border-bottom:1px solid ", base.color.navy9, ";");
18
62
  var ExerciseCodeHistory = function ExerciseCodeHistory(_ref) {
19
63
  var onHide = _ref.onHide,
20
64
  onLoadVersionButtonClick = _ref.onLoadVersionButtonClick,
@@ -1,4 +1,4 @@
1
- import React from 'react';
2
1
  import type { WithIntlComponentBuilderProps as EliceIntlProps } from '@elice/intl';
2
+ import type React from 'react';
3
3
  declare const _default: React.ForwardRefExoticComponent<Omit<import("@elice/intl").IntlComponentExtraProps & Omit<EliceIntlProps, keyof import("@elice/intl").IntlComponentExtraProps | "__intl">, "ref"> & React.RefAttributes<any>>;
4
4
  export default _default;
@@ -1,38 +1,22 @@
1
1
  import _styled from '@emotion/styled/base';
2
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
- import React from 'react';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
4
3
  import { base } from '@elice/design-tokens';
5
4
  import { IntlComponentBuilder, RawEliceIntlProvider } from '@elice/intl';
6
- import { enums } from '@elice/types';
7
- import { useRecoilValue } from 'recoil';
8
- import ExerciseMenuArduinoAgentModalButton from './ExerciseMenuArduinoAgentModalButton.js';
9
- import ExerciseMenuArduinoSettings from './ExerciseMenuArduinoSettings.js';
10
5
  import ExerciseMenuDropdown from './ExerciseMenuDropdown.js';
11
6
  import ExerciseMenuReset from './ExerciseMenuReset.js';
12
7
  import ExerciseMenuStdioFileBrowser from './ExerciseMenuStdioFileBrowser.js';
13
8
  import messageEn from './locales/en.json.js';
14
9
  import messageKo from './locales/ko.json.js';
15
- import { ExerciseContext } from '../context/context.js';
16
- import { exerciseState } from '../context/recoil.js';
17
10
 
18
11
  var StyledExerciseMenuWrapper = /*#__PURE__*/_styled("div", {
19
12
  target: "e16oipg60"
20
13
  })("display:flex;justify-content:center;align-items:center;padding:0 0.5rem 0 1rem;height:2.25rem;gap:0.5rem;background-color:", base.color.navy8, ";");
21
14
  var ExerciseMenu = function ExerciseMenu(_ref) {
22
15
  var __intl = _ref.__intl;
23
- var _React$useContext = React.useContext(ExerciseContext),
24
- materialExerciseId = _React$useContext.materialExerciseId;
25
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
26
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
27
- //
28
- //
29
- //
30
16
  return jsx(RawEliceIntlProvider, {
31
17
  value: __intl,
32
18
  children: jsxs(StyledExerciseMenuWrapper, {
33
- children: [isArduinoExercise ? jsxs(Fragment, {
34
- children: [jsx(ExerciseMenuArduinoAgentModalButton, {}), jsx(ExerciseMenuArduinoSettings, {})]
35
- }) : jsx(ExerciseMenuStdioFileBrowser, {}), jsx(ExerciseMenuReset, {}), jsx(ExerciseMenuDropdown, {})]
19
+ children: [jsx(ExerciseMenuStdioFileBrowser, {}), jsx(ExerciseMenuReset, {}), jsx(ExerciseMenuDropdown, {})]
36
20
  })
37
21
  });
38
22
  };
@@ -68,7 +68,7 @@ var StyledFilePopoverBodyListItemContentImage = /*#__PURE__*/_styled("img", {
68
68
  styles: "width:100%;max-height:128px;object-fit:contain;cursor:zoom-in",
69
69
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
70
70
  });
71
- var StyledPreferenceBodyItem = /*#__PURE__*/_styled("div", {
71
+ /*#__PURE__*/_styled("div", {
72
72
  target: "e8nx2or1"
73
73
  })("production" === "production" ? {
74
74
  name: "10vug81",
@@ -78,8 +78,8 @@ var StyledPreferenceBodyItem = /*#__PURE__*/_styled("div", {
78
78
  styles: "display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;min-height:2rem;color:white;&:last-child{margin-bottom:0;}",
79
79
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
80
80
  });
81
- var StyledSelect = /*#__PURE__*/_styled(Select, {
81
+ /*#__PURE__*/_styled(Select, {
82
82
  target: "e8nx2or0"
83
83
  })(">div{background:", base.color.navy8, "!important;border-color:", base.color.navy7, "!important;}select{padding:0!important;height:2rem!important;color:#fff!important;>option{background:", base.color.navy8, "!important;}}");
84
84
 
85
- export { StyledFilePopoverBody, StyledFilePopoverBodyList, StyledFilePopoverBodyListItem, StyledFilePopoverBodyListItemContentFile, StyledFilePopoverBodyListItemContentImage, StyledFilePopoverBodyListItemContentImageWrap, StyledFilePopoverBodyListItemDownloadButton, StyledFilePopoverContent, StyledFilePopoverHeader, StyledMenuButtonFileCount, StyledPreferenceBodyItem, StyledSelect };
85
+ export { StyledFilePopoverBody, StyledFilePopoverBodyList, StyledFilePopoverBodyListItem, StyledFilePopoverBodyListItemContentFile, StyledFilePopoverBodyListItemContentImage, StyledFilePopoverBodyListItemContentImageWrap, StyledFilePopoverBodyListItemDownloadButton, StyledFilePopoverContent, StyledFilePopoverHeader, StyledMenuButtonFileCount };
@@ -1,3 +1,3 @@
1
- var messageEn = {"exerciseMenu.dropdown.button.tooltip":"More","exerciseMenu.dropdown.item.codeHistory":"Code Revision History","exerciseMenu.dropdown.item.environment":"Environment","exerciseMenu.dropdown.item.preference":"Editor Preferences","exerciseMenu.dropdown.item.room":"Code Sharing","exerciseMenu.dropdown.item.submitHistory":"Execution/Submission History","exerciseMenu.arduino.agent.button":"Having problem with connecting to Arduino?","exerciseMenu.arduino.setting":"Arduino Setting","exerciseMenu.arduino.setting.device":"Device","exerciseMenu.arduino.setting.noDevice":"No device","exerciseMenu.arduino.setting.selectDevice":"Select device","exerciseMenu.arduino.transferSpeed":"Transfer speed","exerciseMenu.reset.button.tooltip.disabled":"The file cannot be reset","exerciseMenu.reset.button.tooltip.enabled":"Reset the file","exerciseMenu.reset.confirmDialog.body":"Are you sure you want to clear all the code you wrote at current file and reset it?","exerciseMenu.reset.confirmDialog.cancel":"Cancel","exerciseMenu.reset.confirmDialog.confirm":"Confirm","exerciseMenu.reset.confirmDialog.title":"Reset the file","exerciseMenu.stdioFileBrowser.button.tooltip":"File","exerciseMenu.stdioFileBrowser.popover.body.placeholder":"Files sent from your code\nappear here.","exerciseMenu.stdioFileBrowser.popover.header":"File"};
1
+ var messageEn = {"exerciseMenu.dropdown.button.tooltip":"More","exerciseMenu.dropdown.item.codeHistory":"Code Revision History","exerciseMenu.dropdown.item.environment":"Environment","exerciseMenu.dropdown.item.preference":"Editor Preferences","exerciseMenu.dropdown.item.room":"Code Sharing","exerciseMenu.dropdown.item.submitHistory":"Execution/Submission History","exerciseMenu.arduino.setting":"Arduino Setting","exerciseMenu.arduino.transferSpeed":"Transfer speed","exerciseMenu.reset.button.tooltip.disabled":"The file cannot be reset","exerciseMenu.reset.button.tooltip.enabled":"Reset the file","exerciseMenu.reset.confirmDialog.body":"Are you sure you want to clear all the code you wrote at current file and reset it?","exerciseMenu.reset.confirmDialog.cancel":"Cancel","exerciseMenu.reset.confirmDialog.confirm":"Confirm","exerciseMenu.reset.confirmDialog.title":"Reset the file","exerciseMenu.stdioFileBrowser.button.tooltip":"File","exerciseMenu.stdioFileBrowser.popover.body.placeholder":"Files sent from your code\nappear here.","exerciseMenu.stdioFileBrowser.popover.header":"File"};
2
2
 
3
3
  export { messageEn as default };
@@ -1,3 +1,3 @@
1
- var messageKo = {"exerciseMenu.dropdown.button.tooltip":"더 보기","exerciseMenu.dropdown.item.codeHistory":"코드 수정 이력","exerciseMenu.dropdown.item.environment":"실습 환경","exerciseMenu.dropdown.item.preference":"에디터 설정","exerciseMenu.dropdown.item.room":"코드 공유","exerciseMenu.dropdown.item.submitHistory":"실행/제출 이력","exerciseMenu.arduino.agent.button":"아두이노 연결 중 문제가 발생했나요?","exerciseMenu.arduino.setting":"아두이노 세팅","exerciseMenu.arduino.setting.device":"장치","exerciseMenu.arduino.setting.noDevice":"장치 없음","exerciseMenu.arduino.setting.selectDevice":"장치 선택","exerciseMenu.arduino.transferSpeed":"전송 속도","exerciseMenu.reset.button.tooltip.disabled":"해당 파일은 초기화를 할 수 없습니다","exerciseMenu.reset.button.tooltip.enabled":"코드 초기화","exerciseMenu.reset.confirmDialog.body":"작성한 코드를 모두 지우고 초기화하시겠습니까?","exerciseMenu.reset.confirmDialog.cancel":"취소","exerciseMenu.reset.confirmDialog.confirm":"확인","exerciseMenu.reset.confirmDialog.title":"코드 초기화","exerciseMenu.stdioFileBrowser.button.tooltip":"파일","exerciseMenu.stdioFileBrowser.popover.body.placeholder":"코드에서 전송한 파일이\n여기에 표시됩니다.","exerciseMenu.stdioFileBrowser.popover.header":"파일"};
1
+ var messageKo = {"exerciseMenu.dropdown.button.tooltip":"더 보기","exerciseMenu.dropdown.item.codeHistory":"코드 수정 이력","exerciseMenu.dropdown.item.environment":"실습 환경","exerciseMenu.dropdown.item.preference":"에디터 설정","exerciseMenu.dropdown.item.room":"코드 공유","exerciseMenu.dropdown.item.submitHistory":"실행/제출 이력","exerciseMenu.arduino.setting":"아두이노 세팅","exerciseMenu.arduino.transferSpeed":"전송 속도","exerciseMenu.reset.button.tooltip.disabled":"해당 파일은 초기화를 할 수 없습니다","exerciseMenu.reset.button.tooltip.enabled":"코드 초기화","exerciseMenu.reset.confirmDialog.body":"작성한 코드를 모두 지우고 초기화하시겠습니까?","exerciseMenu.reset.confirmDialog.cancel":"취소","exerciseMenu.reset.confirmDialog.confirm":"확인","exerciseMenu.reset.confirmDialog.title":"코드 초기화","exerciseMenu.stdioFileBrowser.button.tooltip":"파일","exerciseMenu.stdioFileBrowser.popover.body.placeholder":"코드에서 전송한 파일이\n여기에 표시됩니다.","exerciseMenu.stdioFileBrowser.popover.header":"파일"};
2
2
 
3
3
  export { messageKo as default };
@@ -1,8 +1,7 @@
1
1
  import { slicedToArray as _slicedToArray, asyncToGenerator as _asyncToGenerator, regenerator as _regenerator, toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import _styled from '@emotion/styled/base';
3
- import { jsx, jsxs } from 'react/jsx-runtime';
3
+ import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import React from 'react';
5
- import { useEvent } from 'react-use';
6
5
  import { postOrgMaterialExerciseExerciseRunningSubmit, postOrgMaterialExerciseExerciseRunningCancel } from '@elice/api-client';
7
6
  import { Flex, ResizableNext, Dialog } from '@elice/blocks';
8
7
  import { base } from '@elice/design-tokens';
@@ -16,10 +15,10 @@ import ExerciseRunnerController from './ExerciseRunnerController.js';
16
15
  import messageEn from './locales/en.json.js';
17
16
  import messageKo from './locales/ko.json.js';
18
17
  import { exerciseState, exerciseEditorPreferenceState, exerciseActiveFilenameState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseRunnerRunTypeState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerStdioFilesState, exercisePreviewTypeState, exercisePreviewDisplayModeState, exerciseMonacoEditorApisState, exerciseWebsocketQuery, exerciseContainerSizeState } from '../context/recoil.js';
19
- import { useArduino } from '../../../hooks/useArduino.js';
20
18
  import { useRunnerRoomWebSocket } from '../../../hooks/useRunnerRoomWebSocket.js';
21
19
  import { useStdioWebSocket } from '../../../hooks/useStdioWebSocket.js';
22
20
  import { exerciseRunnerTextSend$, exerciseFileEditorSyncRequestAction$ } from '../context/subjects.js';
21
+ import ArduinoBridgeProvider from './arduino/ArduinoProvider.js';
23
22
  import XtermLazy from '../../shared/xterm/XtermLazy.js';
24
23
  import { withTimeout } from '../../../utils/async.js';
25
24
  import { getProgrammingErrorResult } from '../../../utils/runner.js';
@@ -102,26 +101,8 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
102
101
  var arduinoTextBuffer = React.useRef('');
103
102
  var runnerRunTypeRef = React.useRef(runnerRunTypeState);
104
103
  var xterm = React.useRef(null);
105
- /**
106
- * Handle text received from arduino serial output.
107
- */
108
- var handleArduinoDigitalOutput = function handleArduinoDigitalOutput(text) {
109
- var _a;
110
- (_a = xterm.current) === null || _a === void 0 ? void 0 : _a.write(text);
111
- };
112
- // Arduino
113
- var arduino = useArduino({
114
- writeTerminal: handleArduinoDigitalOutput
115
- });
104
+ var arduinoBridgeApi = React.useRef(null);
116
105
  var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
117
- /**
118
- * Handle destroy arduino client.
119
- */
120
- var handleArduinoDistroy = React.useCallback(function () {
121
- if (isArduinoExercise) {
122
- arduino.destroy();
123
- }
124
- }, [isArduinoExercise, arduino]);
125
106
  /**
126
107
  * Handle text received from stdio websocket.
127
108
  */
@@ -144,10 +125,11 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
144
125
  * Handle file received from stdio websocket.
145
126
  */
146
127
  var handleWsStdioFileReceive = function handleWsStdioFileReceive(stdioFile) {
128
+ var _a;
147
129
  // arduino exercise
148
130
  if (isArduinoExercise) {
149
131
  if ('filename' in stdioFile && stdioFile.filename.startsWith('firmware') && stdioFile.filename.endsWith('hex')) {
150
- arduino.uploadHexFile(stdioFile);
132
+ (_a = arduinoBridgeApi.current) === null || _a === void 0 ? void 0 : _a.handleIncomingHex(stdioFile.data);
151
133
  }
152
134
  return;
153
135
  }
@@ -407,7 +389,7 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
407
389
  * Handle input requests for arduino.
408
390
  */
409
391
  var handleXtermArduinoInputRequest = function handleXtermArduinoInputRequest(_char) {
410
- var _a, _b, _c;
392
+ var _a, _b, _c, _d;
411
393
  switch (_char) {
412
394
  // backspace
413
395
  case "\x7F":
@@ -418,13 +400,13 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
418
400
  case '\r':
419
401
  if (arduinoTextBuffer.current.length) {
420
402
  (_b = xterm.current) === null || _b === void 0 ? void 0 : _b.write('\r\n');
421
- arduino.sendText(arduinoTextBuffer.current);
403
+ (_c = arduinoBridgeApi.current) === null || _c === void 0 ? void 0 : _c.sendText(arduinoTextBuffer.current);
422
404
  arduinoTextBuffer.current = '';
423
405
  }
424
406
  break;
425
407
  // any char
426
408
  default:
427
- (_c = xterm.current) === null || _c === void 0 ? void 0 : _c.write(_char);
409
+ (_d = xterm.current) === null || _d === void 0 ? void 0 : _d.write(_char);
428
410
  arduinoTextBuffer.current = "".concat(arduinoTextBuffer.current).concat(_char);
429
411
  break;
430
412
  }
@@ -440,24 +422,6 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
440
422
  }
441
423
  };
442
424
  //
443
- // Initialize Arduino devices.
444
- //
445
- React.useEffect(function () {
446
- if (!isArduinoExercise) {
447
- return;
448
- }
449
- void arduino.init();
450
- return function () {
451
- void arduino.destroy();
452
- };
453
- },
454
- // eslint-disable-next-line react-hooks/exhaustive-deps
455
- [exercise]);
456
- //
457
- // Destroy arduino client when unload window.
458
- //
459
- useEvent('beforeunload', handleArduinoDistroy, window);
460
- //
461
425
  // Update runner room websocket state.
462
426
  //
463
427
  React.useEffect(function () {
@@ -594,23 +558,29 @@ var ExerciseRunner = function ExerciseRunner(_ref) {
594
558
  //
595
559
  //
596
560
  //
561
+ var runnerBody = jsxs(ExerciseRunnerContext.Provider, {
562
+ value: {
563
+ onSubmit: handleRunnerSubmit,
564
+ onCancel: handleRunnerCancel,
565
+ onSyncRequest: handleRunnerSyncRequest
566
+ },
567
+ children: [jsx(ExerciseRunnerController, {}), jsxs(Flex, {
568
+ auto: true,
569
+ style: {
570
+ minHeight: 0
571
+ },
572
+ overflow: "hidden",
573
+ children: [renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog()]
574
+ })]
575
+ });
597
576
  return jsx(RawEliceIntlProvider, {
598
577
  value: __intl,
599
578
  children: jsx(StyledExerciseRunner, {
600
- children: jsxs(ExerciseRunnerContext.Provider, {
601
- value: {
602
- onSubmit: handleRunnerSubmit,
603
- onCancel: handleRunnerCancel,
604
- onSyncRequest: handleRunnerSyncRequest
605
- },
606
- children: [jsx(ExerciseRunnerController, {}), jsxs(Flex, {
607
- auto: true,
608
- style: {
609
- minHeight: 0
610
- },
611
- overflow: "hidden",
612
- children: [renderPreview(), renderXterm(), renderRunnerSubmitErrorDialog()]
613
- })]
579
+ children: jsx(ArduinoBridgeProvider, {
580
+ enabled: isArduinoExercise,
581
+ xtermRef: xterm,
582
+ apiRef: arduinoBridgeApi,
583
+ children: runnerBody
614
584
  })
615
585
  })
616
586
  });
@@ -5,12 +5,12 @@ import { Flex, Hspace } from '@elice/blocks';
5
5
  import { enums } from '@elice/types';
6
6
  import { useRecoilValue } from 'recoil';
7
7
  import { MATERIAL_DIVIDER_BORDER_VALUE } from '../../../constants/stylesheets.js';
8
- import ExerciseRunnerControllerArduinoAgentModal from './ExerciseRunnerControllerArduinoAgentModal.js';
9
- import ExerciseRunnerControllerArduinoStatusMessage from './ExerciseRunnerControllerArduinoStatusMessage.js';
10
8
  import ExerciseRunnerControllerButtonGroup from './ExerciseRunnerControllerButtonGroup.js';
11
9
  import ExerciseRunnerControllerRunningInfo from './ExerciseRunnerControllerRunningInfo.js';
12
10
  import ExerciseRunnerControllerStatusMessage from './ExerciseRunnerControllerStatusMessage.js';
13
11
  import ExerciseRunnerControllerTimer from './ExerciseRunnerControllerTimer.js';
12
+ import ArduinoControllerButtonGroup from './arduino/ArduinoControllerButtonGroup.js';
13
+ import ArduinoControllerStatusMessage from './arduino/ArduinoControllerStatusMessage.js';
14
14
  import { ExerciseContext } from '../context/context.js';
15
15
  import { exerciseState, exerciseActiveFilenameState } from '../context/recoil.js';
16
16
  import { useExerciseFileEditable } from '../../../hooks/useExerciseFile.js';
@@ -23,20 +23,47 @@ var ExerciseRunnerController = function ExerciseRunnerController() {
23
23
  var _React$useContext = React.useContext(ExerciseContext),
24
24
  materialExerciseId = _React$useContext.materialExerciseId;
25
25
  var exercise = useRecoilValue(exerciseState(materialExerciseId));
26
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
27
26
  var activeFilename = useRecoilValue(exerciseActiveFilenameState);
28
27
  var isFileEditable = useExerciseFileEditable(activeFilename);
28
+ /**
29
+ *
30
+ */
31
+ var renderControllerButtonGroup = function renderControllerButtonGroup() {
32
+ switch (exercise === null || exercise === void 0 ? void 0 : exercise.envType) {
33
+ case enums.ExerciseEnvType.Arduino:
34
+ return jsx(ArduinoControllerButtonGroup, {});
35
+ default:
36
+ return jsx(ExerciseRunnerControllerButtonGroup, {});
37
+ }
38
+ };
39
+ /**
40
+ *
41
+ */
42
+ var renderControllerStatusMessage = function renderControllerStatusMessage() {
43
+ if (!isFileEditable) {
44
+ return null;
45
+ }
46
+ switch (exercise === null || exercise === void 0 ? void 0 : exercise.envType) {
47
+ case enums.ExerciseEnvType.Arduino:
48
+ return jsx(ArduinoControllerStatusMessage, {});
49
+ default:
50
+ return jsx(ExerciseRunnerControllerStatusMessage, {});
51
+ }
52
+ };
53
+ //
54
+ //
55
+ //
29
56
  return jsxs(StyledController, {
30
57
  children: [jsxs(Flex, {
31
58
  align: "center",
32
- children: [jsx(ExerciseRunnerControllerButtonGroup, {}), jsx(Hspace, {
59
+ children: [renderControllerButtonGroup(), jsx(Hspace, {
33
60
  width: 1
34
61
  }), jsx(ExerciseRunnerControllerRunningInfo, {}), jsx(ExerciseRunnerControllerTimer, {})]
35
- }), isFileEditable ? jsxs(Flex, {
62
+ }), jsx(Flex, {
36
63
  column: true,
37
64
  align: "flex-end",
38
- children: [jsx(ExerciseRunnerControllerStatusMessage, {}), isArduinoExercise ? jsx(ExerciseRunnerControllerArduinoStatusMessage, {}) : null]
39
- }) : null, isArduinoExercise ? jsx(ExerciseRunnerControllerArduinoAgentModal, {}) : null]
65
+ children: renderControllerStatusMessage()
66
+ })]
40
67
  });
41
68
  };
42
69
 
@@ -1,3 +1,3 @@
1
- import React from 'react';
1
+ import type React from 'react';
2
2
  declare const ExerciseRunnerControllerButtonGroup: React.VFC;
3
3
  export default ExerciseRunnerControllerButtonGroup;
@@ -1,220 +1,19 @@
1
- import { toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
- import _styled from '@emotion/styled/base';
3
1
  import { jsxs, jsx } from 'react/jsx-runtime';
4
- import React from 'react';
5
- import { Button, Tooltip } from '@elice/blocks';
6
- import { useRawEliceIntl } from '@elice/intl';
7
- import { colors } from '@elice/mui-system';
8
- import { enums } from '@elice/types';
9
- import { EliceWebSocket } from '@elice/websocket';
10
- import { useRecoilValue } from 'recoil';
11
- import { ExerciseRunnerContext } from './ExerciseRunnerContext.js';
12
- import { exerciseActiveFilenameState, exerciseWebSocketTotalStatusQuery, exerciseState, exerciseRunnerRunTypeState, exerciseLectureState, exerciseRunnerSubmittingState, exerciseRunnerRunningState, exerciseArduinoUploadProgressState, exerciseArduinoOpenedPortNameState } from '../context/recoil.js';
13
- import { useExericseShortcut } from '../../../hooks/useExericseShortcut.js';
14
- import { ExerciseContext } from '../context/context.js';
15
- import { useExerciseFileEditable } from '../../../hooks/useExerciseFile.js';
16
- import { exerciseFileEditorSaveAction$ } from '../context/subjects.js';
2
+ import { Stack } from '@mui/material';
3
+ import ControllerActionRun from './action/ControllerActionRun.js';
4
+ import ControllerActionGrade from './action/ControllerActionGrade.js';
5
+ import ControllerActionCancel from './action/ControllerActionCancel.js';
6
+ import ControllerActionSyncRequest from './action/ControllerActionSyncRequest.js';
17
7
 
18
- function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
19
- var StyledControllerButton = /*#__PURE__*/_styled(Button, {
20
- target: "e45p2z2"
21
- })("position:relative;transition:none;&.eb-button--role-danger{border-color:", colors.red[700], ";background-color:", colors.red[700], ";}");
22
- var StyledControllerButtonWrap = /*#__PURE__*/_styled("div", {
23
- target: "e45p2z1"
24
- })("production" === "production" ? {
25
- name: "zjik7",
26
- styles: "display:flex"
27
- } : {
28
- name: "zjik7",
29
- styles: "display:flex",
30
- toString: _EMOTION_STRINGIFIED_CSS_ERROR__
31
- });
32
- var StyledControllerButtonGroup = /*#__PURE__*/_styled("div", {
33
- target: "e45p2z0"
34
- })("display:flex;flex-direction:row;align-items:center;>", StyledControllerButtonWrap, ",>", StyledControllerButton, "{margin-right:0.5rem;&:last-child{margin-right:0;}}");
8
+ //
9
+ //
10
+ //
35
11
  var ExerciseRunnerControllerButtonGroup = function ExerciseRunnerControllerButtonGroup() {
36
- var _a;
37
- var intl = useRawEliceIntl();
38
- var _React$useContext = React.useContext(ExerciseContext),
39
- materialExerciseId = _React$useContext.materialExerciseId;
40
- var _React$useContext2 = React.useContext(ExerciseRunnerContext),
41
- onSubmit = _React$useContext2.onSubmit,
42
- onSyncRequest = _React$useContext2.onSyncRequest,
43
- onCancel = _React$useContext2.onCancel;
44
- var activeFilename = useRecoilValue(exerciseActiveFilenameState);
45
- var isFileEditable = useExerciseFileEditable(activeFilename);
46
- var runnerWebsocketStatus = useRecoilValue(exerciseWebSocketTotalStatusQuery([].concat(_toConsumableArray(isFileEditable ? ['usercodeEdit'] : []), ['runnerRoom', 'stdio'])));
47
- var exercise = useRecoilValue(exerciseState(materialExerciseId));
48
- var exerciseRunType = useRecoilValue(exerciseRunnerRunTypeState);
49
- var exerciseWithNoGrade = Boolean(exercise === null || exercise === void 0 ? void 0 : exercise.isNoSubmitGrade);
50
- var lecture = useRecoilValue(exerciseLectureState(exercise === null || exercise === void 0 ? void 0 : exercise._lectureId));
51
- var isTestLecture = (lecture === null || lecture === void 0 ? void 0 : lecture.lectureType) === enums.LectureType.Test;
52
- var isTestLectureCompleted = (lecture === null || lecture === void 0 ? void 0 : lecture.testAdmissionStatus) === enums.TestAdmissionStatus.Completed;
53
- // runner states
54
- var isSubmitting = useRecoilValue(exerciseRunnerSubmittingState);
55
- var isRunning = useRecoilValue(exerciseRunnerRunningState);
56
- var isConnecting = runnerWebsocketStatus === EliceWebSocket.CONNECTING;
57
- var isNotReady = runnerWebsocketStatus !== EliceWebSocket.OPEN;
58
- // arduino
59
- var isArduinoExercise = (exercise === null || exercise === void 0 ? void 0 : exercise.envType) === enums.ExerciseEnvType.Arduino;
60
- var arduinoUploadProgress = useRecoilValue(exerciseArduinoUploadProgressState);
61
- var arduinoOpenedPortName = useRecoilValue(exerciseArduinoOpenedPortNameState);
62
- //
63
- // ========= ui states =========
64
- //
65
- // submit run
66
- var isSubmitRunHidden = isRunning;
67
- var isSubmitRunArduinoDisabled = isArduinoExercise ? arduinoUploadProgress !== 'ready' && arduinoUploadProgress !== 'error' || !arduinoOpenedPortName : false;
68
- var isSubmitRunDisabled = isSubmitRunHidden || isSubmitRunArduinoDisabled || isNotReady || isConnecting || isSubmitting;
69
- // submit grade
70
- var isSubmitGradeHidden = isRunning;
71
- var isSubmitGradeDisabled = isSubmitGradeHidden || exerciseWithNoGrade || isTestLecture && isTestLectureCompleted || isNotReady || isConnecting || isSubmitting;
72
- // cancel
73
- var isCancelHidden = !isRunning;
74
- var isCancelDisabled = isCancelHidden || isNotReady || isConnecting;
75
- // sync request
76
- var isSyncRequestHidden = !isRunning || !((_a = exercise === null || exercise === void 0 ? void 0 : exercise.readyExerciseImage) === null || _a === void 0 ? void 0 : _a.httpPort);
77
- var isSyncRequestDisabled = isSyncRequestHidden || isNotReady || isConnecting;
78
- //
79
- //
80
- //
81
- /**
82
- * Submit to run
83
- */
84
- var handleSubmitRun = function handleSubmitRun() {
85
- if (!isSubmitRunDisabled) {
86
- void onSubmit(enums.ExerciseRunType.Run);
87
- }
88
- };
89
- /**
90
- * Submit to grade
91
- */
92
- var handleSubmitGrade = function handleSubmitGrade() {
93
- if (!isSubmitGradeDisabled) {
94
- void onSubmit(enums.ExerciseRunType.Grade);
95
- }
96
- };
97
- /**
98
- * Cancel
99
- */
100
- var handleCancel = function handleCancel() {
101
- if (!isCancelDisabled) {
102
- onCancel();
103
- }
104
- };
105
- /**
106
- * Sync request
107
- */
108
- var handleSyncRequest = function handleSyncRequest() {
109
- if (!isSyncRequestDisabled) {
110
- onSyncRequest();
111
- }
112
- };
113
- //
114
- // keyboard shortcuts to control runner
115
- //
116
- useExericseShortcut('RUNNER_SUBMIT_RUN', handleSubmitRun);
117
- useExericseShortcut('RUNNER_SUBMIT_GRADE', handleSubmitGrade);
118
- useExericseShortcut('RUNNER_CANCEL', handleCancel);
119
- useExericseShortcut('RUNNER_SYNC_REQUEST', handleSyncRequest);
120
- //
121
- // handle save action emitted by file editor
122
- //
123
- React.useEffect(function () {
124
- var saveActionSub = exerciseFileEditorSaveAction$.subscribe(handleSyncRequest);
125
- return function () {
126
- saveActionSub.unsubscribe();
127
- };
128
- },
129
- // eslint-disable-next-line react-hooks/exhaustive-deps
130
- [isSyncRequestDisabled]);
131
- /**
132
- * Submit to run button
133
- */
134
- var renderSubmitRunButton = function renderSubmitRunButton() {
135
- if (isSubmitRunHidden) {
136
- return null;
137
- }
138
- return jsx(StyledControllerButton, {
139
- size: "tiny",
140
- loading: isConnecting || isSubmitting && exerciseRunType === enums.ExerciseRunType.Run,
141
- disabled: isSubmitRunDisabled,
142
- onClick: handleSubmitRun,
143
- children: isArduinoExercise ? intl.formatMessage({
144
- id: 'exerciseRunner.controller.buttonGroup.button.compile'
145
- }) : intl.formatMessage({
146
- id: 'exerciseRunner.controller.buttonGroup.button.run'
147
- })
148
- });
149
- };
150
- /**
151
- * Submit to grade button
152
- */
153
- var renderSubmitGradeButton = function renderSubmitGradeButton() {
154
- if (isSubmitGradeHidden) {
155
- return null;
156
- }
157
- return jsx(Tooltip, {
158
- dark: true,
159
- title: exerciseWithNoGrade ? intl.formatMessage({
160
- id: 'exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit'
161
- }) : undefined,
162
- placement: "top",
163
- children: jsx(StyledControllerButtonWrap, {
164
- children: jsx(StyledControllerButton, {
165
- size: "tiny",
166
- role: "secondary",
167
- loading: isConnecting || isSubmitting && exerciseRunType === enums.ExerciseRunType.Grade,
168
- disabled: isSubmitGradeDisabled,
169
- onClick: handleSubmitGrade,
170
- children: intl.formatMessage({
171
- id: 'exerciseRunner.controller.buttonGroup.button.submit'
172
- })
173
- })
174
- })
175
- });
176
- };
177
- /**
178
- * Cancel button
179
- */
180
- var renderCancelButton = function renderCancelButton() {
181
- if (isCancelHidden) {
182
- return null;
183
- }
184
- return jsx(StyledControllerButton, {
185
- size: "tiny",
186
- role: "danger",
187
- loading: isConnecting,
188
- disabled: isCancelDisabled,
189
- onClick: handleCancel,
190
- children: intl.formatMessage({
191
- id: 'exerciseRunner.controller.buttonGroup.button.stop'
192
- })
193
- });
194
- };
195
- /**
196
- * Sync request button
197
- */
198
- var renderSyncRequestButton = function renderSyncRequestButton() {
199
- if (isSyncRequestHidden) {
200
- return null;
201
- }
202
- return jsx(StyledControllerButton, {
203
- size: "tiny",
204
- role: "secondary",
205
- loading: isConnecting,
206
- disabled: isSyncRequestDisabled,
207
- onClick: handleSyncRequest,
208
- children: intl.formatMessage({
209
- id: 'exerciseRunner.controller.buttonGroup.button.syncRequest'
210
- })
211
- });
212
- };
213
- //
214
- //
215
- //
216
- return jsxs(StyledControllerButtonGroup, {
217
- children: [renderSubmitRunButton(), renderSubmitGradeButton(), renderCancelButton(), renderSyncRequestButton()]
12
+ return jsxs(Stack, {
13
+ direction: "row",
14
+ alignItems: "center",
15
+ gap: "0.5rem",
16
+ children: [jsx(ControllerActionRun, {}), jsx(ControllerActionGrade, {}), jsx(ControllerActionCancel, {}), jsx(ControllerActionSyncRequest, {})]
218
17
  });
219
18
  };
220
19
 
@@ -1,6 +1,6 @@
1
1
  import type React from 'react';
2
- interface ExerciseRunnerControllerCodeHelpRequestButtonProps {
2
+ interface CodeHelpRequestButtonProps {
3
3
  onClick: () => void;
4
4
  }
5
- declare const ExerciseRunnerControllerCodeHelpRequestButton: React.FC<ExerciseRunnerControllerCodeHelpRequestButtonProps>;
5
+ declare const ExerciseRunnerControllerCodeHelpRequestButton: React.FC<CodeHelpRequestButtonProps>;
6
6
  export default ExerciseRunnerControllerCodeHelpRequestButton;
@@ -0,0 +1,3 @@
1
+ import type React from 'react';
2
+ declare const ControllerActionCancel: React.VFC;
3
+ export default ControllerActionCancel;