@elice/material-runbox 1.260825.0-runboxusability.2 → 1.260825.0-runboxusability.3

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 (73) hide show
  1. package/cjs/_virtual/_rollupPluginBabelHelpers.js +114 -0
  2. package/cjs/components/material-runbox/MaterialRunboxContent.js +7 -0
  3. package/cjs/components/material-runbox/MaterialRunboxHeader.js +21 -18
  4. package/cjs/components/material-runbox/disk/MaterialRunboxDiskUsageAlert.d.ts +11 -0
  5. package/cjs/components/material-runbox/disk/MaterialRunboxDiskUsageAlert.js +69 -0
  6. package/cjs/components/material-runbox/disk/MaterialRunboxDiskUsageDialog.d.ts +10 -0
  7. package/cjs/components/material-runbox/disk/MaterialRunboxDiskUsageDialog.js +98 -0
  8. package/cjs/components/material-runbox/disk/MaterialRunboxEnvResetButton.d.ts +16 -0
  9. package/cjs/components/material-runbox/disk/MaterialRunboxEnvResetButton.js +72 -0
  10. package/cjs/components/material-runbox/disk/MaterialRunboxEnvResetDialog.d.ts +14 -0
  11. package/cjs/components/material-runbox/disk/MaterialRunboxEnvResetDialog.js +103 -0
  12. package/cjs/components/material-runbox/disk/index.d.ts +8 -1
  13. package/cjs/components/material-runbox/disk/index.js +8 -2
  14. package/cjs/components/material-runbox/hooks/index.d.ts +2 -0
  15. package/cjs/components/material-runbox/hooks/index.js +6 -0
  16. package/cjs/components/material-runbox/hooks/useRunboxDiskUsage.d.ts +16 -0
  17. package/cjs/components/material-runbox/hooks/useRunboxDiskUsage.js +50 -0
  18. package/cjs/components/material-runbox/hooks/useRunboxEnvReset.d.ts +23 -0
  19. package/cjs/components/material-runbox/hooks/useRunboxEnvReset.js +132 -0
  20. package/cjs/components/material-runbox/locales/en.json.js +1 -1
  21. package/cjs/components/material-runbox/locales/ja.json.js +1 -1
  22. package/cjs/components/material-runbox/locales/ko.json.js +1 -1
  23. package/cjs/components/material-runbox/locales/th.json.js +1 -1
  24. package/cjs/components/material-runbox/runtime/Runtime.js +4 -2
  25. package/cjs/components/material-runbox/runtime/RuntimeOverlayTerminated.d.ts +2 -0
  26. package/cjs/components/material-runbox/runtime/RuntimeOverlayTerminated.js +14 -4
  27. package/cjs/components/material-runbox/status/MaterialRunboxStatusButton.d.ts +2 -7
  28. package/cjs/components/material-runbox/status/MaterialRunboxStatusButton.js +41 -15
  29. package/cjs/components/material-runbox/status/MaterialRunboxStatusPopover.d.ts +2 -7
  30. package/cjs/components/material-runbox/status/MaterialRunboxStatusPopover.js +14 -3
  31. package/cjs/utils/index.d.ts +1 -0
  32. package/cjs/utils/index.js +3 -0
  33. package/cjs/utils/polling.d.ts +56 -0
  34. package/cjs/utils/polling.js +108 -0
  35. package/es/_virtual/_rollupPluginBabelHelpers.js +99 -1
  36. package/es/components/material-runbox/MaterialRunboxContent.js +7 -0
  37. package/es/components/material-runbox/MaterialRunboxHeader.js +21 -18
  38. package/es/components/material-runbox/disk/MaterialRunboxDiskUsageAlert.d.ts +11 -0
  39. package/es/components/material-runbox/disk/MaterialRunboxDiskUsageAlert.js +65 -0
  40. package/es/components/material-runbox/disk/MaterialRunboxDiskUsageDialog.d.ts +10 -0
  41. package/es/components/material-runbox/disk/MaterialRunboxDiskUsageDialog.js +94 -0
  42. package/es/components/material-runbox/disk/MaterialRunboxEnvResetButton.d.ts +16 -0
  43. package/es/components/material-runbox/disk/MaterialRunboxEnvResetButton.js +64 -0
  44. package/es/components/material-runbox/disk/MaterialRunboxEnvResetDialog.d.ts +14 -0
  45. package/es/components/material-runbox/disk/MaterialRunboxEnvResetDialog.js +95 -0
  46. package/es/components/material-runbox/disk/index.d.ts +8 -1
  47. package/es/components/material-runbox/disk/index.js +4 -1
  48. package/es/components/material-runbox/hooks/index.d.ts +2 -0
  49. package/es/components/material-runbox/hooks/index.js +2 -0
  50. package/es/components/material-runbox/hooks/useRunboxDiskUsage.d.ts +16 -0
  51. package/es/components/material-runbox/hooks/useRunboxDiskUsage.js +42 -0
  52. package/es/components/material-runbox/hooks/useRunboxEnvReset.d.ts +23 -0
  53. package/es/components/material-runbox/hooks/useRunboxEnvReset.js +126 -0
  54. package/es/components/material-runbox/locales/en.json.js +1 -1
  55. package/es/components/material-runbox/locales/ja.json.js +1 -1
  56. package/es/components/material-runbox/locales/ko.json.js +1 -1
  57. package/es/components/material-runbox/locales/th.json.js +1 -1
  58. package/es/components/material-runbox/runtime/Runtime.js +4 -2
  59. package/es/components/material-runbox/runtime/RuntimeOverlayTerminated.d.ts +2 -0
  60. package/es/components/material-runbox/runtime/RuntimeOverlayTerminated.js +16 -6
  61. package/es/components/material-runbox/status/MaterialRunboxStatusButton.d.ts +2 -7
  62. package/es/components/material-runbox/status/MaterialRunboxStatusButton.js +44 -18
  63. package/es/components/material-runbox/status/MaterialRunboxStatusPopover.d.ts +2 -7
  64. package/es/components/material-runbox/status/MaterialRunboxStatusPopover.js +15 -4
  65. package/es/utils/index.d.ts +1 -0
  66. package/es/utils/index.js +1 -0
  67. package/es/utils/polling.d.ts +56 -0
  68. package/es/utils/polling.js +105 -0
  69. package/package.json +6 -6
  70. package/cjs/components/material-runbox/disk/MaterialRunboxDiskAlmostFullSnackbar.d.ts +0 -5
  71. package/cjs/components/material-runbox/disk/MaterialRunboxDiskAlmostFullSnackbar.js +0 -98
  72. package/es/components/material-runbox/disk/MaterialRunboxDiskAlmostFullSnackbar.d.ts +0 -5
  73. package/es/components/material-runbox/disk/MaterialRunboxDiskAlmostFullSnackbar.js +0 -94
@@ -8,6 +8,13 @@ function _arrayLikeToArray(r, a) {
8
8
  function _arrayWithHoles(r) {
9
9
  if (Array.isArray(r)) return r;
10
10
  }
11
+ function _arrayWithoutHoles(r) {
12
+ if (Array.isArray(r)) return _arrayLikeToArray(r);
13
+ }
14
+ function _assertThisInitialized(e) {
15
+ if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
16
+ return e;
17
+ }
11
18
  function asyncGeneratorStep(n, t, e, r, o, a, c) {
12
19
  try {
13
20
  var i = n[a](c),
@@ -33,6 +40,24 @@ function _asyncToGenerator(n) {
33
40
  });
34
41
  };
35
42
  }
43
+ function _callSuper(t, o, e) {
44
+ return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));
45
+ }
46
+ function _classCallCheck(a, n) {
47
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
48
+ }
49
+ function _construct(t, e, r) {
50
+ if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
51
+ var o = [null];
52
+ o.push.apply(o, e);
53
+ var p = new (t.bind.apply(t, o))();
54
+ return r && _setPrototypeOf(p, r.prototype), p;
55
+ }
56
+ function _createClass(e, r, t) {
57
+ return Object.defineProperty(e, "prototype", {
58
+ writable: false
59
+ }), e;
60
+ }
36
61
  function _defineProperty(e, r, t) {
37
62
  return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
38
63
  value: t,
@@ -41,6 +66,41 @@ function _defineProperty(e, r, t) {
41
66
  writable: true
42
67
  }) : e[r] = t, e;
43
68
  }
69
+ function _getPrototypeOf(t) {
70
+ return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
71
+ return t.__proto__ || Object.getPrototypeOf(t);
72
+ }, _getPrototypeOf(t);
73
+ }
74
+ function _inherits(t, e) {
75
+ if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
76
+ t.prototype = Object.create(e && e.prototype, {
77
+ constructor: {
78
+ value: t,
79
+ writable: true,
80
+ configurable: true
81
+ }
82
+ }), Object.defineProperty(t, "prototype", {
83
+ writable: false
84
+ }), e && _setPrototypeOf(t, e);
85
+ }
86
+ function _isNativeFunction(t) {
87
+ try {
88
+ return -1 !== Function.toString.call(t).indexOf("[native code]");
89
+ } catch (n) {
90
+ return "function" == typeof t;
91
+ }
92
+ }
93
+ function _isNativeReflectConstruct() {
94
+ try {
95
+ var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
96
+ } catch (t) {}
97
+ return (_isNativeReflectConstruct = function () {
98
+ return !!t;
99
+ })();
100
+ }
101
+ function _iterableToArray(r) {
102
+ if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
103
+ }
44
104
  function _iterableToArrayLimit(r, l) {
45
105
  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
46
106
  if (null != t) {
@@ -71,6 +131,14 @@ function _iterableToArrayLimit(r, l) {
71
131
  function _nonIterableRest() {
72
132
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
73
133
  }
134
+ function _nonIterableSpread() {
135
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
136
+ }
137
+ function _possibleConstructorReturn(t, e) {
138
+ if (e && ("object" == typeof e || "function" == typeof e)) return e;
139
+ if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");
140
+ return _assertThisInitialized(t);
141
+ }
74
142
  function _regenerator() {
75
143
  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */
76
144
  var e,
@@ -179,6 +247,11 @@ function _regeneratorDefine(e, r, n, t) {
179
247
  }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));
180
248
  }, _regeneratorDefine(e, r, n, t);
181
249
  }
250
+ function _setPrototypeOf(t, e) {
251
+ return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
252
+ return t.__proto__ = e, t;
253
+ }, _setPrototypeOf(t, e);
254
+ }
182
255
  function _slicedToArray(r, e) {
183
256
  return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
184
257
  }
@@ -189,6 +262,9 @@ function _taggedTemplateLiteral(e, t) {
189
262
  }
190
263
  }));
191
264
  }
265
+ function _toConsumableArray(r) {
266
+ return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
267
+ }
192
268
  function _toPrimitive(t, r) {
193
269
  if ("object" != typeof t || !t) return t;
194
270
  var e = t[Symbol.toPrimitive];
@@ -210,17 +286,55 @@ function _unsupportedIterableToArray(r, a) {
210
286
  return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
211
287
  }
212
288
  }
289
+ function _wrapNativeSuper(t) {
290
+ var r = "function" == typeof Map ? new Map() : void 0;
291
+ return _wrapNativeSuper = function (t) {
292
+ if (null === t || !_isNativeFunction(t)) return t;
293
+ if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
294
+ if (void 0 !== r) {
295
+ if (r.has(t)) return r.get(t);
296
+ r.set(t, Wrapper);
297
+ }
298
+ function Wrapper() {
299
+ return _construct(t, arguments, _getPrototypeOf(this).constructor);
300
+ }
301
+ return Wrapper.prototype = Object.create(t.prototype, {
302
+ constructor: {
303
+ value: Wrapper,
304
+ enumerable: false,
305
+ writable: true,
306
+ configurable: true
307
+ }
308
+ }), _setPrototypeOf(Wrapper, t);
309
+ }, _wrapNativeSuper(t);
310
+ }
213
311
 
214
312
  exports.arrayLikeToArray = _arrayLikeToArray;
215
313
  exports.arrayWithHoles = _arrayWithHoles;
314
+ exports.arrayWithoutHoles = _arrayWithoutHoles;
315
+ exports.assertThisInitialized = _assertThisInitialized;
216
316
  exports.asyncToGenerator = _asyncToGenerator;
317
+ exports.callSuper = _callSuper;
318
+ exports.classCallCheck = _classCallCheck;
319
+ exports.construct = _construct;
320
+ exports.createClass = _createClass;
217
321
  exports.defineProperty = _defineProperty;
322
+ exports.getPrototypeOf = _getPrototypeOf;
323
+ exports.inherits = _inherits;
324
+ exports.isNativeFunction = _isNativeFunction;
325
+ exports.isNativeReflectConstruct = _isNativeReflectConstruct;
326
+ exports.iterableToArray = _iterableToArray;
218
327
  exports.iterableToArrayLimit = _iterableToArrayLimit;
219
328
  exports.nonIterableRest = _nonIterableRest;
329
+ exports.nonIterableSpread = _nonIterableSpread;
330
+ exports.possibleConstructorReturn = _possibleConstructorReturn;
220
331
  exports.regenerator = _regenerator;
221
332
  exports.regeneratorDefine = _regeneratorDefine;
333
+ exports.setPrototypeOf = _setPrototypeOf;
222
334
  exports.slicedToArray = _slicedToArray;
223
335
  exports.taggedTemplateLiteral = _taggedTemplateLiteral;
336
+ exports.toConsumableArray = _toConsumableArray;
224
337
  exports.toPrimitive = _toPrimitive;
225
338
  exports.toPropertyKey = _toPropertyKey;
226
339
  exports.unsupportedIterableToArray = _unsupportedIterableToArray;
340
+ exports.wrapNativeSuper = _wrapNativeSuper;
@@ -19,6 +19,8 @@ var MaterialRunboxHeader = require('./MaterialRunboxHeader.js');
19
19
  var MaterialRunboxContext = require('./contexts/MaterialRunboxContext.js');
20
20
  var MaterialRunboxApiContext = require('./contexts/MaterialRunboxApiContext.js');
21
21
  var MaterialRunboxCommandContext = require('./contexts/MaterialRunboxCommandContext.js');
22
+ var MaterialRunboxDiskUsageAlert = require('./disk/MaterialRunboxDiskUsageAlert.js');
23
+ var MaterialRunboxDiskUsageDialog = require('./disk/MaterialRunboxDiskUsageDialog.js');
22
24
  var useMaterialRunboxRunboxIdStarterGet = require('./hooks/useMaterialRunboxRunboxIdStarterGet.js');
23
25
 
24
26
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -288,6 +290,11 @@ var MaterialRunboxContent = function MaterialRunboxContent(_ref) {
288
290
  studentUserId: studentUserId,
289
291
  userId: userId,
290
292
  isTutoring: isTutoring
293
+ }), jsxRuntime.jsx(MaterialRunboxDiskUsageAlert.default, {
294
+ runboxId: runbox.id,
295
+ courseId: courseId
296
+ }), jsxRuntime.jsx(MaterialRunboxDiskUsageDialog.default, {
297
+ runboxId: runbox.id
291
298
  }), jsxRuntime.jsx(MaterialRunboxBody.default, Object.assign({
292
299
  setSnackbarRoot: setSnackbarRoot
293
300
  }, props))]
@@ -22,7 +22,6 @@ var MaterialRunboxContext = require('./contexts/MaterialRunboxContext.js');
22
22
  var MaterialRunboxApiContext = require('./contexts/MaterialRunboxApiContext.js');
23
23
  var MaterialRunboxTimer = require('./timer/MaterialRunboxTimer.js');
24
24
  var MaterialRunboxStatusButton = require('./status/MaterialRunboxStatusButton.js');
25
- var MaterialRunboxDiskAlmostFullSnackbar = require('./disk/MaterialRunboxDiskAlmostFullSnackbar.js');
26
25
  var useRunboxControl = require('./hooks/useRunboxControl.js');
27
26
 
28
27
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -35,25 +34,28 @@ var StyledHeader = /*#__PURE__*/_styled__default.default("div", {
35
34
  })("position:relative;flex:0 0 3rem;display:flex;justify-content:flex-start;align-items:center;gap:1rem;padding:0 1rem;width:100%;border-bottom:1px solid ", function (_ref) {
36
35
  var theme = _ref.theme;
37
36
  return theme.palette.divider;
38
- }, ";overflow:hidden;background-color:", function (_ref2) {
37
+ }, ";overflow:hidden;color:", function (_ref2) {
39
38
  var theme = _ref2.theme;
39
+ return theme.palette.text.primary;
40
+ }, ";background-color:", function (_ref3) {
41
+ var theme = _ref3.theme;
40
42
  return theme.palette.background.paper;
41
43
  }, ";");
42
44
  //
43
45
  //
44
46
  //
45
- var MaterialRunboxHeader = function MaterialRunboxHeader(_ref3) {
46
- var runbox = _ref3.runbox,
47
- runtime = _ref3.runtime,
48
- runtimeTemplate = _ref3.runtimeTemplate,
49
- courseId = _ref3.courseId,
50
- userId = _ref3.userId,
51
- studentUserId = _ref3.studentUserId,
52
- isTutoring = _ref3.isTutoring,
53
- refetch = _ref3.refetch,
54
- getAchievementColor = _ref3.getAchievementColor,
55
- _ref3$hideTimerPopove = _ref3.hideTimerPopover,
56
- hideTimerPopover = _ref3$hideTimerPopove === void 0 ? false : _ref3$hideTimerPopove;
47
+ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref4) {
48
+ var runbox = _ref4.runbox,
49
+ runtime = _ref4.runtime,
50
+ runtimeTemplate = _ref4.runtimeTemplate,
51
+ courseId = _ref4.courseId,
52
+ userId = _ref4.userId,
53
+ studentUserId = _ref4.studentUserId,
54
+ isTutoring = _ref4.isTutoring,
55
+ refetch = _ref4.refetch,
56
+ getAchievementColor = _ref4.getAchievementColor,
57
+ _ref4$hideTimerPopove = _ref4.hideTimerPopover,
58
+ hideTimerPopover = _ref4$hideTimerPopove === void 0 ? false : _ref4$hideTimerPopove;
57
59
  var intl$1 = intl.useRawEliceIntl();
58
60
  var _useMaterialRunboxCon = MaterialRunboxContext.useMaterialRunboxContext(),
59
61
  enableAutoShutdownToggle = _useMaterialRunboxCon.enableAutoShutdownToggle;
@@ -104,8 +106,8 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref3) {
104
106
  courseId: courseId,
105
107
  runtime: runtime
106
108
  }],
107
- queryFn: function queryFn(_ref4) {
108
- var signal = _ref4.signal;
109
+ queryFn: function queryFn(_ref5) {
110
+ var signal = _ref5.signal;
109
111
  return materialRunboxApi.runbox.runboxRunboxIdSubmitInfoGet({
110
112
  eliceCourseId: courseId,
111
113
  runboxId: runtime === null || runtime === void 0 ? void 0 : runtime.runboxId
@@ -226,8 +228,9 @@ var MaterialRunboxHeader = function MaterialRunboxHeader(_ref3) {
226
228
  stopRuntime: stopRuntime,
227
229
  hideTimerPopover: hideTimerPopover,
228
230
  isTutoring: isTutoring
229
- }) : null, jsxRuntime.jsx(MaterialRunboxStatusButton.default, {}), jsxRuntime.jsx(MaterialRunboxDiskAlmostFullSnackbar.default, {
230
- runboxId: runbox.id
231
+ }) : null, jsxRuntime.jsx(MaterialRunboxStatusButton.default, {
232
+ runboxId: runbox.id,
233
+ courseId: courseId
231
234
  }), jsxRuntime.jsxs(material.Stack, {
232
235
  direction: "row",
233
236
  alignItems: "center",
@@ -0,0 +1,11 @@
1
+ import type React from 'react';
2
+ export interface MaterialRunboxDiskUsageAlertProps {
3
+ runboxId: string;
4
+ courseId: number;
5
+ }
6
+ /**
7
+ * Persistent bar under the header once disk usage passes 80%. Unlike the notice
8
+ * dialog it stays put, because it carries the only way out — the reset CTA.
9
+ */
10
+ declare const MaterialRunboxDiskUsageAlert: React.FC<MaterialRunboxDiskUsageAlertProps>;
11
+ export default MaterialRunboxDiskUsageAlert;
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var intl = require('@elice/intl');
7
+ var muiElements = require('@elice/mui-elements');
8
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
9
+ var material = require('@mui/material');
10
+ var MaterialRunboxEnvResetButton = require('./MaterialRunboxEnvResetButton.js');
11
+ var useRunboxDiskUsage = require('../hooks/useRunboxDiskUsage.js');
12
+
13
+ //
14
+ //
15
+ //
16
+ /**
17
+ * Persistent bar under the header once disk usage passes 80%. Unlike the notice
18
+ * dialog it stays put, because it carries the only way out — the reset CTA.
19
+ */
20
+ var MaterialRunboxDiskUsageAlert = function MaterialRunboxDiskUsageAlert(_ref) {
21
+ var runboxId = _ref.runboxId,
22
+ courseId = _ref.courseId;
23
+ var intl$1 = intl.useRawEliceIntl();
24
+ var _useRunboxDiskUsage = useRunboxDiskUsage.useRunboxDiskUsage(),
25
+ severity = _useRunboxDiskUsage.severity,
26
+ diskCurrent = _useRunboxDiskUsage.diskCurrent,
27
+ diskTotal = _useRunboxDiskUsage.diskTotal;
28
+ if (!severity) {
29
+ return null;
30
+ }
31
+ //
32
+ //
33
+ //
34
+ return jsxRuntime.jsx(material.Alert, {
35
+ severity: severity,
36
+ sx: {
37
+ width: '100%',
38
+ borderRadius: '0',
39
+ alignItems: 'center'
40
+ },
41
+ action: jsxRuntime.jsx(MaterialRunboxEnvResetButton.default, {
42
+ variant: "text",
43
+ size: "small",
44
+ color: "inherit",
45
+ startIcon: jsxRuntime.jsx(muiElements.EliceIcon, {
46
+ icon: proSolidSvgIcons.faArrowsRotate
47
+ }),
48
+ runboxId: runboxId,
49
+ courseId: courseId
50
+ }),
51
+ children: jsxRuntime.jsx(material.Typography, {
52
+ variant: "body2",
53
+ children: intl$1.formatMessage({
54
+ id: "runbox.disk.usage.alert.".concat(severity)
55
+ }, {
56
+ used: intl$1.formatDataSize(diskCurrent, {
57
+ unitSystem: 'iec',
58
+ maximumFractionDigits: 2
59
+ }),
60
+ total: intl$1.formatDataSize(diskTotal, {
61
+ unitSystem: 'iec',
62
+ maximumFractionDigits: 2
63
+ })
64
+ })
65
+ })
66
+ });
67
+ };
68
+
69
+ exports.default = MaterialRunboxDiskUsageAlert;
@@ -0,0 +1,10 @@
1
+ import type React from 'react';
2
+ export interface MaterialRunboxDiskUsageDialogProps {
3
+ runboxId: string;
4
+ }
5
+ /**
6
+ * Notice shown once per severity per runbox for the browser session. The reset
7
+ * CTA lives in the alert bar, so this only has to be acknowledged.
8
+ */
9
+ declare const MaterialRunboxDiskUsageDialog: React.FC<MaterialRunboxDiskUsageDialogProps>;
10
+ export default MaterialRunboxDiskUsageDialog;
@@ -0,0 +1,98 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var reactUse = require('react-use');
8
+ var intl = require('@elice/intl');
9
+ var muiElements = require('@elice/mui-elements');
10
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
11
+ var material = require('@mui/material');
12
+ var useRunboxDiskUsage = require('../hooks/useRunboxDiskUsage.js');
13
+
14
+ //
15
+ //
16
+ //
17
+ var SEEN_STORAGE_KEY = 'MaterialRunboxDiskUsage.seenNotice';
18
+ //
19
+ //
20
+ //
21
+ /**
22
+ * Notice shown once per severity per runbox for the browser session. The reset
23
+ * CTA lives in the alert bar, so this only has to be acknowledged.
24
+ */
25
+ var MaterialRunboxDiskUsageDialog = function MaterialRunboxDiskUsageDialog(_ref) {
26
+ var runboxId = _ref.runboxId;
27
+ var _a;
28
+ var intl$1 = intl.useRawEliceIntl();
29
+ var _useRunboxDiskUsage = useRunboxDiskUsage.useRunboxDiskUsage(),
30
+ severity = _useRunboxDiskUsage.severity,
31
+ diskCurrent = _useRunboxDiskUsage.diskCurrent,
32
+ diskTotal = _useRunboxDiskUsage.diskTotal;
33
+ var _useSessionStorage = reactUse.useSessionStorage(SEEN_STORAGE_KEY, {}),
34
+ _useSessionStorage2 = _rollupPluginBabelHelpers.slicedToArray(_useSessionStorage, 2),
35
+ seen = _useSessionStorage2[0],
36
+ setSeen = _useSessionStorage2[1];
37
+ var seenSeverities = (_a = seen === null || seen === void 0 ? void 0 : seen[runboxId]) !== null && _a !== void 0 ? _a : [];
38
+ /**
39
+ *
40
+ */
41
+ var handleClose = function handleClose() {
42
+ if (!severity) {
43
+ return;
44
+ }
45
+ setSeen(Object.assign(Object.assign({}, seen), _rollupPluginBabelHelpers.defineProperty({}, runboxId, [].concat(_rollupPluginBabelHelpers.toConsumableArray(seenSeverities), [severity]))));
46
+ };
47
+ //
48
+ //
49
+ //
50
+ if (!severity) {
51
+ return null;
52
+ }
53
+ return jsxRuntime.jsxs(material.Dialog, {
54
+ fullWidth: true,
55
+ open: !seenSeverities.includes(severity),
56
+ maxWidth: "xs",
57
+ onClose: handleClose,
58
+ children: [jsxRuntime.jsx(material.DialogTitle, {
59
+ children: jsxRuntime.jsxs(material.Stack, {
60
+ direction: "row",
61
+ alignItems: "center",
62
+ gap: "0.5rem",
63
+ children: [jsxRuntime.jsx(muiElements.EliceIcon, {
64
+ icon: severity === 'error' ? proSolidSvgIcons.faCircleExclamation : proSolidSvgIcons.faTriangleExclamation,
65
+ color: severity
66
+ }), intl$1.formatMessage({
67
+ id: 'runbox.disk.usage.dialog.title'
68
+ })]
69
+ })
70
+ }), jsxRuntime.jsx(material.DialogContent, {
71
+ children: jsxRuntime.jsx(material.DialogContentText, {
72
+ whiteSpace: "pre-line",
73
+ children: intl$1.formatMessage({
74
+ id: "runbox.disk.usage.dialog.description.".concat(severity)
75
+ }, {
76
+ used: intl$1.formatDataSize(diskCurrent, {
77
+ unitSystem: 'iec',
78
+ maximumFractionDigits: 2
79
+ }),
80
+ total: intl$1.formatDataSize(diskTotal, {
81
+ unitSystem: 'iec',
82
+ maximumFractionDigits: 2
83
+ })
84
+ })
85
+ })
86
+ }), jsxRuntime.jsx(material.DialogActions, {
87
+ children: jsxRuntime.jsx(material.Button, {
88
+ color: "inherit",
89
+ onClick: handleClose,
90
+ children: intl$1.formatMessage({
91
+ id: 'runbox.disk.usage.dialog.actions.close'
92
+ })
93
+ })
94
+ })]
95
+ });
96
+ };
97
+
98
+ exports.default = MaterialRunboxDiskUsageDialog;
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { ButtonProps } from '@mui/material';
3
+ export interface MaterialRunboxEnvResetButtonProps extends Omit<ButtonProps, 'onClick'> {
4
+ runboxId: string;
5
+ courseId: number;
6
+ /** User ID for tutoring. */
7
+ userId?: number;
8
+ /** Called once the clear has finished. */
9
+ onSuccess?: () => void;
10
+ }
11
+ /**
12
+ * Shared "실습 환경 초기화" CTA: owns the confirm dialog and the clear request,
13
+ * and leaves the appearance to whoever renders it.
14
+ */
15
+ declare const MaterialRunboxEnvResetButton: React.FC<MaterialRunboxEnvResetButtonProps>;
16
+ export default MaterialRunboxEnvResetButton;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var tslib = require('tslib');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+ var React = require('react');
9
+ var intl = require('@elice/intl');
10
+ var material = require('@mui/material');
11
+ var MaterialRunboxEnvResetDialog = require('./MaterialRunboxEnvResetDialog.js');
12
+ var useRunboxEnvReset = require('../hooks/useRunboxEnvReset.js');
13
+
14
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
+
18
+ //
19
+ //
20
+ //
21
+ /**
22
+ * Shared "실습 환경 초기화" CTA: owns the confirm dialog and the clear request,
23
+ * and leaves the appearance to whoever renders it.
24
+ */
25
+ var MaterialRunboxEnvResetButton = function MaterialRunboxEnvResetButton(_a) {
26
+ var runboxId = _a.runboxId,
27
+ courseId = _a.courseId,
28
+ userId = _a.userId,
29
+ _onSuccess = _a.onSuccess,
30
+ props = tslib.__rest(_a, ["runboxId", "courseId", "userId", "onSuccess"]);
31
+ var intl$1 = intl.useRawEliceIntl();
32
+ var _React$useState = React__default.default.useState(false),
33
+ _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
34
+ isDialogOpened = _React$useState2[0],
35
+ setDialogOpened = _React$useState2[1];
36
+ var _useRunboxEnvReset = useRunboxEnvReset.useRunboxEnvReset({
37
+ onSuccess: function onSuccess() {
38
+ setDialogOpened(false);
39
+ _onSuccess === null || _onSuccess === void 0 ? void 0 : _onSuccess();
40
+ }
41
+ }),
42
+ reset = _useRunboxEnvReset.reset,
43
+ isResetting = _useRunboxEnvReset.isResetting;
44
+ //
45
+ //
46
+ //
47
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
48
+ children: [jsxRuntime.jsx(material.Button, Object.assign({}, props, {
49
+ onClick: function onClick() {
50
+ return setDialogOpened(true);
51
+ },
52
+ children: intl$1.formatMessage({
53
+ id: 'runbox.disk.env_reset.title'
54
+ })
55
+ })), jsxRuntime.jsx(MaterialRunboxEnvResetDialog.default, {
56
+ open: isDialogOpened,
57
+ isResetting: isResetting,
58
+ onClose: function onClose() {
59
+ return setDialogOpened(false);
60
+ },
61
+ onConfirm: function onConfirm() {
62
+ return void reset({
63
+ runboxId: runboxId,
64
+ courseId: courseId,
65
+ userId: userId
66
+ });
67
+ }
68
+ })]
69
+ });
70
+ };
71
+
72
+ exports.default = MaterialRunboxEnvResetButton;
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export interface MaterialRunboxEnvResetDialogProps {
3
+ open: boolean;
4
+ isResetting?: boolean;
5
+ onClose: () => void;
6
+ onConfirm: () => void;
7
+ }
8
+ /**
9
+ * Confirms clearing the practice environment. The checkbox is the explicit
10
+ * acknowledgement `[R-3]` asks for: the delete action stays disabled until it
11
+ * is ticked.
12
+ */
13
+ declare const MaterialRunboxEnvResetDialog: React.FC<MaterialRunboxEnvResetDialogProps>;
14
+ export default MaterialRunboxEnvResetDialog;
@@ -0,0 +1,103 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _rollupPluginBabelHelpers = require('../../../_virtual/_rollupPluginBabelHelpers.js');
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var React = require('react');
8
+ var intl = require('@elice/intl');
9
+ var muiElements = require('@elice/mui-elements');
10
+ var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
11
+ var lab = require('@mui/lab');
12
+ var material = require('@mui/material');
13
+
14
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
15
+
16
+ var React__default = /*#__PURE__*/_interopDefaultCompat(React);
17
+
18
+ //
19
+ //
20
+ //
21
+ /**
22
+ * Confirms clearing the practice environment. The checkbox is the explicit
23
+ * acknowledgement `[R-3]` asks for: the delete action stays disabled until it
24
+ * is ticked.
25
+ */
26
+ var MaterialRunboxEnvResetDialog = function MaterialRunboxEnvResetDialog(_ref) {
27
+ var open = _ref.open,
28
+ _ref$isResetting = _ref.isResetting,
29
+ isResetting = _ref$isResetting === void 0 ? false : _ref$isResetting,
30
+ onClose = _ref.onClose,
31
+ onConfirm = _ref.onConfirm;
32
+ var intl$1 = intl.useRawEliceIntl();
33
+ var _React$useState = React__default.default.useState(false),
34
+ _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
35
+ isAcknowledged = _React$useState2[0],
36
+ setAcknowledged = _React$useState2[1];
37
+ React__default.default.useEffect(function () {
38
+ if (!open) {
39
+ setAcknowledged(false);
40
+ }
41
+ }, [open]);
42
+ //
43
+ //
44
+ //
45
+ return jsxRuntime.jsxs(material.Dialog, {
46
+ fullWidth: true,
47
+ open: open,
48
+ maxWidth: "xs",
49
+ onClose: onClose,
50
+ children: [jsxRuntime.jsx(material.DialogTitle, {
51
+ children: jsxRuntime.jsxs(material.Stack, {
52
+ direction: "row",
53
+ alignItems: "center",
54
+ gap: "0.5rem",
55
+ children: [jsxRuntime.jsx(muiElements.EliceIcon, {
56
+ icon: proSolidSvgIcons.faCircleExclamation,
57
+ color: "error"
58
+ }), intl$1.formatMessage({
59
+ id: 'runbox.disk.env_reset.dialog.title'
60
+ })]
61
+ })
62
+ }), jsxRuntime.jsxs(material.DialogContent, {
63
+ children: [jsxRuntime.jsx(material.DialogContentText, {
64
+ whiteSpace: "pre-line",
65
+ children: intl$1.formatMessage({
66
+ id: 'runbox.disk.env_reset.dialog.description'
67
+ })
68
+ }), jsxRuntime.jsx(material.FormControlLabel, {
69
+ sx: {
70
+ marginTop: '1rem'
71
+ },
72
+ control: jsxRuntime.jsx(material.Checkbox, {
73
+ checked: isAcknowledged,
74
+ onChange: function onChange(e) {
75
+ return setAcknowledged(e.target.checked);
76
+ }
77
+ }),
78
+ label: intl$1.formatMessage({
79
+ id: 'runbox.disk.env_reset.dialog.acknowledge'
80
+ })
81
+ })]
82
+ }), jsxRuntime.jsxs(material.DialogActions, {
83
+ children: [jsxRuntime.jsx(material.Button, {
84
+ color: "inherit",
85
+ disabled: isResetting,
86
+ onClick: onClose,
87
+ children: intl$1.formatMessage({
88
+ id: 'runbox.disk.env_reset.dialog.actions.cancel'
89
+ })
90
+ }), jsxRuntime.jsx(lab.LoadingButton, {
91
+ color: "error",
92
+ loading: isResetting,
93
+ disabled: !isAcknowledged,
94
+ onClick: onConfirm,
95
+ children: intl$1.formatMessage({
96
+ id: 'runbox.disk.env_reset.dialog.actions.confirm'
97
+ })
98
+ })]
99
+ })]
100
+ });
101
+ };
102
+
103
+ exports.default = MaterialRunboxEnvResetDialog;
@@ -1 +1,8 @@
1
- export { default as MaterialRunboxDiskAlmostFullSnackbar } from './MaterialRunboxDiskAlmostFullSnackbar';
1
+ export { default as MaterialRunboxDiskUsageAlert } from './MaterialRunboxDiskUsageAlert';
2
+ export { default as MaterialRunboxDiskUsageDialog } from './MaterialRunboxDiskUsageDialog';
3
+ export { default as MaterialRunboxEnvResetButton } from './MaterialRunboxEnvResetButton';
4
+ export { default as MaterialRunboxEnvResetDialog } from './MaterialRunboxEnvResetDialog';
5
+ export type { MaterialRunboxDiskUsageAlertProps } from './MaterialRunboxDiskUsageAlert';
6
+ export type { MaterialRunboxDiskUsageDialogProps } from './MaterialRunboxDiskUsageDialog';
7
+ export type { MaterialRunboxEnvResetButtonProps } from './MaterialRunboxEnvResetButton';
8
+ export type { MaterialRunboxEnvResetDialogProps } from './MaterialRunboxEnvResetDialog';