@elice/material-runbox 1.231227.0 → 1.240112.0-cloud.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,160 +2,123 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var reactIntl = require('react-intl');
7
+ var muiElements = require('@elice/mui-elements');
8
+ var muiXSnackbar = require('@elice/mui-x-snackbar');
8
9
  var openapiClientMaterialRunbox = require('@elice/openapi-client-material-runbox');
9
- var runboxClient = require('@elice/runbox-client');
10
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
10
11
  var lab = require('@mui/lab');
11
12
  var material = require('@mui/material');
12
- var notistack = require('notistack');
13
13
  var MaterialRunboxApiContext = require('../contexts/MaterialRunboxApiContext.js');
14
14
  var MaterialRunboxCommandContext = require('../contexts/MaterialRunboxCommandContext.js');
15
15
  require('../contexts/MaterialRunboxContext.js');
16
16
 
17
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
-
19
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
-
21
17
  //
22
18
  //
23
19
  //
24
- var MaterialRunboxActionReset = function MaterialRunboxActionReset(_ref) {
25
- var runtime = _ref.runtime,
26
- courseId = _ref.courseId;
27
- var _useSnackbar = notistack.useSnackbar(),
28
- enqueueSnackbar = _useSnackbar.enqueueSnackbar;
29
- var intl = reactIntl.useIntl();
30
- var materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
31
- var _useMaterialRunboxCom = MaterialRunboxCommandContext.useMaterialRunboxCommandContext(),
32
- isLastCommandRunning = _useMaterialRunboxCom.isLastCommandRunning,
33
- lastCommand = _useMaterialRunboxCom.lastCommand,
34
- setCommandIdToPing = _useMaterialRunboxCom.setCommandIdToPing;
35
- var _useEliceRunboxRunnin = runboxClient.useEliceRunboxRunning(),
36
- status = _useEliceRunboxRunnin.status;
37
- var isRunboxRunning = status === 'running';
38
- var _React$useState = React__default["default"].useState(false),
39
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
40
- isConfirmDialogOpen = _React$useState2[0],
41
- setConfirmDialogOpen = _React$useState2[1];
42
- var _React$useState3 = React__default["default"].useState(false),
43
- _React$useState4 = _rollupPluginBabelHelpers.slicedToArray(_React$useState3, 2),
44
- isActionLoading = _React$useState4[0],
45
- setActionLoading = _React$useState4[1];
20
+ const MaterialRunboxActionReset = ({
21
+ runtime,
22
+ courseId,
23
+ handleMenuClose
24
+ }) => {
25
+ const intl = reactIntl.useIntl();
26
+ const {
27
+ enqueueSnackbar
28
+ } = muiXSnackbar.useSnackbar();
29
+ const materialRunboxApi = MaterialRunboxApiContext.useMaterialRunboxApiContext();
30
+ const [isLoading, setLoading] = React.useState(false);
31
+ const [isDialogOpened, setDialogOpened] = React.useState(false);
32
+ const {
33
+ isLastCommandRunning,
34
+ setCommandIdToPing
35
+ } = MaterialRunboxCommandContext.useMaterialRunboxCommandContext();
46
36
  /**
47
37
  *
48
38
  */
49
- var handleConfirmDialogOpen = function handleConfirmDialogOpen() {
50
- setConfirmDialogOpen(true);
39
+ const handleDialogClose = () => {
40
+ setDialogOpened(false);
51
41
  };
52
42
  /**
53
43
  *
54
44
  */
55
- var handleConfirmDialogClose = function handleConfirmDialogClose() {
56
- setConfirmDialogOpen(false);
57
- };
58
- /**
59
- *
60
- */
61
- var handleAction = /*#__PURE__*/function () {
62
- var _ref2 = _rollupPluginBabelHelpers.asyncToGenerator( /*#__PURE__*/_rollupPluginBabelHelpers.regeneratorRuntime().mark(function _callee() {
63
- var runtimeId, _yield$materialRunbox, commentId;
64
- return _rollupPluginBabelHelpers.regeneratorRuntime().wrap(function _callee$(_context) {
65
- while (1) switch (_context.prev = _context.next) {
66
- case 0:
67
- setActionLoading(true);
68
- _context.prev = 1;
69
- runtimeId = runtime === null || runtime === void 0 ? void 0 : runtime.id;
70
- _context.next = 5;
71
- return materialRunboxApi.runtime.runtimeRuntimeIdCommandPost({
72
- runtimeId: runtimeId,
73
- eliceCourseId: courseId,
74
- runboxCommandPostRequest: {
75
- commandType: openapiClientMaterialRunbox.CommandType.ProjectFileReset
76
- }
77
- });
78
- case 5:
79
- _yield$materialRunbox = _context.sent;
80
- commentId = _yield$materialRunbox.id;
81
- setCommandIdToPing(commentId);
82
- handleConfirmDialogClose();
83
- _context.next = 14;
84
- break;
85
- case 11:
86
- _context.prev = 11;
87
- _context.t0 = _context["catch"](1);
88
- enqueueSnackbar(intl.formatMessage({
89
- id: 'runbox.action.reset.noti.error'
90
- }), {
91
- variant: 'error'
92
- });
93
- case 14:
94
- _context.prev = 14;
95
- setActionLoading(false);
96
- return _context.finish(14);
97
- case 17:
98
- case "end":
99
- return _context.stop();
45
+ const handleReset = async () => {
46
+ setLoading(true);
47
+ try {
48
+ const runtimeId = runtime === null || runtime === void 0 ? void 0 : runtime.id;
49
+ const {
50
+ id: commentId
51
+ } = await materialRunboxApi.runtime.runtimeRuntimeIdCommandPost({
52
+ runtimeId,
53
+ eliceCourseId: courseId,
54
+ runboxCommandPostRequest: {
55
+ commandType: openapiClientMaterialRunbox.CommandType.ProjectFileReset
100
56
  }
101
- }, _callee, null, [[1, 11, 14, 17]]);
102
- }));
103
- return function handleAction() {
104
- return _ref2.apply(this, arguments);
105
- };
106
- }();
57
+ });
58
+ setCommandIdToPing(commentId);
59
+ handleDialogClose();
60
+ } catch (err) {
61
+ enqueueSnackbar(intl.formatMessage({
62
+ id: 'runbox.action.reset.noti.error'
63
+ }), {
64
+ variant: 'error'
65
+ });
66
+ } finally {
67
+ setLoading(false);
68
+ }
69
+ };
107
70
  /**
108
71
  *
109
72
  */
110
- var renderActionButton = function renderActionButton() {
111
- var isResetType = (lastCommand === null || lastCommand === void 0 ? void 0 : lastCommand.commandType) === openapiClientMaterialRunbox.CommandType.ProjectFileReset;
112
- return React__default["default"].createElement(lab.LoadingButton, {
113
- variant: "contained",
114
- color: "inherit",
115
- loading: isActionLoading || isLastCommandRunning && isResetType,
116
- disabled: !isRunboxRunning || isLastCommandRunning,
117
- size: "small",
118
- onClick: handleConfirmDialogOpen
119
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
73
+ const renderResetMenuItem = () => {
74
+ return React.createElement(material.MenuItem, {
75
+ onClick: () => setDialogOpened(true),
76
+ disabled: isLastCommandRunning
77
+ }, React.createElement(material.ListItemIcon, null, React.createElement(muiElements.EliceIcon, {
78
+ icon: proSolidSvgIcons.faRefresh
79
+ })), React.createElement(material.ListItemText, null, React.createElement(reactIntl.FormattedMessage, {
120
80
  id: "runbox.action.reset.title"
121
- }));
81
+ })));
122
82
  };
123
83
  /**
124
84
  *
125
85
  */
126
- var renderActionConfirmDialog = function renderActionConfirmDialog() {
127
- return React__default["default"].createElement(material.Dialog, {
128
- open: isConfirmDialogOpen,
86
+ const renderConfirmDialog = () => {
87
+ if (!isDialogOpened) {
88
+ return null;
89
+ }
90
+ return React.createElement(material.Dialog, {
91
+ open: true,
129
92
  maxWidth: "xs",
130
93
  fullWidth: true,
131
- onClose: handleConfirmDialogClose
132
- }, React__default["default"].createElement(material.DialogTitle, null, React__default["default"].createElement(reactIntl.FormattedMessage, {
94
+ onClose: handleDialogClose
95
+ }, React.createElement(material.DialogTitle, null, React.createElement(reactIntl.FormattedMessage, {
133
96
  id: "runbox.action.reset.title"
134
- })), React__default["default"].createElement(material.DialogContent, null, React__default["default"].createElement(material.DialogContentText, {
97
+ })), React.createElement(material.DialogContent, null, React.createElement(material.DialogContentText, {
135
98
  sx: {
136
99
  whiteSpace: 'pre-line'
137
100
  }
138
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
101
+ }, React.createElement(reactIntl.FormattedMessage, {
139
102
  id: "runbox.action.reset.dialog.description"
140
- }))), React__default["default"].createElement(material.DialogActions, null, React__default["default"].createElement(material.Button, {
103
+ }))), React.createElement(material.DialogActions, null, React.createElement(material.Button, {
141
104
  color: "inherit",
142
- disabled: isActionLoading,
143
- onClick: handleConfirmDialogClose
144
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
105
+ disabled: isLoading,
106
+ onClick: handleDialogClose
107
+ }, React.createElement(reactIntl.FormattedMessage, {
145
108
  id: "runbox.common.close"
146
- })), React__default["default"].createElement(lab.LoadingButton, {
109
+ })), React.createElement(lab.LoadingButton, {
147
110
  variant: "contained",
148
111
  color: "warning",
149
- loading: isActionLoading,
150
- onClick: handleAction
151
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
112
+ loading: isLoading || isLastCommandRunning,
113
+ onClick: handleReset
114
+ }, React.createElement(reactIntl.FormattedMessage, {
152
115
  id: "runbox.action.reset.dialog.actions.confirm"
153
116
  }))));
154
117
  };
155
118
  //
156
119
  //
157
120
  //
158
- return React__default["default"].createElement(React__default["default"].Fragment, null, renderActionButton(), renderActionConfirmDialog());
121
+ return React.createElement(React.Fragment, null, renderResetMenuItem(), renderConfirmDialog());
159
122
  };
160
123
 
161
- exports["default"] = MaterialRunboxActionReset;
124
+ exports.default = MaterialRunboxActionReset;
@@ -1,5 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { RuntimeProps } from '../runtime/Runtime';
3
- type MaterialRunboxActionRestartProps = Pick<RuntimeProps, 'runbox' | 'courseId' | 'refetch'>;
3
+ type MaterialRunboxActionRestartProps = Pick<RuntimeProps, 'runbox' | 'runtime' | 'courseId' | 'refetch'> & {
4
+ handleMenuClose: () => void;
5
+ };
4
6
  declare const MaterialRunboxActionRestart: React.FC<MaterialRunboxActionRestartProps>;
5
7
  export default MaterialRunboxActionRestart;
@@ -2,117 +2,101 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var reactIntl = require('react-intl');
8
- var runboxClient = require('@elice/runbox-client');
9
- var iconsMaterial = require('@mui/icons-material');
7
+ var muiElements = require('@elice/mui-elements');
8
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
10
9
  var lab = require('@mui/lab');
11
10
  var material = require('@mui/material');
12
11
  var useRunboxControl = require('../hooks/useRunboxControl.js');
13
12
 
14
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
-
16
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
-
18
13
  //
19
14
  //
20
15
  //
21
- var MaterialRunboxActionRestart = function MaterialRunboxActionRestart(_ref) {
22
- var runbox = _ref.runbox,
23
- courseId = _ref.courseId,
24
- refetch = _ref.refetch;
25
- var intl = reactIntl.useIntl();
26
- var _useEliceRunboxRunnin = runboxClient.useEliceRunboxRunning(),
27
- status = _useEliceRunboxRunnin.status;
28
- var _useRunboxControl = useRunboxControl.useRunboxControl({
29
- runbox: runbox,
30
- courseId: courseId,
31
- refetch: refetch
32
- }),
33
- start = _useRunboxControl.start;
34
- var isRunboxRunning = status === 'running';
35
- var _React$useState = React__default["default"].useState(false),
36
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
37
- isConfirmDialogOpen = _React$useState2[0],
38
- setConfirmDialogOpen = _React$useState2[1];
39
- var _React$useState3 = React__default["default"].useState(false),
40
- _React$useState4 = _rollupPluginBabelHelpers.slicedToArray(_React$useState3, 2),
41
- isActionLoading = _React$useState4[0],
42
- setActionLoading = _React$useState4[1];
16
+ const MaterialRunboxActionRestart = ({
17
+ runbox,
18
+ courseId,
19
+ refetch,
20
+ handleMenuClose
21
+ }) => {
22
+ const [isLoading, setIsLoading] = React.useState(false);
23
+ const [isDialogOpened, setDialogOpened] = React.useState(false);
24
+ // restart
25
+ const {
26
+ start
27
+ } = useRunboxControl.useRunboxControl({
28
+ runbox,
29
+ courseId,
30
+ refetch
31
+ });
43
32
  /**
44
33
  *
45
34
  */
46
- var handleConfirmDialogOpen = function handleConfirmDialogOpen() {
47
- setConfirmDialogOpen(true);
35
+ const handleDialogClose = () => {
36
+ setDialogOpened(false);
48
37
  };
49
38
  /**
50
39
  *
51
40
  */
52
- var handleConfirmDialogClose = function handleConfirmDialogClose() {
53
- setConfirmDialogOpen(false);
54
- };
55
- /**
56
- *
57
- */
58
- var handleAction = function handleAction() {
59
- setActionLoading(true);
60
- start(true).catch(function () {
61
- return void 0;
62
- }).finally(function () {
63
- setActionLoading(false);
64
- handleConfirmDialogClose();
41
+ const handleRestartAction = () => {
42
+ setIsLoading(true);
43
+ start(true).catch(() => void 0).finally(() => {
44
+ handleDialogClose();
45
+ handleMenuClose();
46
+ setIsLoading(false);
65
47
  });
66
48
  };
67
49
  /**
68
50
  *
69
51
  */
70
- var renderActionButton = function renderActionButton() {
71
- return React__default["default"].createElement(material.Tooltip, {
72
- title: intl.formatMessage({
73
- id: 'runbox.action.restart.title'
74
- })
75
- }, React__default["default"].createElement(material.IconButton, {
76
- disabled: !isRunboxRunning,
77
- onClick: handleConfirmDialogOpen
78
- }, React__default["default"].createElement(iconsMaterial.RestartAlt, null)));
52
+ const renderRestartMenuItem = () => {
53
+ return React.createElement(material.MenuItem, {
54
+ onClick: () => setDialogOpened(true)
55
+ }, React.createElement(material.ListItemIcon, null, React.createElement(muiElements.EliceIcon, {
56
+ icon: proSolidSvgIcons.faRotateRight
57
+ })), React.createElement(material.ListItemText, null, React.createElement(reactIntl.FormattedMessage, {
58
+ id: "runbox.action.restart.title"
59
+ })));
79
60
  };
80
61
  /**
81
62
  *
82
63
  */
83
- var renderActionConfirmDialog = function renderActionConfirmDialog() {
84
- return React__default["default"].createElement(material.Dialog, {
85
- open: isConfirmDialogOpen,
64
+ const renderConfirmDialog = () => {
65
+ if (!isDialogOpened) {
66
+ return null;
67
+ }
68
+ return React.createElement(material.Dialog, {
86
69
  maxWidth: "xs",
70
+ open: true,
87
71
  fullWidth: true,
88
- onClose: handleConfirmDialogClose
89
- }, React__default["default"].createElement(material.DialogTitle, null, React__default["default"].createElement(reactIntl.FormattedMessage, {
72
+ onClose: handleDialogClose
73
+ }, React.createElement(material.DialogTitle, null, React.createElement(reactIntl.FormattedMessage, {
90
74
  id: "runbox.action.restart.title"
91
- })), React__default["default"].createElement(material.DialogContent, null, React__default["default"].createElement(material.DialogContentText, {
75
+ })), React.createElement(material.DialogContent, null, React.createElement(material.DialogContentText, {
92
76
  sx: {
93
77
  whiteSpace: 'pre-line'
94
78
  }
95
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
79
+ }, React.createElement(reactIntl.FormattedMessage, {
96
80
  id: "runbox.action.restart.dialog.description"
97
- }))), React__default["default"].createElement(material.DialogActions, null, React__default["default"].createElement(material.Button, {
81
+ }))), React.createElement(material.DialogActions, null, React.createElement(material.Button, {
98
82
  color: "inherit",
99
- disabled: isActionLoading,
100
- onClick: handleConfirmDialogClose
101
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
83
+ disabled: isLoading,
84
+ onClick: handleDialogClose
85
+ }, React.createElement(reactIntl.FormattedMessage, {
102
86
  id: "runbox.common.close"
103
- })), React__default["default"].createElement(lab.LoadingButton, {
87
+ })), React.createElement(lab.LoadingButton, {
104
88
  variant: "contained",
105
89
  color: "warning",
106
- loading: isActionLoading,
107
- onClick: handleAction
108
- }, React__default["default"].createElement(reactIntl.FormattedMessage, {
90
+ loading: isLoading,
91
+ onClick: handleRestartAction
92
+ }, React.createElement(reactIntl.FormattedMessage, {
109
93
  id: "runbox.action.restart.dialog.actions.confirm"
110
94
  }))));
111
95
  };
112
96
  //
113
97
  //
114
98
  //
115
- return React__default["default"].createElement(React__default["default"].Fragment, null, renderActionButton(), renderActionConfirmDialog());
99
+ return React.createElement(React.Fragment, null, renderRestartMenuItem(), renderConfirmDialog());
116
100
  };
117
101
 
118
- exports["default"] = MaterialRunboxActionRestart;
102
+ exports.default = MaterialRunboxActionRestart;
@@ -1,3 +1,6 @@
1
1
  import React from 'react';
2
- declare const MaterialRunboxActionShare: React.FC;
2
+ interface MaterialRunboxActionShareProps {
3
+ handleMenuClose: () => void;
4
+ }
5
+ declare const MaterialRunboxActionShare: React.FC<MaterialRunboxActionShareProps>;
3
6
  export default MaterialRunboxActionShare;
@@ -2,68 +2,94 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var reactIntl = require('react-intl');
8
7
  var reactUse = require('react-use');
8
+ var muiElements = require('@elice/mui-elements');
9
+ var muiXSnackbar = require('@elice/mui-x-snackbar');
9
10
  var runboxClient = require('@elice/runbox-client');
10
- var iconsMaterial = require('@mui/icons-material');
11
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
11
12
  var material = require('@mui/material');
12
-
13
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
-
15
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
+ require('../contexts/MaterialRunboxApiContext.js');
14
+ require('../contexts/MaterialRunboxCommandContext.js');
15
+ var MaterialRunboxContext = require('../contexts/MaterialRunboxContext.js');
16
16
 
17
17
  //
18
18
  //
19
19
  //
20
- var MaterialRunboxActionShare = function MaterialRunboxActionShare() {
21
- var intl = reactIntl.useIntl();
22
- var _useEliceRunboxRunnin = runboxClient.useEliceRunboxRunning(),
23
- status = _useEliceRunboxRunnin.status,
24
- url = _useEliceRunboxRunnin.url;
25
- var _React$useState = React__default["default"].useState(false),
26
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
27
- isClipboardCopied = _React$useState2[0],
28
- setClipboardCopied = _React$useState2[1];
29
- var _useCopyToClipboard = reactUse.useCopyToClipboard(),
30
- _useCopyToClipboard2 = _rollupPluginBabelHelpers.slicedToArray(_useCopyToClipboard, 2),
31
- clipboardValue = _useCopyToClipboard2[0].value,
32
- copy = _useCopyToClipboard2[1];
33
- var isRunboxRunning = status === 'running';
20
+ const MaterialRunboxActionShare = ({
21
+ handleMenuClose
22
+ }) => {
23
+ const intl = reactIntl.useIntl();
24
+ const {
25
+ enqueueSnackbar
26
+ } = muiXSnackbar.useSnackbar();
27
+ const {
28
+ enableUrlShare
29
+ } = MaterialRunboxContext.useMaterialRunboxContext();
30
+ const {
31
+ url
32
+ } = runboxClient.useEliceRunboxRunning();
33
+ const [{
34
+ value: clipboardValue,
35
+ error
36
+ }, copy] = reactUse.useCopyToClipboard();
37
+ const [isClipboardCopied, setClipboardCopied] = React.useState(false);
34
38
  /**
35
39
  *
36
40
  */
37
- var handleAction = function handleAction() {
41
+ const renderShareMenuItem = () => {
42
+ if (!enableUrlShare) {
43
+ return null;
44
+ }
45
+ return React.createElement(material.MenuItem, {
46
+ disabled: !url,
47
+ onClick: handleShareAction
48
+ }, React.createElement(material.ListItemIcon, null, React.createElement(muiElements.EliceIcon, {
49
+ icon: proSolidSvgIcons.faLinkSimple
50
+ })), React.createElement(material.ListItemText, null, React.createElement(reactIntl.FormattedMessage, {
51
+ id: "runbox.action.share.title"
52
+ })));
53
+ };
54
+ /**
55
+ *
56
+ */
57
+ const handleShareAction = () => {
38
58
  if (url) {
39
59
  copy(url);
60
+ if (!error) {
61
+ handleMenuClose();
62
+ setClipboardCopied(true);
63
+ }
40
64
  }
41
65
  };
42
66
  //
43
67
  //
44
68
  //
45
- React__default["default"].useEffect(function () {
46
- setClipboardCopied(Boolean(clipboardValue));
47
- var timeoutId = setTimeout(function () {
48
- return setClipboardCopied(false);
49
- }, 2000);
50
- return function () {
51
- clearTimeout(timeoutId);
52
- };
53
- }, [clipboardValue]);
69
+ React.useEffect(() => {
70
+ if (!isClipboardCopied) {
71
+ return;
72
+ }
73
+ if (clipboardValue && !error) {
74
+ enqueueSnackbar(intl.formatMessage({
75
+ id: 'runbox.action.share.snackbar.copied.success'
76
+ }), {
77
+ variant: 'success'
78
+ });
79
+ } else {
80
+ enqueueSnackbar(intl.formatMessage({
81
+ id: 'runbox.action.share.snackbar.copied.fail'
82
+ }), {
83
+ variant: 'error'
84
+ });
85
+ }
86
+ setClipboardCopied(false);
87
+ // eslint-disable-next-line react-hooks/exhaustive-deps
88
+ }, [isClipboardCopied]);
54
89
  //
55
90
  //
56
91
  //
57
- return React__default["default"].createElement(material.Tooltip, {
58
- title: isClipboardCopied ? intl.formatMessage({
59
- id: 'runbox.action.share.tooltip.copied'
60
- }) : intl.formatMessage({
61
- id: 'runbox.action.share.title'
62
- })
63
- }, React__default["default"].createElement(material.IconButton, {
64
- disabled: !isRunboxRunning || !url,
65
- onClick: handleAction
66
- }, isClipboardCopied ? React__default["default"].createElement(iconsMaterial.Check, null) : React__default["default"].createElement(iconsMaterial.Link, null)));
92
+ return renderShareMenuItem();
67
93
  };
68
94
 
69
- exports["default"] = MaterialRunboxActionShare;
95
+ exports.default = MaterialRunboxActionShare;
@@ -2,58 +2,47 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
5
  var React = require('react');
7
6
  var openapiClientMaterialRunbox = require('@elice/openapi-client-material-runbox');
8
7
 
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
-
11
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
-
13
8
  //
14
9
  //
15
10
  //
16
- var MaterialRunboxApiContext = React__default["default"].createContext({});
17
- var useMaterialRunboxApiContext = function useMaterialRunboxApiContext() {
18
- return React__default["default"].useContext(MaterialRunboxApiContext);
11
+ const MaterialRunboxApiContext = React.createContext({});
12
+ const useMaterialRunboxApiContext = () => {
13
+ return React.useContext(MaterialRunboxApiContext);
19
14
  };
20
15
  //
21
16
  //
22
17
  //
23
- var MaterialRunboxApiContextProvider = function MaterialRunboxApiContextProvider(_ref) {
24
- var children = _ref.children,
25
- eliceMaterialRunboxApiConfiguration = _ref.eliceMaterialRunboxApiConfiguration;
26
- var createMaterialRunboxApi = function createMaterialRunboxApi() {
27
- return Object.freeze({
28
- runbox: new openapiClientMaterialRunbox.RunboxApi(eliceMaterialRunboxApiConfiguration),
29
- runtime: new openapiClientMaterialRunbox.RuntimeApi(eliceMaterialRunboxApiConfiguration),
30
- runtimeTemplate: new openapiClientMaterialRunbox.RuntimeTemplateApi(eliceMaterialRunboxApiConfiguration)
31
- });
32
- };
18
+ const MaterialRunboxApiContextProvider = ({
19
+ children,
20
+ eliceMaterialRunboxApiConfiguration
21
+ }) => {
22
+ const createMaterialRunboxApi = () => Object.freeze({
23
+ runbox: new openapiClientMaterialRunbox.RunboxApi(eliceMaterialRunboxApiConfiguration),
24
+ runtime: new openapiClientMaterialRunbox.RuntimeApi(eliceMaterialRunboxApiConfiguration),
25
+ runtimeTemplate: new openapiClientMaterialRunbox.RuntimeTemplateApi(eliceMaterialRunboxApiConfiguration)
26
+ });
33
27
  //
34
28
  //
35
29
  //
36
- var _React$useState = React__default["default"].useState(createMaterialRunboxApi),
37
- _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
38
- materialRunboxApi = _React$useState2[0],
39
- setMaterialRunboxApi = _React$useState2[1];
30
+ const [materialRunboxApi, setMaterialRunboxApi] = React.useState(createMaterialRunboxApi);
40
31
  //
41
32
  //
42
33
  //
43
- React__default["default"].useEffect(function () {
44
- return setMaterialRunboxApi(createMaterialRunboxApi);
45
- },
34
+ React.useEffect(() => setMaterialRunboxApi(createMaterialRunboxApi),
46
35
  // eslint-disable-next-line react-hooks/exhaustive-deps
47
36
  [eliceMaterialRunboxApiConfiguration]);
48
37
  //
49
38
  //
50
39
  //
51
- return React__default["default"].createElement(MaterialRunboxApiContext.Provider, {
40
+ return React.createElement(MaterialRunboxApiContext.Provider, {
52
41
  children: children,
53
42
  value: materialRunboxApi
54
43
  });
55
44
  };
56
45
 
57
46
  exports.MaterialRunboxApiContext = MaterialRunboxApiContext;
58
- exports["default"] = MaterialRunboxApiContextProvider;
47
+ exports.default = MaterialRunboxApiContextProvider;
59
48
  exports.useMaterialRunboxApiContext = useMaterialRunboxApiContext;