@elice/material-runbox 1.231212.0 → 1.231228.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 (60) hide show
  1. package/cjs/assets/queue.gif.js +1 -1
  2. package/cjs/assets/runbox_logo.png.js +1 -1
  3. package/cjs/assets/terminated.png.js +1 -1
  4. package/cjs/components/material-runbox/MaterialRunbox.js +17 -19
  5. package/cjs/components/material-runbox/MaterialRunboxBody.js +15 -12
  6. package/cjs/components/material-runbox/MaterialRunboxContent.js +94 -101
  7. package/cjs/components/material-runbox/MaterialRunboxFooter.js +17 -22
  8. package/cjs/components/material-runbox/MaterialRunboxHeader.d.ts +3 -0
  9. package/cjs/components/material-runbox/MaterialRunboxHeader.js +77 -81
  10. package/cjs/components/material-runbox/actions/MaterialRunboxActionAutoShutdown.js +26 -22
  11. package/cjs/components/material-runbox/actions/MaterialRunboxActionGrade.js +140 -180
  12. package/cjs/components/material-runbox/actions/MaterialRunboxActionMenu.d.ts +8 -0
  13. package/cjs/components/material-runbox/actions/MaterialRunboxActionMenu.js +65 -0
  14. package/cjs/components/material-runbox/actions/MaterialRunboxActionReset.d.ts +3 -1
  15. package/cjs/components/material-runbox/actions/MaterialRunboxActionReset.js +73 -110
  16. package/cjs/components/material-runbox/actions/MaterialRunboxActionRestart.d.ts +3 -1
  17. package/cjs/components/material-runbox/actions/MaterialRunboxActionRestart.js +54 -70
  18. package/cjs/components/material-runbox/actions/MaterialRunboxActionShare.d.ts +4 -1
  19. package/cjs/components/material-runbox/actions/MaterialRunboxActionShare.js +67 -41
  20. package/cjs/components/material-runbox/contexts/MaterialRunboxApiContext.js +16 -27
  21. package/cjs/components/material-runbox/contexts/MaterialRunboxCommandContext.js +38 -53
  22. package/cjs/components/material-runbox/contexts/MaterialRunboxContext.js +9 -11
  23. package/cjs/components/material-runbox/hooks/useRunboxControl.js +39 -65
  24. package/cjs/components/material-runbox/locales/en.json.js +2 -2
  25. package/cjs/components/material-runbox/locales/index.js +2 -4
  26. package/cjs/components/material-runbox/locales/ko.json.js +2 -2
  27. package/cjs/components/material-runbox/runtime/Runtime.js +18 -26
  28. package/cjs/components/material-runbox/runtime/RuntimeOverlayAssigned.js +10 -17
  29. package/cjs/components/material-runbox/runtime/RuntimeOverlayQueued.js +16 -18
  30. package/cjs/components/material-runbox/runtime/RuntimeOverlayTerminated.js +27 -33
  31. package/cjs/index.js +1 -3
  32. package/es/components/material-runbox/MaterialRunbox.js +11 -9
  33. package/es/components/material-runbox/MaterialRunboxBody.js +13 -5
  34. package/es/components/material-runbox/MaterialRunboxContent.js +80 -82
  35. package/es/components/material-runbox/MaterialRunboxFooter.js +11 -11
  36. package/es/components/material-runbox/MaterialRunboxHeader.d.ts +3 -0
  37. package/es/components/material-runbox/MaterialRunboxHeader.js +72 -71
  38. package/es/components/material-runbox/actions/MaterialRunboxActionAutoShutdown.js +22 -13
  39. package/es/components/material-runbox/actions/MaterialRunboxActionGrade.js +120 -155
  40. package/es/components/material-runbox/actions/MaterialRunboxActionMenu.d.ts +8 -0
  41. package/es/components/material-runbox/actions/MaterialRunboxActionMenu.js +61 -0
  42. package/es/components/material-runbox/actions/MaterialRunboxActionReset.d.ts +3 -1
  43. package/es/components/material-runbox/actions/MaterialRunboxActionReset.js +65 -98
  44. package/es/components/material-runbox/actions/MaterialRunboxActionRestart.d.ts +3 -1
  45. package/es/components/material-runbox/actions/MaterialRunboxActionRestart.js +47 -59
  46. package/es/components/material-runbox/actions/MaterialRunboxActionShare.d.ts +4 -1
  47. package/es/components/material-runbox/actions/MaterialRunboxActionShare.js +68 -38
  48. package/es/components/material-runbox/contexts/MaterialRunboxApiContext.js +13 -20
  49. package/es/components/material-runbox/contexts/MaterialRunboxCommandContext.js +35 -46
  50. package/es/components/material-runbox/contexts/MaterialRunboxContext.js +6 -4
  51. package/es/components/material-runbox/hooks/useRunboxControl.js +39 -63
  52. package/es/components/material-runbox/locales/en.json.js +1 -1
  53. package/es/components/material-runbox/locales/ko.json.js +1 -1
  54. package/es/components/material-runbox/runtime/Runtime.js +14 -18
  55. package/es/components/material-runbox/runtime/RuntimeOverlayAssigned.js +3 -6
  56. package/es/components/material-runbox/runtime/RuntimeOverlayQueued.js +6 -4
  57. package/es/components/material-runbox/runtime/RuntimeOverlayTerminated.js +12 -14
  58. package/package.json +13 -9
  59. package/cjs/_virtual/_rollupPluginBabelHelpers.js +0 -399
  60. package/es/_virtual/_rollupPluginBabelHelpers.js +0 -387
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
5
+ var _styled = require('@emotion/styled/base');
6
6
  var React = require('react');
7
7
  var reactIntl = require('react-intl');
8
8
  var blocks = require('@elice/blocks');
9
9
  var runboxClient = require('@elice/runbox-client');
10
- var styled = require('@emotion/styled');
11
10
  var iconsMaterial = require('@mui/icons-material');
12
11
  var material = require('@mui/material');
13
12
  var reactQuery = require('@tanstack/react-query');
@@ -18,141 +17,135 @@ var MaterialRunboxBody = require('./MaterialRunboxBody.js');
18
17
  var MaterialRunboxFooter = require('./MaterialRunboxFooter.js');
19
18
  var MaterialRunboxHeader = require('./MaterialRunboxHeader.js');
20
19
 
21
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
-
23
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
25
-
26
- var _templateObject;
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)."; }
27
21
  //
28
22
  //
29
23
  //
30
- var DEFAULT_DATA = [null, null, null];
24
+ const DEFAULT_DATA = [null, null, null];
31
25
  //
32
26
  //
33
27
  //
34
- var StyledRunboxContainer = styled__default["default"].div(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n"])));
28
+ const StyledRunboxContainer = /*#__PURE__*/_styled("div", {
29
+ target: "eeh98mq0"
30
+ })("production" === "production" ? {
31
+ name: "t5t5sq",
32
+ styles: "display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%"
33
+ } : {
34
+ name: "t5t5sq",
35
+ styles: "display:flex;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%",
36
+ toString: _EMOTION_STRINGIFIED_CSS_ERROR__
37
+ });
35
38
  //
36
39
  //
37
40
  //
38
- var MaterialRunboxContent = function MaterialRunboxContent(_ref) {
39
- var runboxId = _ref.runboxId,
40
- courseId = _ref.courseId;
41
- var _useMaterialRunboxCon = MaterialRunboxContext.useMaterialRunboxContext(),
42
- locale = _useMaterialRunboxCon.locale,
43
- showMessenger = _useMaterialRunboxCon.showMessenger;
44
- var materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
41
+ const MaterialRunboxContent = ({
42
+ runboxId,
43
+ courseId
44
+ }) => {
45
+ const {
46
+ locale,
47
+ showMessenger
48
+ } = MaterialRunboxContext.useMaterialRunboxContext();
49
+ const materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
45
50
  //
46
51
  //
47
52
  //
48
- var _useQuery = reactQuery.useQuery({
49
- enabled: Boolean(runboxId),
50
- queryKey: ['eliceMaterialRunboxRunboxApi.runboxRunboxIdGet', 'eliceMaterialRunboxRuntimeTemplateApi.runtimeTemplateRuntimeTemplateIdGet', runboxId, courseId],
51
- queryFn: function queryFn(_ref2) {
52
- var signal = _ref2.signal;
53
- return materialRunboxApi.runbox.runboxRunboxIdGet({
54
- runboxId: runboxId,
55
- eliceCourseId: courseId
56
- }, {
57
- signal: signal
58
- }).then(function (runbox) {
59
- return Promise.all([
60
- // runbox
61
- runbox,
62
- // runtime
63
- materialRunboxApi.runtime.runtimeGet({
64
- filterImageId: runbox.imageId,
65
- filterRuntimeTemplateId: runbox.runtimeTemplateId,
66
- skip: 0,
67
- count: 1,
68
- eliceCourseId: courseId
69
- }, {
70
- signal: signal
71
- }).then(function (runtimes) {
72
- var _a;
73
- return (_a = runtimes[0]) !== null && _a !== void 0 ? _a : null;
74
- }),
75
- // runtimeTemplate
76
- materialRunboxApi.runtimeTemplate.runtimeTemplateRuntimeTemplateIdGet({
77
- runtimeTemplateId: runbox.runtimeTemplateId,
78
- eliceCourseId: courseId
79
- }, {
80
- signal: signal
81
- })]);
82
- });
83
- },
84
- cacheTime: 0,
85
- keepPreviousData: true,
86
- refetchOnWindowFocus: false
53
+ const {
54
+ data: [runbox, runtime, runtimeTemplate] = DEFAULT_DATA,
55
+ isInitialLoading,
56
+ isError,
57
+ refetch
58
+ } = reactQuery.useQuery({
59
+ enabled: Boolean(runboxId),
60
+ queryKey: ['eliceMaterialRunboxRunboxApi.runboxRunboxIdGet', 'eliceMaterialRunboxRuntimeTemplateApi.runtimeTemplateRuntimeTemplateIdGet', runboxId, courseId],
61
+ queryFn: ({
62
+ signal
63
+ }) => materialRunboxApi.runbox.runboxRunboxIdGet({
64
+ runboxId: runboxId,
65
+ eliceCourseId: courseId
66
+ }, {
67
+ signal
68
+ }).then(runbox => Promise.all([
69
+ // runbox
70
+ runbox,
71
+ // runtime
72
+ materialRunboxApi.runtime.runtimeGet({
73
+ filterImageId: runbox.imageId,
74
+ filterRuntimeTemplateId: runbox.runtimeTemplateId,
75
+ skip: 0,
76
+ count: 1,
77
+ eliceCourseId: courseId
78
+ }, {
79
+ signal
80
+ }).then(runtimes => {
81
+ var _a;
82
+ return (_a = runtimes[0]) !== null && _a !== void 0 ? _a : null;
87
83
  }),
88
- _useQuery$data = _useQuery.data,
89
- _useQuery$data2 = _useQuery$data === void 0 ? DEFAULT_DATA : _useQuery$data,
90
- _useQuery$data3 = _rollupPluginBabelHelpers.slicedToArray(_useQuery$data2, 3),
91
- runbox = _useQuery$data3[0],
92
- runtime = _useQuery$data3[1],
93
- runtimeTemplate = _useQuery$data3[2],
94
- isInitialLoading = _useQuery.isInitialLoading,
95
- isError = _useQuery.isError,
96
- refetch = _useQuery.refetch;
84
+ // runtimeTemplate
85
+ materialRunboxApi.runtimeTemplate.runtimeTemplateRuntimeTemplateIdGet({
86
+ runtimeTemplateId: runbox.runtimeTemplateId,
87
+ eliceCourseId: courseId
88
+ }, {
89
+ signal
90
+ })])),
91
+ cacheTime: 0,
92
+ keepPreviousData: true,
93
+ refetchOnWindowFocus: false
94
+ });
97
95
  //
98
96
  //
99
97
  //
100
98
  if (isInitialLoading) {
101
- return React__default["default"].createElement(StyledRunboxContainer, null, React__default["default"].createElement(blocks.Spinner, null));
99
+ return React.createElement(StyledRunboxContainer, null, React.createElement(blocks.Spinner, null));
102
100
  }
103
101
  if (isError) {
104
- return React__default["default"].createElement(StyledRunboxContainer, null, React__default["default"].createElement(material.Stack, {
102
+ return React.createElement(StyledRunboxContainer, null, React.createElement(material.Stack, {
105
103
  gap: "1.5rem"
106
- }, React__default["default"].createElement(material.Typography, {
104
+ }, React.createElement(material.Typography, {
107
105
  variant: "h6"
108
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
106
+ }, React.createElement(reactIntl.FormattedMessage, {
109
107
  id: "runbox.runtime.message.startError"
110
- })), React__default["default"].createElement(material.Stack, {
108
+ })), React.createElement(material.Stack, {
111
109
  gap: "0.5rem"
112
- }, React__default["default"].createElement(material.Button, {
113
- startIcon: React__default["default"].createElement(iconsMaterial.Refresh, null),
114
- onClick: function onClick() {
115
- return refetch();
116
- }
117
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
110
+ }, React.createElement(material.Button, {
111
+ startIcon: React.createElement(iconsMaterial.Refresh, null),
112
+ onClick: () => refetch()
113
+ }, React.createElement(reactIntl.FormattedMessage, {
118
114
  id: "runbox.common.retry"
119
- })), typeof showMessenger === 'function' ? React__default["default"].createElement(material.Button, {
115
+ })), typeof showMessenger === 'function' ? React.createElement(material.Button, {
120
116
  variant: "outlined",
121
- onClick: function onClick() {
122
- return showMessenger();
123
- }
124
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
117
+ onClick: () => showMessenger()
118
+ }, React.createElement(reactIntl.FormattedMessage, {
125
119
  id: "runbox.common.support"
126
120
  })) : null)));
127
121
  }
128
122
  if (!runbox || !runtimeTemplate) {
129
123
  return null;
130
124
  }
131
- var props = {
132
- runbox: runbox,
133
- runtime: runtime,
134
- runtimeTemplate: runtimeTemplate,
135
- courseId: courseId,
136
- refetch: refetch
125
+ const props = {
126
+ runbox,
127
+ runtime,
128
+ runtimeTemplate,
129
+ courseId,
130
+ refetch
137
131
  };
138
- return React__default["default"].createElement(MaterialRunboxCommandContext["default"], {
132
+ return React.createElement(MaterialRunboxCommandContext.default, {
139
133
  runtime: runtime,
140
134
  courseId: courseId
141
- }, React__default["default"].createElement(runboxClient.EliceRunboxProvider, {
135
+ }, React.createElement(runboxClient.EliceRunboxProvider, {
142
136
  runboxId: runbox.id,
143
- runboxApiHeartbeat: function runboxApiHeartbeat(_ref3) {
144
- var id = _ref3.id,
145
- signal = _ref3.signal;
146
- return materialRunboxApi.runbox.runboxRunboxIdHeartbeatPost({
147
- runboxId: id,
148
- eliceCourseId: courseId
149
- }, {
150
- signal: signal
151
- });
152
- },
137
+ runboxApiHeartbeat: ({
138
+ id,
139
+ signal
140
+ }) => materialRunboxApi.runbox.runboxRunboxIdHeartbeatPost({
141
+ runboxId: id,
142
+ eliceCourseId: courseId
143
+ }, {
144
+ signal
145
+ }),
153
146
  locale: locale,
154
147
  onRunboxRefetchRequest: refetch
155
- }, React__default["default"].createElement(StyledRunboxContainer, null, React__default["default"].createElement(MaterialRunboxHeader["default"], Object.assign({}, props)), React__default["default"].createElement(MaterialRunboxBody["default"], Object.assign({}, props)), React__default["default"].createElement(MaterialRunboxFooter["default"], Object.assign({}, props)))));
148
+ }, React.createElement(StyledRunboxContainer, null, React.createElement(MaterialRunboxHeader.default, Object.assign({}, props)), React.createElement(MaterialRunboxBody.default, Object.assign({}, props)), React.createElement(MaterialRunboxFooter.default, Object.assign({}, props)))));
156
149
  };
157
150
 
158
- exports["default"] = MaterialRunboxContent;
151
+ exports.default = MaterialRunboxContent;
@@ -2,56 +2,51 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
5
+ var _styled = require('@emotion/styled/base');
6
6
  var React = require('react');
7
7
  var runboxClient = require('@elice/runbox-client');
8
- var styled = require('@emotion/styled');
9
8
  var material = require('@mui/material');
10
9
 
11
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
-
13
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
15
-
16
- var _templateObject;
17
10
  //
18
11
  //
19
12
  //
20
- var StyledFooter = styled__default["default"].div(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n position: relative;\n flex: 0 0 2rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 1rem;\n width: 100%;\n border-top: 1px solid ", ";\n"])), function (_ref) {
21
- var theme = _ref.theme;
22
- return theme.palette.divider;
23
- });
13
+ const StyledFooter = /*#__PURE__*/_styled("div", {
14
+ target: "e9lbhtr0"
15
+ })("position:relative;flex:0 0 2rem;display:flex;justify-content:space-between;align-items:center;padding:0 1rem;width:100%;border-top:1px solid ", ({
16
+ theme
17
+ }) => theme.palette.divider, ";");
24
18
  //
25
19
  //
26
20
  //
27
- var MaterialRunboxFooter = function MaterialRunboxFooter(_ref2) {
28
- var runtimeTemplate = _ref2.runtimeTemplate;
21
+ const MaterialRunboxFooter = ({
22
+ runtimeTemplate
23
+ }) => {
29
24
  /**
30
25
  * Resource stats
31
26
  */
32
- var renderFooterResourceStats = function renderFooterResourceStats() {
27
+ const renderFooterResourceStats = () => {
33
28
  var _a, _b;
34
- return React__default["default"].createElement(material.Box, null, React__default["default"].createElement(runboxClient.EliceRunboxResourceStat, {
29
+ return React.createElement(material.Box, null, React.createElement(runboxClient.EliceRunboxResourceStat, {
35
30
  gpu: ((_b = (_a = runtimeTemplate.gpus) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0
36
31
  }));
37
32
  };
38
33
  /**
39
34
  * Status
40
35
  */
41
- var renderFooterStatus = function renderFooterStatus() {
42
- return React__default["default"].createElement(material.Stack, {
36
+ const renderFooterStatus = () => {
37
+ return React.createElement(material.Stack, {
43
38
  direction: "row",
44
39
  gap: "0.5rem",
45
- divider: React__default["default"].createElement(material.Divider, {
40
+ divider: React.createElement(material.Divider, {
46
41
  orientation: "vertical",
47
42
  flexItem: true
48
43
  })
49
- }, React__default["default"].createElement(runboxClient.EliceRunboxRemainingTimer, null), React__default["default"].createElement(runboxClient.EliceRunboxNetworkStat, null), React__default["default"].createElement(runboxClient.EliceRunboxRunningStatus, null));
44
+ }, React.createElement(runboxClient.EliceRunboxRemainingTimer, null), React.createElement(runboxClient.EliceRunboxNetworkStat, null), React.createElement(runboxClient.EliceRunboxRunningStatus, null));
50
45
  };
51
46
  //
52
47
  //
53
48
  //
54
- return React__default["default"].createElement(StyledFooter, null, renderFooterResourceStats(), renderFooterStatus());
49
+ return React.createElement(StyledFooter, null, renderFooterResourceStats(), renderFooterStatus());
55
50
  };
56
51
 
57
- exports["default"] = MaterialRunboxFooter;
52
+ exports.default = MaterialRunboxFooter;
@@ -1,4 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { RuntimeProps } from './runtime/Runtime';
3
+ export type RunboxHeaderOptionProps = {
4
+ onMenuClose: () => void;
5
+ };
3
6
  declare const MaterialRunboxHeader: React.FC<RuntimeProps>;
4
7
  export default MaterialRunboxHeader;
@@ -2,81 +2,81 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
5
+ var _styled = require('@emotion/styled/base');
6
6
  var React = require('react');
7
7
  var reactIntl = require('react-intl');
8
8
  var muiElements = require('@elice/mui-elements');
9
- var styled = require('@emotion/styled');
9
+ var runboxClient = require('@elice/runbox-client');
10
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
10
11
  var material = require('@mui/material');
11
12
  var reactQuery = require('@tanstack/react-query');
12
13
  var MaterialRunboxActionAutoShutdown = require('./actions/MaterialRunboxActionAutoShutdown.js');
13
14
  var MaterialRunboxActionGrade = require('./actions/MaterialRunboxActionGrade.js');
14
- var MaterialRunboxActionReset = require('./actions/MaterialRunboxActionReset.js');
15
- var MaterialRunboxActionRestart = require('./actions/MaterialRunboxActionRestart.js');
16
- var MaterialRunboxActionShare = require('./actions/MaterialRunboxActionShare.js');
15
+ var MaterialRunboxActionMenu = require('./actions/MaterialRunboxActionMenu.js');
17
16
  var MaterialRunboxApiContext = require('./contexts/MaterialRunboxApiContext.js');
18
17
  require('./contexts/MaterialRunboxCommandContext.js');
19
18
  var MaterialRunboxContext = require('./contexts/MaterialRunboxContext.js');
20
19
  var runbox_logo = require('../../assets/runbox_logo.png.js');
21
20
 
22
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
-
24
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
25
- var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
26
-
27
- var _templateObject;
28
- //
29
- //
21
+ const StyledHeader = /*#__PURE__*/_styled("div", {
22
+ target: "e110d0bp0"
23
+ })("position:relative;flex:0 0 3rem;display:flex;justify-content:space-between;align-items:center;padding:0 1rem;width:100%;border-bottom:1px solid ", ({
24
+ theme
25
+ }) => theme.palette.divider, ";overflow:hidden;");
30
26
  //
31
- var StyledHeader = styled__default["default"].div(_templateObject || (_templateObject = _rollupPluginBabelHelpers.taggedTemplateLiteral(["\n position: relative;\n flex: 0 0 3rem;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 1rem;\n width: 100%;\n border-bottom: 1px solid ", ";\n overflow: hidden;\n"])), function (_ref) {
32
- var theme = _ref.theme;
33
- return theme.palette.divider;
34
- });
35
27
  //
36
28
  //
37
- //
38
- var MaterialRunboxHeader = function MaterialRunboxHeader(_ref2) {
39
- var runbox = _ref2.runbox,
40
- runtime = _ref2.runtime,
41
- runtimeTemplate = _ref2.runtimeTemplate,
42
- courseId = _ref2.courseId,
43
- refetch = _ref2.refetch;
44
- var _useMaterialRunboxCon = MaterialRunboxContext.useMaterialRunboxContext(),
45
- enableAutoShutdownToggle = _useMaterialRunboxCon.enableAutoShutdownToggle,
46
- enableUrlShare = _useMaterialRunboxCon.enableUrlShare;
47
- var materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
48
- var leaderboardSubmitInfoQuery = reactQuery.useQuery({
29
+ const MaterialRunboxHeader = ({
30
+ runbox,
31
+ runtime,
32
+ runtimeTemplate,
33
+ courseId,
34
+ refetch
35
+ }) => {
36
+ const {
37
+ enableAutoShutdownToggle
38
+ } = MaterialRunboxContext.useMaterialRunboxContext();
39
+ const [menuAnchorEl, setMenuAnchorEl] = React.useState(null);
40
+ const {
41
+ status
42
+ } = runboxClient.useEliceRunboxRunning();
43
+ const isRunboxRunning = status === 'running';
44
+ /**
45
+ *
46
+ */
47
+ const handleMenuClose = () => {
48
+ setMenuAnchorEl(null);
49
+ };
50
+ const materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
51
+ const leaderboardSubmitInfoQuery = reactQuery.useQuery({
49
52
  queryKey: ['eliceMaterialRunboxRunboxApi.runboxRunboxIdSubmitInfoGet', {
50
- courseId: courseId,
51
- runtime: runtime
53
+ courseId,
54
+ runtime
52
55
  }],
53
- queryFn: function queryFn(_ref3) {
54
- var signal = _ref3.signal;
55
- return materialRunboxApi.runbox.runboxRunboxIdSubmitInfoGet({
56
- eliceCourseId: courseId,
57
- runboxId: runtime === null || runtime === void 0 ? void 0 : runtime.runboxId
58
- }, {
59
- signal: signal
60
- });
61
- },
62
- refetchInterval: function refetchInterval(data) {
63
- return !(data === null || data === void 0 ? void 0 : data.remainSubmitCount) ? false : 5 * 1000;
64
- },
56
+ queryFn: ({
57
+ signal
58
+ }) => materialRunboxApi.runbox.runboxRunboxIdSubmitInfoGet({
59
+ eliceCourseId: courseId,
60
+ runboxId: runtime === null || runtime === void 0 ? void 0 : runtime.runboxId
61
+ }, {
62
+ signal
63
+ }),
64
+ refetchInterval: data => !(data === null || data === void 0 ? void 0 : data.remainSubmitCount) ? false : 5 * 1000,
65
65
  enabled: Boolean(runtime === null || runtime === void 0 ? void 0 : runtime.runboxId),
66
66
  retry: false
67
67
  });
68
68
  /**
69
69
  *
70
70
  */
71
- var renderHeaderSubmitInfo = function renderHeaderSubmitInfo() {
71
+ const renderHeaderSubmitInfo = () => {
72
72
  var _a, _b;
73
- var remainSubmitCount = (_a = leaderboardSubmitInfoQuery.data) === null || _a === void 0 ? void 0 : _a.remainSubmitCount;
74
- var totalSubmitCount = (_b = leaderboardSubmitInfoQuery.data) === null || _b === void 0 ? void 0 : _b.submitCountLimit;
73
+ const remainSubmitCount = (_a = leaderboardSubmitInfoQuery.data) === null || _a === void 0 ? void 0 : _a.remainSubmitCount;
74
+ const totalSubmitCount = (_b = leaderboardSubmitInfoQuery.data) === null || _b === void 0 ? void 0 : _b.submitCountLimit;
75
75
  if (leaderboardSubmitInfoQuery.isInitialLoading || remainSubmitCount === null) {
76
76
  return null;
77
77
  }
78
- return React__default["default"].createElement(muiElements.Tag, {
79
- label: React__default["default"].createElement(reactIntl.FormattedMessage, {
78
+ return React.createElement(muiElements.Tag, {
79
+ label: React.createElement(reactIntl.FormattedMessage, {
80
80
  id: "runbox.header.submitInfo",
81
81
  values: {
82
82
  remainCount: remainSubmitCount,
@@ -90,11 +90,11 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref2) {
90
90
  /**
91
91
  *
92
92
  */
93
- var renderHeaderActionAutoShutdown = function renderHeaderActionAutoShutdown() {
93
+ const renderHeaderActionAutoShutdown = () => {
94
94
  if (!enableAutoShutdownToggle) {
95
95
  return null;
96
96
  }
97
- return React__default["default"].createElement(MaterialRunboxActionAutoShutdown["default"], {
97
+ return React.createElement(MaterialRunboxActionAutoShutdown.default, {
98
98
  runtime: runtime,
99
99
  runtimeTemplate: runtimeTemplate,
100
100
  courseId: courseId,
@@ -104,27 +104,11 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref2) {
104
104
  /**
105
105
  *
106
106
  */
107
- var renderHeaderActionShare = function renderHeaderActionShare() {
108
- if (!enableUrlShare) {
107
+ const renderHeaderActionGrade = () => {
108
+ if (!runbox.submission.enabled) {
109
109
  return null;
110
110
  }
111
- return React__default["default"].createElement(MaterialRunboxActionShare["default"], null);
112
- };
113
- /**
114
- *
115
- */
116
- var renderHeaderActionRestart = function renderHeaderActionRestart() {
117
- return React__default["default"].createElement(MaterialRunboxActionRestart["default"], {
118
- runbox: runbox,
119
- courseId: courseId,
120
- refetch: refetch
121
- });
122
- };
123
- /**
124
- *
125
- */
126
- var renderHeaderActionReset = function renderHeaderActionReset() {
127
- return React__default["default"].createElement(MaterialRunboxActionReset["default"], {
111
+ return React.createElement(MaterialRunboxActionGrade.default, {
128
112
  runtime: runtime,
129
113
  courseId: courseId
130
114
  });
@@ -132,21 +116,33 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref2) {
132
116
  /**
133
117
  *
134
118
  */
135
- var renderHeaderActionGrade = function renderHeaderActionGrade() {
136
- if (!runbox.submission.enabled) {
137
- return null;
138
- }
139
- return React__default["default"].createElement(MaterialRunboxActionGrade["default"], {
119
+ const renderOptionMenu = () => {
120
+ return React.createElement(React.Fragment, null, React.createElement(material.IconButton, {
121
+ disabled: !isRunboxRunning,
122
+ onClick: e => {
123
+ if (Boolean(menuAnchorEl)) {
124
+ setMenuAnchorEl(null);
125
+ } else {
126
+ setMenuAnchorEl(e.currentTarget);
127
+ }
128
+ }
129
+ }, React.createElement(muiElements.EliceIcon, {
130
+ icon: proSolidSvgIcons.faEllipsisVertical
131
+ })), React.createElement(MaterialRunboxActionMenu.default, {
132
+ runbox: runbox,
140
133
  runtime: runtime,
141
- courseId: courseId
142
- });
134
+ courseId: courseId,
135
+ menuAnchorEl: menuAnchorEl,
136
+ refetch: refetch,
137
+ handleMenuClose: handleMenuClose
138
+ }));
143
139
  };
144
140
  //
145
141
  //
146
142
  //
147
- return React__default["default"].createElement(StyledHeader, null, React__default["default"].createElement(material.Box, {
143
+ return React.createElement(StyledHeader, null, React.createElement(material.Box, {
148
144
  component: "img",
149
- src: runbox_logo["default"],
145
+ src: runbox_logo.default,
150
146
  alt: "elice runbox",
151
147
  sx: {
152
148
  width: 'auto',
@@ -154,11 +150,11 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref2) {
154
150
  imageRendering: 'auto',
155
151
  padding: '0.465rem 0'
156
152
  }
157
- }), React__default["default"].createElement(material.Stack, {
153
+ }), React.createElement(material.Stack, {
158
154
  direction: "row",
159
155
  alignItems: "center",
160
156
  gap: "0.5rem"
161
- }, renderHeaderSubmitInfo(), renderHeaderActionAutoShutdown(), renderHeaderActionShare(), renderHeaderActionRestart(), renderHeaderActionReset(), renderHeaderActionGrade()));
157
+ }, renderHeaderSubmitInfo(), renderHeaderActionAutoShutdown(), renderOptionMenu(), renderHeaderActionGrade()));
162
158
  };
163
159
 
164
- exports["default"] = MaterialRunboxHeader;
160
+ exports.default = MaterialRunboxHeader;