@elice/material-exercise 1.230504.0 → 1.230516.0-helpidialogue.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.
@@ -8,6 +8,7 @@ var React = require('react');
8
8
  var reactUse = require('react-use');
9
9
  var apiClient = require('@elice/api-client');
10
10
  var blocks = require('@elice/blocks');
11
+ var materialSharedUtils = require('@elice/material-shared-utils');
11
12
  var recoil = require('recoil');
12
13
  var styled = require('styled-components');
13
14
  var context = require('./context.js');
@@ -37,6 +38,9 @@ var ExerciseProvider = function ExerciseProvider(_a) {
37
38
  onDefaultExerciseRoomIdSet = _a.onDefaultExerciseRoomIdSet,
38
39
  exerciseImageEmptyOptions = _a.exerciseImageEmptyOptions,
39
40
  contextProps = tslib.__rest(_a, ["children", "materialExerciseId", "exerciseRoomId", "exerciseRoomUserId", "onDefaultExerciseRoomIdSet", "exerciseImageEmptyOptions"]);
41
+ //
42
+ var _useMaterialConfig = materialSharedUtils.useMaterialConfig(),
43
+ orgNameShort = _useMaterialConfig.orgNameShort;
40
44
  // user
41
45
  var user = recoil.useRecoilValue(recoil$1.exerciseUserState);
42
46
  // exercise
@@ -51,6 +55,7 @@ var ExerciseProvider = function ExerciseProvider(_a) {
51
55
  // etc
52
56
  var activeFilename = recoil.useRecoilValue(recoil$1.exerciseActiveFilenameState);
53
57
  var setConatinerSize = recoil.useSetRecoilState(recoil$1.exerciseContainerSizeState);
58
+ var setAibotInfoEnable = recoil.useSetRecoilState(recoil$1.exerciseAibotInfoEnableState);
54
59
  // wrap container size
55
60
  var _useMeasure = reactUse.useMeasure(),
56
61
  _useMeasure2 = _rollupPluginBabelHelpers.slicedToArray(_useMeasure, 2),
@@ -126,6 +131,26 @@ var ExerciseProvider = function ExerciseProvider(_a) {
126
131
  // eslint-disable-next-line react-hooks/exhaustive-deps
127
132
  [width, height]);
128
133
  //
134
+ // update
135
+ //
136
+ React__default["default"].useEffect(function () {
137
+ if (!(lecture === null || lecture === void 0 ? void 0 : lecture.courseId)) {
138
+ return;
139
+ }
140
+ void Promise.all([apiClient.getGlobalOrganizationGet({
141
+ organizationNameShort: orgNameShort
142
+ }), apiClient.getOrgCourseGet({
143
+ courseId: lecture.courseId
144
+ })]).then(function (_ref) {
145
+ var _ref2 = _rollupPluginBabelHelpers.slicedToArray(_ref, 2),
146
+ organization = _ref2[0].organization,
147
+ course = _ref2[1].course;
148
+ var isAibotInfoEnabled = organization.aibotInfo.isEnabled && course.aibotInfo.isEnabled;
149
+ setAibotInfoEnable(isAibotInfoEnabled);
150
+ });
151
+ // eslint-disable-next-line react-hooks/exhaustive-deps
152
+ }, [lecture, orgNameShort]);
153
+ //
129
154
  //
130
155
  //
131
156
  return React__default["default"].createElement(StyledMaterialExercise, {
@@ -139,6 +139,10 @@ export declare const exerciseRightpaneActiveState: import("recoil").RecoilState<
139
139
  *
140
140
  */
141
141
  export declare const exerciseContainerSizeState: import("recoil").RecoilState<AtomContainerSizeState>;
142
+ /**
143
+ *
144
+ */
145
+ export declare const exerciseAibotInfoEnableState: import("recoil").RecoilState<boolean>;
142
146
  /**
143
147
  *
144
148
  */
@@ -794,6 +794,13 @@ var exerciseContainerSizeState = recoil.atom({
794
794
  height: 0
795
795
  }
796
796
  });
797
+ /**
798
+ *
799
+ */
800
+ var exerciseAibotInfoEnableState = recoil.atom({
801
+ key: "".concat(KEY_PREFIX, "/AibotInfoEnable"),
802
+ default: false
803
+ });
797
804
  /**
798
805
  *
799
806
  */
@@ -821,6 +828,7 @@ var exerciseMonacoEditorApisState = recoil.atom({
821
828
  });
822
829
 
823
830
  exports.exerciseActiveFilenameState = exerciseActiveFilenameState;
831
+ exports.exerciseAibotInfoEnableState = exerciseAibotInfoEnableState;
824
832
  exports.exerciseArduinoAgentConnectionState = exerciseArduinoAgentConnectionState;
825
833
  exports.exerciseArduinoAgentModalState = exerciseArduinoAgentModalState;
826
834
  exports.exerciseArduinoOnSelectPortState = exerciseArduinoOnSelectPortState;
@@ -5,11 +5,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
6
  var React = require('react');
7
7
  var reactIntl = require('react-intl');
8
- var apiClient = require('@elice/api-client');
9
8
  var blocks = require('@elice/blocks');
10
9
  var icons = require('@elice/icons');
11
- var materialSharedUtils = require('@elice/material-shared-utils');
10
+ var recoil = require('recoil');
12
11
  var styled = require('styled-components');
12
+ var recoil$1 = require('../context/recoil.js');
13
+ require('../context/context.js');
14
+ require('../context/recoilTypes.js');
15
+ require('../context/subjects.js');
16
+ require('../context/ExerciseProvider.js');
13
17
 
14
18
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
19
 
@@ -22,34 +26,20 @@ var StyledControllerButton = styled__default["default"](blocks.Button).withConfi
22
26
  componentId: "sc-10grd0k-0"
23
27
  })(["position:relative;transition:none;"]);
24
28
  var ExerciseRunnerControllerCodeHelpRequestButton = React__default["default"].forwardRef(function (props, ref) {
25
- var _useMaterialConfig = materialSharedUtils.useMaterialConfig(),
26
- orgNameShort = _useMaterialConfig.orgNameShort;
27
29
  var _React$useState = React__default["default"].useState(false),
28
30
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
29
31
  isTooltipHidden = _React$useState2[0],
30
32
  setIsTooltipHidden = _React$useState2[1];
33
+ var isAibotInfoEnabled = recoil.useRecoilValue(recoil$1.exerciseAibotInfoEnableState);
34
+ //
31
35
  //
32
36
  //
33
- // Get ai info from organization and check all resovle below conditions.
34
- // - isEnable is true.
35
- // - quotaPerDay is upper than zero.
36
- // - tooltip hidden is false.
37
37
  React__default["default"].useEffect(function () {
38
38
  var isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
39
39
  if (isTooltipHidden) {
40
40
  setIsTooltipHidden(true);
41
41
  return;
42
42
  }
43
- apiClient.getGlobalOrganizationGet({
44
- organizationNameShort: orgNameShort
45
- }).then(function (res) {
46
- var aibotInfo = res.organization.aibotInfo;
47
- var isHidden = !aibotInfo.isEnabled || aibotInfo.quotaPerDay <= 0;
48
- setIsTooltipHidden(isHidden);
49
- }).catch(function () {
50
- setIsTooltipHidden(true);
51
- });
52
- // eslint-disable-next-line react-hooks/exhaustive-deps
53
43
  }, []);
54
44
  //
55
45
  //
@@ -67,18 +57,18 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React__default["default"].fo
67
57
  size: "tiny",
68
58
  bold: true
69
59
  }, "NEW")), React__default["default"].createElement(blocks.Hspace, {
70
- width: 0.25
60
+ width: 0.625
71
61
  }), React__default["default"].createElement(blocks.Text, {
72
- role: "gray7",
62
+ role: "gray9",
73
63
  size: "small",
74
64
  bold: true
75
65
  }, React__default["default"].createElement(reactIntl.FormattedMessage, {
76
66
  id: "exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp"
77
67
  })), React__default["default"].createElement(blocks.Hspace, {
78
- width: 0.25
68
+ width: 0.625
79
69
  }), React__default["default"].createElement(blocks.IconButton, {
80
70
  size: "tiny",
81
- role: "gray6",
71
+ role: "primary",
82
72
  hasPadding: false,
83
73
  border: false,
84
74
  icon: icons.eilMathsignMultiplyBasic,
@@ -88,7 +78,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React__default["default"].fo
88
78
  }
89
79
  }));
90
80
  };
91
- return React__default["default"].createElement(blocks.Tooltip, {
81
+ return isAibotInfoEnabled ? React__default["default"].createElement(blocks.Tooltip, {
92
82
  placement: "top",
93
83
  dark: false,
94
84
  visible: !isTooltipHidden,
@@ -103,7 +93,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React__default["default"].fo
103
93
  iconAlign: "right"
104
94
  }), React__default["default"].createElement(reactIntl.FormattedMessage, {
105
95
  id: "exerciseRunner.controller.buttonGroup.button.helpRequest"
106
- })));
96
+ }))) : null;
107
97
  });
108
98
 
109
99
  exports["default"] = ExerciseRunnerControllerCodeHelpRequestButton;
@@ -2,6 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var phrasesEn = {"exerciseRunner.controller.arduino.connectionStatus.connected":"Connected to Arduino","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"Connected to {device}","exerciseRunner.controller.arduino.connectionStatus.connecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.disconnected":"Disconnected from Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.noDevice":"No connected device","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.uploading":"Uploading...","exerciseRunner.controller.arduino.agent.title":"Connect to Agent","exerciseRunner.controller.arduino.agent.instruction.install":"1. Install Elice arduino agent","exerciseRunner.controller.arduino.agent.instruction.install.detail":"Install 'elice-arduino-agent' program to connect to arduino.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Download for Windows","exerciseRunner.controller.arduino.agent.instruction.install.mac":"Download for MacOS","exerciseRunner.controller.arduino.agent.instruction.connect":"2. Connect to arduino","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"After the download is completed, it should be connected to exercise environment. If connection is unavailable, please follow the manual.\nClick the button below to read the manual.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"Go to Manual","exerciseRunner.controller.arduino.agent.instruction.close":"Close","exerciseRunner.controller.buttonGroup.button.compile":"Compile","exerciseRunner.controller.buttonGroup.button.helpRequest":"Help me","exerciseRunner.controller.buttonGroup.button.run":"Run","exerciseRunner.controller.buttonGroup.button.stop":"Stop","exerciseRunner.controller.buttonGroup.button.submit":"Submit","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"Exercise without submission","exerciseRunner.controller.buttonGroup.button.syncRequest":"Sync code","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"A function to get help from AI has been added.","exerciseRunner.controller.runningInfo.error.fetch":"An error occurred while fetching running info","exerciseRunner.controller.runningInfo.lastRunningDatetime":"Last running datetime","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"Last submit datetime","exerciseRunner.controller.runningInfo.lastSubmitScore":"Last submit score","exerciseRunner.controller.runningInfo.score":"{score}","exerciseRunner.controller.statusMessage.closed":"Editor disconnected","exerciseRunner.controller.statusMessage.connecting":"Connecting to editor...","exerciseRunner.controller.statusMessage.open":"Editor connected","exerciseRunner.controller.timer.runningRemainingTime":"Remaining: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"Reload page","exerciseRunner.submitErrorDialog.body.commonError":"An error occurred while running the code.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"You have exceeded the allowed number of lab submissions.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"The exercise image has been updated.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.networkError":"An error occurred while running the code.\nPlease refresh and try again.\nIf the problem persists, please check the network status.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"This exercise is not allowed to be submitted.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"The exercise room is being prepared.\nPlease try again later.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"The exercise room is running.\nPlease wait a moment.","exerciseRunner.submitErrorDialog.body.unknown":"An error occurred while running the code.\nPlease try again later.","exerciseRunner.submitErrorDialog.title":"Unable to run the code"};
5
+ var phrasesEn = {"exerciseRunner.controller.arduino.connectionStatus.connected":"Connected to Arduino","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"Connected to {device}","exerciseRunner.controller.arduino.connectionStatus.connecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.disconnected":"Disconnected from Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.noDevice":"No connected device","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.uploading":"Uploading...","exerciseRunner.controller.arduino.agent.title":"Connect to Agent","exerciseRunner.controller.arduino.agent.instruction.install":"1. Install Elice arduino agent","exerciseRunner.controller.arduino.agent.instruction.install.detail":"Install 'elice-arduino-agent' program to connect to arduino.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Download for Windows","exerciseRunner.controller.arduino.agent.instruction.install.mac":"Download for MacOS","exerciseRunner.controller.arduino.agent.instruction.connect":"2. Connect to arduino","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"After the download is completed, it should be connected to exercise environment. If connection is unavailable, please follow the manual.\nClick the button below to read the manual.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"Go to Manual","exerciseRunner.controller.arduino.agent.instruction.close":"Close","exerciseRunner.controller.buttonGroup.button.compile":"Compile","exerciseRunner.controller.buttonGroup.button.helpRequest":"Ask Helpy a question","exerciseRunner.controller.buttonGroup.button.run":"Run","exerciseRunner.controller.buttonGroup.button.stop":"Stop","exerciseRunner.controller.buttonGroup.button.submit":"Submit","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"Exercise without submission","exerciseRunner.controller.buttonGroup.button.syncRequest":"Sync code","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"Ask any questions you may have.","exerciseRunner.controller.runningInfo.error.fetch":"An error occurred while fetching running info","exerciseRunner.controller.runningInfo.lastRunningDatetime":"Last running datetime","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"Last submit datetime","exerciseRunner.controller.runningInfo.lastSubmitScore":"Last submit score","exerciseRunner.controller.runningInfo.score":"{score}","exerciseRunner.controller.statusMessage.closed":"Editor disconnected","exerciseRunner.controller.statusMessage.connecting":"Connecting to editor...","exerciseRunner.controller.statusMessage.open":"Editor connected","exerciseRunner.controller.timer.runningRemainingTime":"Remaining: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"Reload page","exerciseRunner.submitErrorDialog.body.commonError":"An error occurred while running the code.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"You have exceeded the allowed number of lab submissions.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"The exercise image has been updated.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.networkError":"An error occurred while running the code.\nPlease refresh and try again.\nIf the problem persists, please check the network status.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"This exercise is not allowed to be submitted.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"The exercise room is being prepared.\nPlease try again later.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"The exercise room is running.\nPlease wait a moment.","exerciseRunner.submitErrorDialog.body.unknown":"An error occurred while running the code.\nPlease try again later.","exerciseRunner.submitErrorDialog.title":"Unable to run the code"};
6
6
 
7
7
  exports["default"] = phrasesEn;
@@ -2,6 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var phrasesKo = {"exerciseRunner.controller.arduino.connectionStatus.connected":"아두이노 기기 연결됨","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"{device} 연결됨","exerciseRunner.controller.arduino.connectionStatus.connecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.disconnected":"엘리스 아두이노 에이전트 연결 끊김","exerciseRunner.controller.arduino.connectionStatus.noDevice":"연결된 기기 없음","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.uploading":"업로드 중","exerciseRunner.controller.arduino.agent.title":"에이전트 연결","exerciseRunner.controller.arduino.agent.instruction.install":"1. 엘리스 아두이노 에이전트 설치하기","exerciseRunner.controller.arduino.agent.instruction.install.detail":"아두이노와 연결하기 위해 ‘엘리스 아두이노 에이전트'를 설치해주세요.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Windows 용 설치","exerciseRunner.controller.arduino.agent.instruction.install.mac":"MacOS 용 설치","exerciseRunner.controller.arduino.agent.instruction.connect":"2. 연결하기","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"다운로드를 완료하였다면 실습 환경과 연결이 필요합니다. 연결되지 않을 경우 매뉴얼을 확인하세요.\n아래 버튼을 클릭해 매뉴얼을 확인하실 수 있습니다.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"매뉴얼 이동","exerciseRunner.controller.arduino.agent.instruction.close":"닫기","exerciseRunner.controller.buttonGroup.button.compile":"컴파일","exerciseRunner.controller.buttonGroup.button.helpRequest":"도와주세요","exerciseRunner.controller.buttonGroup.button.run":"실행","exerciseRunner.controller.buttonGroup.button.stop":"정지","exerciseRunner.controller.buttonGroup.button.submit":"제출","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"실행만 가능한 실습입니다.","exerciseRunner.controller.buttonGroup.button.syncRequest":"코드 동기화","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"AI에게 도움받기 기능이 추가되었어요.","exerciseRunner.controller.runningInfo.error.fetch":"최종 실행 내역을 가져오는데 문제가 발생하였습니다.","exerciseRunner.controller.runningInfo.lastRunningDatetime":"최종 실행 시간","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"최종 제출 시간","exerciseRunner.controller.runningInfo.lastSubmitScore":"최종 제출 점수","exerciseRunner.controller.runningInfo.score":"{score} 점","exerciseRunner.controller.statusMessage.closed":"에디터 연결 끊김","exerciseRunner.controller.statusMessage.connecting":"에디터 연결 중...","exerciseRunner.controller.statusMessage.open":"에디터 연결됨","exerciseRunner.controller.timer.runningRemainingTime":"실행 제한시간: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"확인","exerciseRunner.submitErrorDialog.action.reload":"새로고침","exerciseRunner.submitErrorDialog.body.commonError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"실습 제출 허용 횟수를 초과했습니다.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"실습환경이 업데이트 되었습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.networkError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.\n문제가 계속되면 네트워크 상태를 확인해주세요.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"제출이 허용되지 않은 실습입니다.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"실습환경이 준비 중입니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"실습을 실행하고 있습니다.\n잠시만 기다려주세요.","exerciseRunner.submitErrorDialog.body.unknown":"코드 실행 중 오류가 발생했습니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.title":"실습을 실행할 수 없습니다"};
5
+ var phrasesKo = {"exerciseRunner.controller.arduino.connectionStatus.connected":"아두이노 기기 연결됨","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"{device} 연결됨","exerciseRunner.controller.arduino.connectionStatus.connecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.disconnected":"엘리스 아두이노 에이전트 연결 끊김","exerciseRunner.controller.arduino.connectionStatus.noDevice":"연결된 기기 없음","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.uploading":"업로드 중","exerciseRunner.controller.arduino.agent.title":"에이전트 연결","exerciseRunner.controller.arduino.agent.instruction.install":"1. 엘리스 아두이노 에이전트 설치하기","exerciseRunner.controller.arduino.agent.instruction.install.detail":"아두이노와 연결하기 위해 ‘엘리스 아두이노 에이전트'를 설치해주세요.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Windows 용 설치","exerciseRunner.controller.arduino.agent.instruction.install.mac":"MacOS 용 설치","exerciseRunner.controller.arduino.agent.instruction.connect":"2. 연결하기","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"다운로드를 완료하였다면 실습 환경과 연결이 필요합니다. 연결되지 않을 경우 매뉴얼을 확인하세요.\n아래 버튼을 클릭해 매뉴얼을 확인하실 수 있습니다.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"매뉴얼 이동","exerciseRunner.controller.arduino.agent.instruction.close":"닫기","exerciseRunner.controller.buttonGroup.button.compile":"컴파일","exerciseRunner.controller.buttonGroup.button.helpRequest":"헬피에게 질문하기","exerciseRunner.controller.buttonGroup.button.run":"실행","exerciseRunner.controller.buttonGroup.button.stop":"정지","exerciseRunner.controller.buttonGroup.button.submit":"제출","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"실행만 가능한 실습입니다.","exerciseRunner.controller.buttonGroup.button.syncRequest":"코드 동기화","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"궁금한 사항을 질문해 보세요.","exerciseRunner.controller.runningInfo.error.fetch":"최종 실행 내역을 가져오는데 문제가 발생하였습니다.","exerciseRunner.controller.runningInfo.lastRunningDatetime":"최종 실행 시간","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"최종 제출 시간","exerciseRunner.controller.runningInfo.lastSubmitScore":"최종 제출 점수","exerciseRunner.controller.runningInfo.score":"{score} 점","exerciseRunner.controller.statusMessage.closed":"에디터 연결 끊김","exerciseRunner.controller.statusMessage.connecting":"에디터 연결 중...","exerciseRunner.controller.statusMessage.open":"에디터 연결됨","exerciseRunner.controller.timer.runningRemainingTime":"실행 제한시간: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"확인","exerciseRunner.submitErrorDialog.action.reload":"새로고침","exerciseRunner.submitErrorDialog.body.commonError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"실습 제출 허용 횟수를 초과했습니다.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"실습환경이 업데이트 되었습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.networkError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.\n문제가 계속되면 네트워크 상태를 확인해주세요.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"제출이 허용되지 않은 실습입니다.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"실습환경이 준비 중입니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"실습을 실행하고 있습니다.\n잠시만 기다려주세요.","exerciseRunner.submitErrorDialog.body.unknown":"코드 실행 중 오류가 발생했습니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.title":"실습을 실행할 수 없습니다"};
6
6
 
7
7
  exports["default"] = phrasesKo;
@@ -2,13 +2,14 @@ import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPlugin
2
2
  import { __rest } from 'tslib';
3
3
  import React from 'react';
4
4
  import { useMeasure } from 'react-use';
5
- import { getOrgMaterialExerciseDefaultRoomGet } from '@elice/api-client';
5
+ import { getOrgMaterialExerciseDefaultRoomGet, getGlobalOrganizationGet, getOrgCourseGet } from '@elice/api-client';
6
6
  import { Flex, Spinner } from '@elice/blocks';
7
+ import { useMaterialConfig } from '@elice/material-shared-utils';
7
8
  import { useRecoilValue, useResetRecoilState, useSetRecoilState } from 'recoil';
8
9
  import styled from 'styled-components';
9
10
  import { ExerciseContext } from './context.js';
10
11
  import MaterialExerciseNoImage from './ExerciseProviderNoImage.js';
11
- import { exerciseUserState, exerciseState, exerciseRoomState, exerciseLectureState, exerciseMultilangLanguagesState, exerciseActiveFilenameState, exerciseContainerSizeState } from './recoil.js';
12
+ import { exerciseUserState, exerciseState, exerciseRoomState, exerciseLectureState, exerciseMultilangLanguagesState, exerciseActiveFilenameState, exerciseContainerSizeState, exerciseAibotInfoEnableState } from './recoil.js';
12
13
 
13
14
  var RECOIL_RESET_DELAY = 10;
14
15
  var StyledMaterialExercise = styled.div.withConfig({
@@ -28,6 +29,9 @@ var ExerciseProvider = function ExerciseProvider(_a) {
28
29
  onDefaultExerciseRoomIdSet = _a.onDefaultExerciseRoomIdSet,
29
30
  exerciseImageEmptyOptions = _a.exerciseImageEmptyOptions,
30
31
  contextProps = __rest(_a, ["children", "materialExerciseId", "exerciseRoomId", "exerciseRoomUserId", "onDefaultExerciseRoomIdSet", "exerciseImageEmptyOptions"]);
32
+ //
33
+ var _useMaterialConfig = useMaterialConfig(),
34
+ orgNameShort = _useMaterialConfig.orgNameShort;
31
35
  // user
32
36
  var user = useRecoilValue(exerciseUserState);
33
37
  // exercise
@@ -42,6 +46,7 @@ var ExerciseProvider = function ExerciseProvider(_a) {
42
46
  // etc
43
47
  var activeFilename = useRecoilValue(exerciseActiveFilenameState);
44
48
  var setConatinerSize = useSetRecoilState(exerciseContainerSizeState);
49
+ var setAibotInfoEnable = useSetRecoilState(exerciseAibotInfoEnableState);
45
50
  // wrap container size
46
51
  var _useMeasure = useMeasure(),
47
52
  _useMeasure2 = _slicedToArray(_useMeasure, 2),
@@ -117,6 +122,26 @@ var ExerciseProvider = function ExerciseProvider(_a) {
117
122
  // eslint-disable-next-line react-hooks/exhaustive-deps
118
123
  [width, height]);
119
124
  //
125
+ // update
126
+ //
127
+ React.useEffect(function () {
128
+ if (!(lecture === null || lecture === void 0 ? void 0 : lecture.courseId)) {
129
+ return;
130
+ }
131
+ void Promise.all([getGlobalOrganizationGet({
132
+ organizationNameShort: orgNameShort
133
+ }), getOrgCourseGet({
134
+ courseId: lecture.courseId
135
+ })]).then(function (_ref) {
136
+ var _ref2 = _slicedToArray(_ref, 2),
137
+ organization = _ref2[0].organization,
138
+ course = _ref2[1].course;
139
+ var isAibotInfoEnabled = organization.aibotInfo.isEnabled && course.aibotInfo.isEnabled;
140
+ setAibotInfoEnable(isAibotInfoEnabled);
141
+ });
142
+ // eslint-disable-next-line react-hooks/exhaustive-deps
143
+ }, [lecture, orgNameShort]);
144
+ //
120
145
  //
121
146
  //
122
147
  return React.createElement(StyledMaterialExercise, {
@@ -139,6 +139,10 @@ export declare const exerciseRightpaneActiveState: import("recoil").RecoilState<
139
139
  *
140
140
  */
141
141
  export declare const exerciseContainerSizeState: import("recoil").RecoilState<AtomContainerSizeState>;
142
+ /**
143
+ *
144
+ */
145
+ export declare const exerciseAibotInfoEnableState: import("recoil").RecoilState<boolean>;
142
146
  /**
143
147
  *
144
148
  */
@@ -786,6 +786,13 @@ var exerciseContainerSizeState = atom({
786
786
  height: 0
787
787
  }
788
788
  });
789
+ /**
790
+ *
791
+ */
792
+ var exerciseAibotInfoEnableState = atom({
793
+ key: "".concat(KEY_PREFIX, "/AibotInfoEnable"),
794
+ default: false
795
+ });
789
796
  /**
790
797
  *
791
798
  */
@@ -812,4 +819,4 @@ var exerciseMonacoEditorApisState = atom({
812
819
  dangerouslyAllowMutability: true
813
820
  });
814
821
 
815
- export { exerciseActiveFilenameState, exerciseArduinoAgentConnectionState, exerciseArduinoAgentModalState, exerciseArduinoOnSelectPortState, exerciseArduinoOpenedPortNameState, exerciseArduinoPortsState, exerciseArduinoPreferenceState, exerciseArduinoUploadProgressState, exerciseContainerSizeState, exerciseEditorPreferenceState, exerciseFileEditorCursorSelectionValueState, exerciseFileEditorCursorState, exerciseFileTabsOpenedState, exerciseFileTreeOpenedState, exerciseLectureState, exerciseMonacoEditorApisState, exerciseMultilangEnvironmentState, exerciseMultilangLanguagesState, exercisePreviewDisplayModeState, exercisePreviewTypeState, exerciseRightpaneActiveState, exerciseRoomState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerRunTypeState, exerciseRunnerRunningState, exerciseRunnerStdioFilesState, exerciseRunnerSubmittingState, exerciseRunnerWebSocketStatusQuery, exerciseState, exerciseUserState, exerciseWebsocketQuery, exerciseWebsocketStates };
822
+ export { exerciseActiveFilenameState, exerciseAibotInfoEnableState, exerciseArduinoAgentConnectionState, exerciseArduinoAgentModalState, exerciseArduinoOnSelectPortState, exerciseArduinoOpenedPortNameState, exerciseArduinoPortsState, exerciseArduinoPreferenceState, exerciseArduinoUploadProgressState, exerciseContainerSizeState, exerciseEditorPreferenceState, exerciseFileEditorCursorSelectionValueState, exerciseFileEditorCursorState, exerciseFileTabsOpenedState, exerciseFileTreeOpenedState, exerciseLectureState, exerciseMonacoEditorApisState, exerciseMultilangEnvironmentState, exerciseMultilangLanguagesState, exercisePreviewDisplayModeState, exercisePreviewTypeState, exerciseRightpaneActiveState, exerciseRoomState, exerciseRunnerRoomConnectionInfoState, exerciseRunnerRunTypeState, exerciseRunnerRunningState, exerciseRunnerStdioFilesState, exerciseRunnerSubmittingState, exerciseRunnerWebSocketStatusQuery, exerciseState, exerciseUserState, exerciseWebsocketQuery, exerciseWebsocketStates };
@@ -1,11 +1,15 @@
1
1
  import { slicedToArray as _slicedToArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
2
2
  import React from 'react';
3
3
  import { FormattedMessage } from 'react-intl';
4
- import { getGlobalOrganizationGet } from '@elice/api-client';
5
4
  import { Button, Tooltip, Flex, BadgeNext, Text, Hspace, IconButton, Icon } from '@elice/blocks';
6
5
  import { eilMathsignMultiplyBasic, eilArrowRightwardsBasic } from '@elice/icons';
7
- import { useMaterialConfig } from '@elice/material-shared-utils';
6
+ import { useRecoilValue } from 'recoil';
8
7
  import styled from 'styled-components';
8
+ import { exerciseAibotInfoEnableState } from '../context/recoil.js';
9
+ import '../context/context.js';
10
+ import '../context/recoilTypes.js';
11
+ import '../context/subjects.js';
12
+ import '../context/ExerciseProvider.js';
9
13
 
10
14
  var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY = 'elice-material-exercise-aibot-tooltip-hidden';
11
15
  var ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE = 'true';
@@ -13,34 +17,20 @@ var StyledControllerButton = styled(Button).withConfig({
13
17
  componentId: "sc-10grd0k-0"
14
18
  })(["position:relative;transition:none;"]);
15
19
  var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (props, ref) {
16
- var _useMaterialConfig = useMaterialConfig(),
17
- orgNameShort = _useMaterialConfig.orgNameShort;
18
20
  var _React$useState = React.useState(false),
19
21
  _React$useState2 = _slicedToArray(_React$useState, 2),
20
22
  isTooltipHidden = _React$useState2[0],
21
23
  setIsTooltipHidden = _React$useState2[1];
24
+ var isAibotInfoEnabled = useRecoilValue(exerciseAibotInfoEnableState);
25
+ //
22
26
  //
23
27
  //
24
- // Get ai info from organization and check all resovle below conditions.
25
- // - isEnable is true.
26
- // - quotaPerDay is upper than zero.
27
- // - tooltip hidden is false.
28
28
  React.useEffect(function () {
29
29
  var isTooltipHidden = sessionStorage.getItem(ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_KEY) === ELICE_MATERIAL_EXERCISE_AI_BOT_TOOLTIP_VALUE;
30
30
  if (isTooltipHidden) {
31
31
  setIsTooltipHidden(true);
32
32
  return;
33
33
  }
34
- getGlobalOrganizationGet({
35
- organizationNameShort: orgNameShort
36
- }).then(function (res) {
37
- var aibotInfo = res.organization.aibotInfo;
38
- var isHidden = !aibotInfo.isEnabled || aibotInfo.quotaPerDay <= 0;
39
- setIsTooltipHidden(isHidden);
40
- }).catch(function () {
41
- setIsTooltipHidden(true);
42
- });
43
- // eslint-disable-next-line react-hooks/exhaustive-deps
44
34
  }, []);
45
35
  //
46
36
  //
@@ -58,18 +48,18 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (p
58
48
  size: "tiny",
59
49
  bold: true
60
50
  }, "NEW")), React.createElement(Hspace, {
61
- width: 0.25
51
+ width: 0.625
62
52
  }), React.createElement(Text, {
63
- role: "gray7",
53
+ role: "gray9",
64
54
  size: "small",
65
55
  bold: true
66
56
  }, React.createElement(FormattedMessage, {
67
57
  id: "exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp"
68
58
  })), React.createElement(Hspace, {
69
- width: 0.25
59
+ width: 0.625
70
60
  }), React.createElement(IconButton, {
71
61
  size: "tiny",
72
- role: "gray6",
62
+ role: "primary",
73
63
  hasPadding: false,
74
64
  border: false,
75
65
  icon: eilMathsignMultiplyBasic,
@@ -79,7 +69,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (p
79
69
  }
80
70
  }));
81
71
  };
82
- return React.createElement(Tooltip, {
72
+ return isAibotInfoEnabled ? React.createElement(Tooltip, {
83
73
  placement: "top",
84
74
  dark: false,
85
75
  visible: !isTooltipHidden,
@@ -94,7 +84,7 @@ var ExerciseRunnerControllerCodeHelpRequestButton = React.forwardRef(function (p
94
84
  iconAlign: "right"
95
85
  }), React.createElement(FormattedMessage, {
96
86
  id: "exerciseRunner.controller.buttonGroup.button.helpRequest"
97
- })));
87
+ }))) : null;
98
88
  });
99
89
 
100
90
  export { ExerciseRunnerControllerCodeHelpRequestButton as default };
@@ -1,3 +1,3 @@
1
- var phrasesEn = {"exerciseRunner.controller.arduino.connectionStatus.connected":"Connected to Arduino","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"Connected to {device}","exerciseRunner.controller.arduino.connectionStatus.connecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.disconnected":"Disconnected from Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.noDevice":"No connected device","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.uploading":"Uploading...","exerciseRunner.controller.arduino.agent.title":"Connect to Agent","exerciseRunner.controller.arduino.agent.instruction.install":"1. Install Elice arduino agent","exerciseRunner.controller.arduino.agent.instruction.install.detail":"Install 'elice-arduino-agent' program to connect to arduino.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Download for Windows","exerciseRunner.controller.arduino.agent.instruction.install.mac":"Download for MacOS","exerciseRunner.controller.arduino.agent.instruction.connect":"2. Connect to arduino","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"After the download is completed, it should be connected to exercise environment. If connection is unavailable, please follow the manual.\nClick the button below to read the manual.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"Go to Manual","exerciseRunner.controller.arduino.agent.instruction.close":"Close","exerciseRunner.controller.buttonGroup.button.compile":"Compile","exerciseRunner.controller.buttonGroup.button.helpRequest":"Help me","exerciseRunner.controller.buttonGroup.button.run":"Run","exerciseRunner.controller.buttonGroup.button.stop":"Stop","exerciseRunner.controller.buttonGroup.button.submit":"Submit","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"Exercise without submission","exerciseRunner.controller.buttonGroup.button.syncRequest":"Sync code","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"A function to get help from AI has been added.","exerciseRunner.controller.runningInfo.error.fetch":"An error occurred while fetching running info","exerciseRunner.controller.runningInfo.lastRunningDatetime":"Last running datetime","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"Last submit datetime","exerciseRunner.controller.runningInfo.lastSubmitScore":"Last submit score","exerciseRunner.controller.runningInfo.score":"{score}","exerciseRunner.controller.statusMessage.closed":"Editor disconnected","exerciseRunner.controller.statusMessage.connecting":"Connecting to editor...","exerciseRunner.controller.statusMessage.open":"Editor connected","exerciseRunner.controller.timer.runningRemainingTime":"Remaining: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"Reload page","exerciseRunner.submitErrorDialog.body.commonError":"An error occurred while running the code.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"You have exceeded the allowed number of lab submissions.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"The exercise image has been updated.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.networkError":"An error occurred while running the code.\nPlease refresh and try again.\nIf the problem persists, please check the network status.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"This exercise is not allowed to be submitted.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"The exercise room is being prepared.\nPlease try again later.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"The exercise room is running.\nPlease wait a moment.","exerciseRunner.submitErrorDialog.body.unknown":"An error occurred while running the code.\nPlease try again later.","exerciseRunner.submitErrorDialog.title":"Unable to run the code"};
1
+ var phrasesEn = {"exerciseRunner.controller.arduino.connectionStatus.connected":"Connected to Arduino","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"Connected to {device}","exerciseRunner.controller.arduino.connectionStatus.connecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.disconnected":"Disconnected from Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.noDevice":"No connected device","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"Connecting to Elice Arduino Agent","exerciseRunner.controller.arduino.connectionStatus.uploading":"Uploading...","exerciseRunner.controller.arduino.agent.title":"Connect to Agent","exerciseRunner.controller.arduino.agent.instruction.install":"1. Install Elice arduino agent","exerciseRunner.controller.arduino.agent.instruction.install.detail":"Install 'elice-arduino-agent' program to connect to arduino.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Download for Windows","exerciseRunner.controller.arduino.agent.instruction.install.mac":"Download for MacOS","exerciseRunner.controller.arduino.agent.instruction.connect":"2. Connect to arduino","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"After the download is completed, it should be connected to exercise environment. If connection is unavailable, please follow the manual.\nClick the button below to read the manual.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"Go to Manual","exerciseRunner.controller.arduino.agent.instruction.close":"Close","exerciseRunner.controller.buttonGroup.button.compile":"Compile","exerciseRunner.controller.buttonGroup.button.helpRequest":"Ask Helpy a question","exerciseRunner.controller.buttonGroup.button.run":"Run","exerciseRunner.controller.buttonGroup.button.stop":"Stop","exerciseRunner.controller.buttonGroup.button.submit":"Submit","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"Exercise without submission","exerciseRunner.controller.buttonGroup.button.syncRequest":"Sync code","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"Ask any questions you may have.","exerciseRunner.controller.runningInfo.error.fetch":"An error occurred while fetching running info","exerciseRunner.controller.runningInfo.lastRunningDatetime":"Last running datetime","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"Last submit datetime","exerciseRunner.controller.runningInfo.lastSubmitScore":"Last submit score","exerciseRunner.controller.runningInfo.score":"{score}","exerciseRunner.controller.statusMessage.closed":"Editor disconnected","exerciseRunner.controller.statusMessage.connecting":"Connecting to editor...","exerciseRunner.controller.statusMessage.open":"Editor connected","exerciseRunner.controller.timer.runningRemainingTime":"Remaining: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"OK","exerciseRunner.submitErrorDialog.action.reload":"Reload page","exerciseRunner.submitErrorDialog.body.commonError":"An error occurred while running the code.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"You have exceeded the allowed number of lab submissions.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"The exercise image has been updated.\nPlease refresh and try again.","exerciseRunner.submitErrorDialog.body.networkError":"An error occurred while running the code.\nPlease refresh and try again.\nIf the problem persists, please check the network status.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"This exercise is not allowed to be submitted.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"The exercise room is being prepared.\nPlease try again later.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"The exercise room is running.\nPlease wait a moment.","exerciseRunner.submitErrorDialog.body.unknown":"An error occurred while running the code.\nPlease try again later.","exerciseRunner.submitErrorDialog.title":"Unable to run the code"};
2
2
 
3
3
  export { phrasesEn as default };
@@ -1,3 +1,3 @@
1
- var phrasesKo = {"exerciseRunner.controller.arduino.connectionStatus.connected":"아두이노 기기 연결됨","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"{device} 연결됨","exerciseRunner.controller.arduino.connectionStatus.connecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.disconnected":"엘리스 아두이노 에이전트 연결 끊김","exerciseRunner.controller.arduino.connectionStatus.noDevice":"연결된 기기 없음","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.uploading":"업로드 중","exerciseRunner.controller.arduino.agent.title":"에이전트 연결","exerciseRunner.controller.arduino.agent.instruction.install":"1. 엘리스 아두이노 에이전트 설치하기","exerciseRunner.controller.arduino.agent.instruction.install.detail":"아두이노와 연결하기 위해 ‘엘리스 아두이노 에이전트'를 설치해주세요.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Windows 용 설치","exerciseRunner.controller.arduino.agent.instruction.install.mac":"MacOS 용 설치","exerciseRunner.controller.arduino.agent.instruction.connect":"2. 연결하기","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"다운로드를 완료하였다면 실습 환경과 연결이 필요합니다. 연결되지 않을 경우 매뉴얼을 확인하세요.\n아래 버튼을 클릭해 매뉴얼을 확인하실 수 있습니다.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"매뉴얼 이동","exerciseRunner.controller.arduino.agent.instruction.close":"닫기","exerciseRunner.controller.buttonGroup.button.compile":"컴파일","exerciseRunner.controller.buttonGroup.button.helpRequest":"도와주세요","exerciseRunner.controller.buttonGroup.button.run":"실행","exerciseRunner.controller.buttonGroup.button.stop":"정지","exerciseRunner.controller.buttonGroup.button.submit":"제출","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"실행만 가능한 실습입니다.","exerciseRunner.controller.buttonGroup.button.syncRequest":"코드 동기화","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"AI에게 도움받기 기능이 추가되었어요.","exerciseRunner.controller.runningInfo.error.fetch":"최종 실행 내역을 가져오는데 문제가 발생하였습니다.","exerciseRunner.controller.runningInfo.lastRunningDatetime":"최종 실행 시간","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"최종 제출 시간","exerciseRunner.controller.runningInfo.lastSubmitScore":"최종 제출 점수","exerciseRunner.controller.runningInfo.score":"{score} 점","exerciseRunner.controller.statusMessage.closed":"에디터 연결 끊김","exerciseRunner.controller.statusMessage.connecting":"에디터 연결 중...","exerciseRunner.controller.statusMessage.open":"에디터 연결됨","exerciseRunner.controller.timer.runningRemainingTime":"실행 제한시간: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"확인","exerciseRunner.submitErrorDialog.action.reload":"새로고침","exerciseRunner.submitErrorDialog.body.commonError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"실습 제출 허용 횟수를 초과했습니다.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"실습환경이 업데이트 되었습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.networkError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.\n문제가 계속되면 네트워크 상태를 확인해주세요.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"제출이 허용되지 않은 실습입니다.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"실습환경이 준비 중입니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"실습을 실행하고 있습니다.\n잠시만 기다려주세요.","exerciseRunner.submitErrorDialog.body.unknown":"코드 실행 중 오류가 발생했습니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.title":"실습을 실행할 수 없습니다"};
1
+ var phrasesKo = {"exerciseRunner.controller.arduino.connectionStatus.connected":"아두이노 기기 연결됨","exerciseRunner.controller.arduino.connectionStatus.connectedDevice":"{device} 연결됨","exerciseRunner.controller.arduino.connectionStatus.connecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.disconnected":"엘리스 아두이노 에이전트 연결 끊김","exerciseRunner.controller.arduino.connectionStatus.noDevice":"연결된 기기 없음","exerciseRunner.controller.arduino.connectionStatus.reconnecting":"엘리스 아두이노 에이전트 연결 중","exerciseRunner.controller.arduino.connectionStatus.uploading":"업로드 중","exerciseRunner.controller.arduino.agent.title":"에이전트 연결","exerciseRunner.controller.arduino.agent.instruction.install":"1. 엘리스 아두이노 에이전트 설치하기","exerciseRunner.controller.arduino.agent.instruction.install.detail":"아두이노와 연결하기 위해 ‘엘리스 아두이노 에이전트'를 설치해주세요.","exerciseRunner.controller.arduino.agent.instruction.install.window":"Windows 용 설치","exerciseRunner.controller.arduino.agent.instruction.install.mac":"MacOS 용 설치","exerciseRunner.controller.arduino.agent.instruction.connect":"2. 연결하기","exerciseRunner.controller.arduino.agent.instruction.connect.detail":"다운로드를 완료하였다면 실습 환경과 연결이 필요합니다. 연결되지 않을 경우 매뉴얼을 확인하세요.\n아래 버튼을 클릭해 매뉴얼을 확인하실 수 있습니다.","exerciseRunner.controller.arduino.agent.instruction.connect.button":"매뉴얼 이동","exerciseRunner.controller.arduino.agent.instruction.close":"닫기","exerciseRunner.controller.buttonGroup.button.compile":"컴파일","exerciseRunner.controller.buttonGroup.button.helpRequest":"헬피에게 질문하기","exerciseRunner.controller.buttonGroup.button.run":"실행","exerciseRunner.controller.buttonGroup.button.stop":"정지","exerciseRunner.controller.buttonGroup.button.submit":"제출","exerciseRunner.controller.buttonGroup.button.submit.tooltip.noSubmit":"실행만 가능한 실습입니다.","exerciseRunner.controller.buttonGroup.button.syncRequest":"코드 동기화","exerciseRunner.controller.buttonGroup.button.tooltip.aiHelp":"궁금한 사항을 질문해 보세요.","exerciseRunner.controller.runningInfo.error.fetch":"최종 실행 내역을 가져오는데 문제가 발생하였습니다.","exerciseRunner.controller.runningInfo.lastRunningDatetime":"최종 실행 시간","exerciseRunner.controller.runningInfo.lastSubmitDatetime":"최종 제출 시간","exerciseRunner.controller.runningInfo.lastSubmitScore":"최종 제출 점수","exerciseRunner.controller.runningInfo.score":"{score} 점","exerciseRunner.controller.statusMessage.closed":"에디터 연결 끊김","exerciseRunner.controller.statusMessage.connecting":"에디터 연결 중...","exerciseRunner.controller.statusMessage.open":"에디터 연결됨","exerciseRunner.controller.timer.runningRemainingTime":"실행 제한시간: {remainingTime}","exerciseRunner.submitErrorDialog.action.confirm":"확인","exerciseRunner.submitErrorDialog.action.reload":"새로고침","exerciseRunner.submitErrorDialog.body.commonError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.exceedSubmitGradeLimit":"실습 제출 허용 횟수를 초과했습니다.","exerciseRunner.submitErrorDialog.body.expiredExerciseImage":"실습환경이 업데이트 되었습니다.\n새로고침 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.networkError":"코드 실행 중 오류가 발생했습니다.\n새로고침 후 다시 시도해주세요.\n문제가 계속되면 네트워크 상태를 확인해주세요.","exerciseRunner.submitErrorDialog.body.notForSubmitGrade":"제출이 허용되지 않은 실습입니다.","exerciseRunner.submitErrorDialog.body.notPreparedRoom":"실습환경이 준비 중입니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.body.roomIsBusy":"실습을 실행하고 있습니다.\n잠시만 기다려주세요.","exerciseRunner.submitErrorDialog.body.unknown":"코드 실행 중 오류가 발생했습니다.\n잠시 후 다시 시도해주세요.","exerciseRunner.submitErrorDialog.title":"실습을 실행할 수 없습니다"};
2
2
 
3
3
  export { phrasesKo as default };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elice/material-exercise",
3
- "version": "1.230504.0",
3
+ "version": "1.230516.0-helpidialogue.0",
4
4
  "description": "User view and editing components of Elice material exercise",
5
5
  "repository": "https://git.elicer.io/elice/frontend/library/elice-material",
6
6
  "license": "UNLICENSED",
@@ -29,14 +29,14 @@
29
29
  "clean": "del-cli \"es/*\" \"cjs/*\" \"dist/*\""
30
30
  },
31
31
  "peerDependencies": {
32
- "@elice/api-client": "^1.230413.0",
32
+ "@elice/api-client": "^1.230509.0-helpidialogue.1",
33
33
  "@elice/blocks": "^1.220803.0",
34
34
  "@elice/design-tokens": "^1.220803.0",
35
35
  "@elice/icons": "^1.220803.0",
36
36
  "@elice/markdown": "^1.220803.0",
37
37
  "@elice/material-shared-types": "*",
38
38
  "@elice/material-shared-utils": "*",
39
- "@elice/types": "^1.230417.0",
39
+ "@elice/types": "1.230509.0-helpidialogue.3",
40
40
  "@elice/websocket": "^1.220803.0",
41
41
  "humps": "^2.0.1",
42
42
  "lodash": "^4.17.21",
@@ -74,14 +74,14 @@
74
74
  "xterm-addon-fit": "^0.5.0"
75
75
  },
76
76
  "devDependencies": {
77
- "@elice/api-client": "^1.230413.0",
77
+ "@elice/api-client": "^1.230509.0-helpidialogue.1",
78
78
  "@elice/blocks": "^1.220803.0",
79
79
  "@elice/design-tokens": "^1.220803.0",
80
80
  "@elice/icons": "^1.220803.0",
81
81
  "@elice/markdown": "^1.220803.0",
82
82
  "@elice/material-shared-types": "1.230504.0",
83
83
  "@elice/material-shared-utils": "1.230504.0",
84
- "@elice/types": "^1.230417.0",
84
+ "@elice/types": "1.230509.0-helpidialogue.3",
85
85
  "@elice/websocket": "^1.220803.0",
86
86
  "@types/classnames": "^2.3.1",
87
87
  "@types/color": "^3.0.3",
@@ -102,5 +102,5 @@
102
102
  "recoil": "^0.6.1",
103
103
  "styled-components": "^5.2.0"
104
104
  },
105
- "gitHead": "d12a51842a8221b073e8ebfa5c937f4abea45422"
105
+ "gitHead": "20ce863a558b27b0d265b76633ea262b453ad935"
106
106
  }