@elice/material-runbox 1.260825.0-runboxusability.2 → 1.260826.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 (81) hide show
  1. package/cjs/assets/runbox_logo.png.js +7 -0
  2. package/cjs/components/material-runbox/MaterialRunboxContent.js +2 -1
  3. package/cjs/components/material-runbox/MaterialRunboxFooter.d.ts +4 -0
  4. package/cjs/components/material-runbox/MaterialRunboxFooter.js +64 -0
  5. package/cjs/components/material-runbox/MaterialRunboxHeader.js +29 -12
  6. package/cjs/components/material-runbox/actions/MaterialRunboxActionMenu.d.ts +1 -3
  7. package/cjs/components/material-runbox/actions/MaterialRunboxActionMenu.js +1 -22
  8. package/cjs/components/material-runbox/hooks/index.d.ts +0 -2
  9. package/cjs/components/material-runbox/hooks/index.js +0 -10
  10. package/cjs/components/material-runbox/locales/en.json.js +1 -1
  11. package/cjs/components/material-runbox/locales/ja.json.js +1 -1
  12. package/cjs/components/material-runbox/locales/ko.json.js +1 -1
  13. package/cjs/components/material-runbox/locales/th.json.js +1 -1
  14. package/cjs/components/material-runbox/timer/MaterialRunboxAlmostEndSnackbars.d.ts +6 -0
  15. package/cjs/components/material-runbox/timer/MaterialRunboxAlmostEndSnackbars.js +90 -0
  16. package/cjs/components/material-runbox/timer/MaterialRunboxTimer.d.ts +0 -6
  17. package/cjs/components/material-runbox/timer/MaterialRunboxTimer.js +16 -20
  18. package/cjs/components/material-runbox/timer/MaterialRunboxTimerDetailPopover.js +81 -21
  19. package/es/assets/runbox_logo.png.js +3 -0
  20. package/es/components/material-runbox/MaterialRunboxContent.js +2 -1
  21. package/es/components/material-runbox/MaterialRunboxFooter.d.ts +4 -0
  22. package/es/components/material-runbox/MaterialRunboxFooter.js +56 -0
  23. package/es/components/material-runbox/MaterialRunboxHeader.js +30 -13
  24. package/es/components/material-runbox/actions/MaterialRunboxActionMenu.d.ts +1 -3
  25. package/es/components/material-runbox/actions/MaterialRunboxActionMenu.js +3 -24
  26. package/es/components/material-runbox/hooks/index.d.ts +0 -2
  27. package/es/components/material-runbox/hooks/index.js +0 -2
  28. package/es/components/material-runbox/locales/en.json.js +1 -1
  29. package/es/components/material-runbox/locales/ja.json.js +1 -1
  30. package/es/components/material-runbox/locales/ko.json.js +1 -1
  31. package/es/components/material-runbox/locales/th.json.js +1 -1
  32. package/es/components/material-runbox/timer/MaterialRunboxAlmostEndSnackbars.d.ts +6 -0
  33. package/es/components/material-runbox/timer/MaterialRunboxAlmostEndSnackbars.js +86 -0
  34. package/es/components/material-runbox/timer/MaterialRunboxTimer.d.ts +0 -6
  35. package/es/components/material-runbox/timer/MaterialRunboxTimer.js +15 -19
  36. package/es/components/material-runbox/timer/MaterialRunboxTimerDetailPopover.js +78 -18
  37. package/package.json +6 -6
  38. package/cjs/components/material-runbox/hooks/useRunboxNetworkStatus.d.ts +0 -14
  39. package/cjs/components/material-runbox/hooks/useRunboxNetworkStatus.js +0 -65
  40. package/cjs/components/material-runbox/hooks/useRunboxSessionEndWarning.d.ts +0 -18
  41. package/cjs/components/material-runbox/hooks/useRunboxSessionEndWarning.js +0 -67
  42. package/cjs/components/material-runbox/status/MaterialRunboxStatusButton.d.ts +0 -18
  43. package/cjs/components/material-runbox/status/MaterialRunboxStatusButton.js +0 -89
  44. package/cjs/components/material-runbox/status/MaterialRunboxStatusConnectionItem.d.ts +0 -12
  45. package/cjs/components/material-runbox/status/MaterialRunboxStatusConnectionItem.js +0 -35
  46. package/cjs/components/material-runbox/status/MaterialRunboxStatusPopover.d.ts +0 -17
  47. package/cjs/components/material-runbox/status/MaterialRunboxStatusPopover.js +0 -142
  48. package/cjs/components/material-runbox/status/MaterialRunboxStatusResourceItem.d.ts +0 -11
  49. package/cjs/components/material-runbox/status/MaterialRunboxStatusResourceItem.js +0 -41
  50. package/cjs/components/material-runbox/status/index.d.ts +0 -4
  51. package/cjs/components/material-runbox/status/index.js +0 -9
  52. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaAlmostEndDialog.d.ts +0 -11
  53. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaAlmostEndDialog.js +0 -117
  54. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaAmount.d.ts +0 -13
  55. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaAmount.js +0 -56
  56. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaPerSessionAlmostEndDialog.d.ts +0 -12
  57. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaPerSessionAlmostEndDialog.js +0 -118
  58. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaTimePart.d.ts +0 -15
  59. package/cjs/components/material-runbox/timer/MaterialRunboxQuotaTimePart.js +0 -50
  60. package/es/components/material-runbox/hooks/useRunboxNetworkStatus.d.ts +0 -14
  61. package/es/components/material-runbox/hooks/useRunboxNetworkStatus.js +0 -59
  62. package/es/components/material-runbox/hooks/useRunboxSessionEndWarning.d.ts +0 -18
  63. package/es/components/material-runbox/hooks/useRunboxSessionEndWarning.js +0 -63
  64. package/es/components/material-runbox/status/MaterialRunboxStatusButton.d.ts +0 -18
  65. package/es/components/material-runbox/status/MaterialRunboxStatusButton.js +0 -81
  66. package/es/components/material-runbox/status/MaterialRunboxStatusConnectionItem.d.ts +0 -12
  67. package/es/components/material-runbox/status/MaterialRunboxStatusConnectionItem.js +0 -31
  68. package/es/components/material-runbox/status/MaterialRunboxStatusPopover.d.ts +0 -17
  69. package/es/components/material-runbox/status/MaterialRunboxStatusPopover.js +0 -138
  70. package/es/components/material-runbox/status/MaterialRunboxStatusResourceItem.d.ts +0 -11
  71. package/es/components/material-runbox/status/MaterialRunboxStatusResourceItem.js +0 -37
  72. package/es/components/material-runbox/status/index.d.ts +0 -4
  73. package/es/components/material-runbox/status/index.js +0 -2
  74. package/es/components/material-runbox/timer/MaterialRunboxQuotaAlmostEndDialog.d.ts +0 -11
  75. package/es/components/material-runbox/timer/MaterialRunboxQuotaAlmostEndDialog.js +0 -113
  76. package/es/components/material-runbox/timer/MaterialRunboxQuotaAmount.d.ts +0 -13
  77. package/es/components/material-runbox/timer/MaterialRunboxQuotaAmount.js +0 -52
  78. package/es/components/material-runbox/timer/MaterialRunboxQuotaPerSessionAlmostEndDialog.d.ts +0 -12
  79. package/es/components/material-runbox/timer/MaterialRunboxQuotaPerSessionAlmostEndDialog.js +0 -114
  80. package/es/components/material-runbox/timer/MaterialRunboxQuotaTimePart.d.ts +0 -15
  81. package/es/components/material-runbox/timer/MaterialRunboxQuotaTimePart.js +0 -46
@@ -2,6 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var th = {"common.cancel":"ยกเลิก","material.tutoring.runbox_confirm_dialog.action.confirm":"ดำเนินการ","material.tutoring.runbox_confirm_dialog.content":"ขณะนี้นักเรียน {_termCourseRoleStudent} กำลังทำงานในสภาพแวดล้อม Runbox หากคุณเชื่อมต่อ เวลาที่เหลือสำหรับการใช้งานรันไทม์ทั้งหมดจะลดลง คุณต้องการดำเนินการต่อหรือไม่?","material.tutoring.runbox_confirm_dialog.title":"รันบ็อกซ์กำลังทำงาน","runbox.action.autoShutdown.title":"เปิดตลอดเวลา","runbox.action.autoShutdown.tooltip":"คุณสมบัตินี้ไม่สามารถใช้งานได้ในเซสชันนี้ เนื่องจากมีการตั้งค่าให้ปิดการทำงานอัตโนมัติเมื่อออก","runbox.action.grade.dialog.description.error":"มีปัญหาในโค้ดหรือไฟล์ที่ส่ง\nกรุณาตรวจสอบข้อความข้อผิดพลาดด้านล่างและตรวจสอบว่ารูปแบบการส่งตรงกับความต้องการ จากนั้นส่งอีกครั้ง","runbox.action.grade.dialog.description.success":"การจัดเกรดเสร็จสมบูรณ์เรียบร้อยแล้ว","runbox.action.grade.dialog.title":"ผลการประเมินผลการเรียน","runbox.action.grade.noti.error":"เกิดข้อผิดพลาดขึ้นในขณะที่ทำการตรวจคะแนนของโค้ด","runbox.action.grade.title":"ส่ง","runbox.action.grade.tooltip.onProgress":"กำลังให้คะแนนโค้ด โปรดรอสักครู่ การให้คะแนนอาจใช้เวลาสูงสุด 3 นาที ขึ้นอยู่กับประเภทของการฝึกอบรม","runbox.action.reset.dialog.actions.confirm":"รีเซ็ต","runbox.action.reset.dialog.isolated.description":"ต้องการรีเซ็ตโค้ด Runbox หรือไม่? การรีเซ็ตจะแทนที่โค้ดของคุณด้วยโค้ดเริ่มต้นของหน้าเรียน {_termLibraryLecturePage} \nเซสชัน Runbox จะรีเฟรชหลังจากรีเซ็ต","runbox.action.reset.dialog.shared.description":"คุณต้องการรีเซ็ตโค้ดของ Runbox หรือไม่? หากทำการรีเซ็ต โค้ดที่ทีมเขียนไว้จะถูกเขียนทับด้วยโค้ดเริ่มต้น และเซสชันของ Runbox จะถูกรีเฟรชหลังจากนั้น","runbox.action.reset.noti.error":"เกิดข้อผิดพลาดระหว่างการรีเซ็ตโค้ด Runbox","runbox.action.reset.title":"รีเซ็ตโค้ด","runbox.action.restart.dialog.actions.confirm":"เริ่มต้นใหม่","runbox.action.restart.dialog.isolated.description":"ต้องการเริ่มต้น Runbox ใหม่หรือไม่?","runbox.action.restart.dialog.shared.description":"Runbox จะเริ่มต้นใหม่บนหน้าจอของเพื่อนร่วมทีมด้วย คุณต้องการเริ่มต้น Runbox ใหม่หรือไม่?","runbox.action.restart.title":"เริ่มต้น Runbox ใหม่","runbox.action.share.snackbar.copied.fail":"ล้มเหลวในการคัดลอก URL Runbox กรุณาลองอีกครั้ง","runbox.action.share.snackbar.copied.success":"คัดลอก URL Runbox สำเร็จ","runbox.action.share.title":"คัดลอก URL Runbox","runbox.action.submitCountInfo.dialog.description":"คุณใช้จำนวนครั้งในการส่งเกินขีดจำกัดแล้ว","runbox.action.submitCountInfo.dialog.title":"ข้อจำกัดจำนวนครั้งในการส่ง","runbox.action.submitCountInfo.tooltip.disabled":"คุณใช้จำนวนครั้งในการส่งทั้งหมดแล้ว","runbox.action.submitLog.dialog.download.tooltip":"ดาวน์โหลดไฟล์ที่ส่ง","runbox.action.submitLog.dialog.title":"ประวัติการส่ง","runbox.action.submitLog.empty":"ไม่มีประวัติการส่ง","runbox.action.submitLog.title":"ประวัติการส่ง Runbox","runbox.action.disconnect.dialog.title":"ยกเลิกการเชื่อมต่อ Runbox","runbox.action.disconnect.dialog.description":"คุณกำลังอยู่ในระหว่างการฝึกปฏิบัติ ต้องการยกเลิกการเชื่อมต่อ Runbox หรือไม่?\nหากมีงานที่ยังไม่ได้บันทึก กรุณาบันทึกก่อน","runbox.action.disconnect.dialog.disconnect":"ยกเลิกการเชื่อมต่อ","runbox.action.disconnect.title":"ยกเลิกการเชื่อมต่อ","runbox.action.menu.title":"เพิ่มเติม","runbox.alert.title":"คุณได้เชื่อมต่อกับสภาพแวดล้อมที่นักเรียนกำลังทำงานอยู่ และเวลาใช้งานรันไทม์ทั้งหมดกำลังถูกหัก โปรดทราบว่าหากนักเรียนออกจากรันบ็อกซ์ แต่การให้คำปรึกษายังดำเนินต่อไป เวลาจะยังคงถูกหัก","runbox.common.close":"ปิด","runbox.common.retry":"ลองใหม่","runbox.common.score":"{score} คะแนน","runbox.common.support":"สนับสนุน","runbox.common.connect":"เชื่อมต่อ","runbox.context.command.ping.error":"เกิดข้อผิดพลาดขณะดำเนินการ Runbox","runbox.header.submitInfo":"{isIndividual, select, true {การส่งแบบส่วนตัว} other {การส่งแบบทีม}} | {remainCount}/{totalCount} ครั้งที่เหลือ | {isDailyLimitEnabled, select, true {วันนี้} other {}} ","runbox.timer.title":"เวลาที่เหลือ","runbox.timer.unlimited":"ไม่จำกัด","runbox.timer.tooltip.title":"ดูข้อมูลเวลา","runbox.timer.popover.title":"คู่มือเวลาใช้งาน Runbox","runbox.timer.popover.description":"นี่คือเวลาใช้งาน Runbox ทั้งหมดของ {user}\nเวลาจะถูกหักออกอย่างต่อเนื่องขณะเชื่อมต่อ ยกเลิกการเชื่อมต่อหรือออกจากบทเรียนเพื่อหยุดการหักเวลา","runbox.timer.popover.quota.title":"เวลาที่สามารถใช้งานได้ทั้งหมด","runbox.timer.popover.quota_per_session.title":"เวลาที่ใช้ได้ในการเชื่อมต่อครั้งนี้","runbox.timer.popover.quota_per_session.description":"การเชื่อมต่อหนึ่งครั้งใช้ได้สูงสุด {time} หากยังมีเวลาใช้งานทั้งหมดเหลืออยู่ คุณสามารถเชื่อมต่อใหม่เพื่อฝึกปฏิบัติต่อได้","runbox.timer.popover.quota.disconnect":"ตัดการเชื่อมต่อ","runbox.timer.popover.do_not_open":"ไม่แสดงป๊อปอัปนี้เมื่อเริ่มเซสชัน","runbox.timer.almost_end.dialog.quota.title":"เหลือเวลาใช้งานทั้งหมด {time}","runbox.timer.almost_end.dialog.quota.description":"เมื่อเวลาใช้งานทั้งหมดหมดลง การฝึกปฏิบัติจะสิ้นสุดและไม่สามารถเชื่อมต่อได้อีก\nกรุณาบันทึกงานของคุณก่อนสิ้นสุด งานที่ไม่ได้บันทึกอาจสูญหาย","runbox.timer.almost_end.dialog.quota_per_session.title":"เหลือเวลาในการเชื่อมต่อครั้งนี้ {time}","runbox.timer.almost_end.dialog.quota_per_session.description":"เมื่อเวลาเชื่อมต่อสิ้นสุด ระบบจะตัดการเชื่อมต่อ หากยังมีเวลาใช้งานทั้งหมดเหลืออยู่ คุณสามารถเชื่อมต่อใหม่เพื่อฝึกปฏิบัติต่อได้\nกรุณาบันทึกงานของคุณก่อนสิ้นสุด ไฟล์ที่บันทึกไว้จะยังคงอยู่เมื่อเชื่อมต่อใหม่ แต่งานที่ไม่ได้บันทึกอาจสูญหาย","runbox.timer.almost_end.dialog.confirm":"ดำเนินการต่อ","runbox.disk.almost_full.snackbar.almost_full":"พื้นที่ดิสก์ที่เหลืออยู่คือ {capacity} หากพื้นที่หมด การฝึกปฏิบัติจะสิ้นสุดลง กรุณาบันทึกงานที่กำลังทำอยู่ตอนนี้","runbox.runtime.message.lxp_plan_required":"ขณะนี้สถาบันของคุณไม่รองรับการใช้งานสื่อการเรียนการสอน Runbox\nโปรดติดต่อผู้ดูแลระบบของสถาบันของคุณสำหรับข้อมูลเพิ่มเติม","runbox.runtime.message.runbox_unavailable":"ไม่สามารถใช้ Runbox ได้","runbox.runtime.message.startError":"เกิดข้อผิดพลาดขณะเริ่ม Runbox","runbox.runtime.overlay.assigned.description":"(3 / 3)\nRunbox กำลังทำงานอยู่\nกรุณารอสักครู่!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\nRunbox ใช้เวลานานกว่าที่คาดไว้ในการทำงาน\nกรุณาอย่ารีเฟรชและรอสักครู่!","runbox.runtime.overlay.queued.description":"(2 / 3)\nกำลังรอคิวอยู่ที่ {waiters}...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\nRunbox ของคุณจะเริ่มทำงานเร็วๆ นี้","runbox.runtime.overlay.terminated.description.default":"หากต้องการดำเนินการฝึก Runbox ต่อ กรุณาคลิกปุ่มเชื่อมต่อ","runbox.runtime.overlay.terminated.description.os_disk_is_full":"พื้นที่ดิสก์ถูกใช้งานจนหมดแล้ว การฝึกปฏิบัติได้สิ้นสุดลง","runbox.runtime.overlay.terminated.description.quota_exceeded":"รันไทม์ถูกยกเลิกเนื่องจากเวลาการใช้งานหมดอายุแล้ว","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"รันไทม์ถูกยกเลิกเนื่องจากเวลาการใช้งานต่อเซสชันหมดอายุแล้ว\nหากต้องการเชื่อมต่อกับ Runbox อีกครั้ง กรุณากดปุ่มด้านล่าง","runbox.runtime.overlay.terminated.title":"การเชื่อมต่อถูกยกเลิก","runbox.runtime.overlay.terminated.connect":"เชื่อมต่อ","runbox.runtime.overlay.terminated.unlimited":"ไม่จำกัด","runbox.runtime.overlay.terminated.contact":"ติดต่อฝ่ายบริการลูกค้า","runbox.runtime.overlay.terminated.quota.total":"เวลาที่สามารถใช้งานได้ทั้งหมด","runbox.runtime.overlay.terminated.quota.used":"เวลาที่ใช้ไปทั้งหมด","runbox.runtime.overlay.terminated.disk.total":"พื้นที่ดิสก์ทั้งหมด","runbox.runtime.overlay.terminated.disk.used":"พื้นที่ดิสก์ที่ใช้ไปทั้งหมด","runbox.runtime.overlay.conflicted.description":"การเชื่อมต่อกับการฝึก Runbox นี้จะยุติการทำงานของ Runbox ในสื่อการสอนอื่น\nกรุณาบันทึกงานที่ยังไม่ได้บันทึกก่อน","runbox.runtime.overlay.conflicted.title":"ขณะนี้ Runbox เชื่อมต่อกับสื่อการสอนอื่นอยู่","runbox.runtime.dialog.change_material.title":"ประกาศการเปลี่ยนการเชื่อมต่อ Runbox","runbox.runtime.dialog.change_material.description":"การเชื่อมต่อกับการฝึก Runbox นี้จะยุติการทำงานของ Runbox ในสื่อการสอนอื่น คุณต้องการดำเนินการต่อหรือไม่?","runbox.status.button.title":"สถานะการเชื่อมต่อและทรัพยากร","runbox.status.network":"สถานะเครือข่าย","runbox.status.runtime.connected":"รันไทม์เชื่อมต่อแล้ว","runbox.status.runtime.connecting":"กำลังเชื่อมต่อรันไทม์","runbox.status.runtime.disconnected":"รันไทม์ถูกตัดการเชื่อมต่อ"};
5
+ var th = {"common.cancel":"ยกเลิก","material.tutoring.runbox_confirm_dialog.action.confirm":"ดำเนินการ","material.tutoring.runbox_confirm_dialog.content":"ขณะนี้นักเรียน {_termCourseRoleStudent} กำลังทำงานในสภาพแวดล้อม Runbox หากคุณเชื่อมต่อ เวลาที่เหลือสำหรับการใช้งานรันไทม์ทั้งหมดจะลดลง คุณต้องการดำเนินการต่อหรือไม่?","material.tutoring.runbox_confirm_dialog.title":"รันบ็อกซ์กำลังทำงาน","runbox.action.autoShutdown.title":"เปิดตลอดเวลา","runbox.action.autoShutdown.tooltip":"คุณสมบัตินี้ไม่สามารถใช้งานได้ในเซสชันนี้ เนื่องจากมีการตั้งค่าให้ปิดการทำงานอัตโนมัติเมื่อออก","runbox.action.grade.dialog.description.error":"มีปัญหาในโค้ดหรือไฟล์ที่ส่ง\nกรุณาตรวจสอบข้อความข้อผิดพลาดด้านล่างและตรวจสอบว่ารูปแบบการส่งตรงกับความต้องการ จากนั้นส่งอีกครั้ง","runbox.action.grade.dialog.description.success":"การจัดเกรดเสร็จสมบูรณ์เรียบร้อยแล้ว","runbox.action.grade.dialog.title":"ผลการประเมินผลการเรียน","runbox.action.grade.noti.error":"เกิดข้อผิดพลาดขึ้นในขณะที่ทำการตรวจคะแนนของโค้ด","runbox.action.grade.title":"ส่ง","runbox.action.grade.tooltip.onProgress":"กำลังให้คะแนนโค้ด โปรดรอสักครู่ การให้คะแนนอาจใช้เวลาสูงสุด 3 นาที ขึ้นอยู่กับประเภทของการฝึกอบรม","runbox.action.reset.dialog.actions.confirm":"รีเซ็ต","runbox.action.reset.dialog.isolated.description":"ต้องการรีเซ็ตโค้ด Runbox หรือไม่? การรีเซ็ตจะแทนที่โค้ดของคุณด้วยโค้ดเริ่มต้นของหน้าเรียน {_termLibraryLecturePage} \nเซสชัน Runbox จะรีเฟรชหลังจากรีเซ็ต","runbox.action.reset.dialog.shared.description":"คุณต้องการรีเซ็ตโค้ดของ Runbox หรือไม่? หากทำการรีเซ็ต โค้ดที่ทีมเขียนไว้จะถูกเขียนทับด้วยโค้ดเริ่มต้น และเซสชันของ Runbox จะถูกรีเฟรชหลังจากนั้น","runbox.action.reset.noti.error":"เกิดข้อผิดพลาดระหว่างการรีเซ็ตโค้ด Runbox","runbox.action.reset.title":"รีเซ็ตโค้ด","runbox.action.restart.dialog.actions.confirm":"เริ่มต้นใหม่","runbox.action.restart.dialog.isolated.description":"ต้องการเริ่มต้น Runbox ใหม่หรือไม่?","runbox.action.restart.dialog.shared.description":"Runbox จะเริ่มต้นใหม่บนหน้าจอของเพื่อนร่วมทีมด้วย คุณต้องการเริ่มต้น Runbox ใหม่หรือไม่?","runbox.action.restart.title":"เริ่มต้น Runbox ใหม่","runbox.action.share.snackbar.copied.fail":"ล้มเหลวในการคัดลอก URL Runbox กรุณาลองอีกครั้ง","runbox.action.share.snackbar.copied.success":"คัดลอก URL Runbox สำเร็จ","runbox.action.share.title":"คัดลอก URL Runbox","runbox.action.submitCountInfo.dialog.description":"คุณใช้จำนวนครั้งในการส่งเกินขีดจำกัดแล้ว","runbox.action.submitCountInfo.dialog.title":"ข้อจำกัดจำนวนครั้งในการส่ง","runbox.action.submitCountInfo.tooltip.disabled":"คุณใช้จำนวนครั้งในการส่งทั้งหมดแล้ว","runbox.action.submitLog.dialog.download.tooltip":"ดาวน์โหลดไฟล์ที่ส่ง","runbox.action.submitLog.dialog.title":"ประวัติการส่ง","runbox.action.submitLog.empty":"ไม่มีประวัติการส่ง","runbox.action.submitLog.title":"ประวัติการส่ง Runbox","runbox.action.disconnect.dialog.title":"ยกเลิกการเชื่อมต่อ Runbox","runbox.action.disconnect.dialog.description":"คุณกำลังอยู่ในระหว่างการฝึกปฏิบัติ ต้องการยกเลิกการเชื่อมต่อ Runbox หรือไม่?\nหากมีงานที่ยังไม่ได้บันทึก กรุณาบันทึกก่อน","runbox.action.disconnect.dialog.disconnect":"ยกเลิกการเชื่อมต่อ","runbox.action.disconnect.title":"ยกเลิกการเชื่อมต่อ","runbox.action.menu.title":"เพิ่มเติม","runbox.alert.title":"คุณได้เชื่อมต่อกับสภาพแวดล้อมที่นักเรียนกำลังทำงานอยู่ และเวลาใช้งานรันไทม์ทั้งหมดกำลังถูกหัก โปรดทราบว่าหากนักเรียนออกจากรันบ็อกซ์ แต่การให้คำปรึกษายังดำเนินต่อไป เวลาจะยังคงถูกหัก","runbox.common.close":"ปิด","runbox.common.retry":"ลองใหม่","runbox.common.score":"{score} คะแนน","runbox.common.support":"สนับสนุน","runbox.common.connect":"เชื่อมต่อ","runbox.context.command.ping.error":"เกิดข้อผิดพลาดขณะดำเนินการ Runbox","runbox.header.submitInfo":"{isIndividual, select, true {การส่งแบบส่วนตัว} other {การส่งแบบทีม}} | {remainCount}/{totalCount} ครั้งที่เหลือ | {isDailyLimitEnabled, select, true {วันนี้} other {}} ","runbox.timer.title":"เวลาที่เหลือ","runbox.timer.unlimited":"ไม่จำกัด","runbox.timer.tooltip.title":"ดูข้อมูลเวลา","runbox.timer.popover.title":"คู่มือเวลาใช้งาน Runbox","runbox.timer.popover.description":"นี่คือเวลาใช้งาน Runbox ทั้งหมดของ {user}\nเวลาจะถูกหักออกอย่างต่อเนื่องขณะเชื่อมต่อ ยกเลิกการเชื่อมต่อหรือออกจากบทเรียนเพื่อหยุดการหักเวลา","runbox.timer.popover.quota.title":"เวลาที่สามารถใช้งานได้ทั้งหมด","runbox.timer.popover.quota_per_session.title":"เวลาที่จัดสรรสำหรับเซสชันนี้","runbox.timer.popover.quota_per_session.description":"แต่ละเซสชันสามารถดำเนินการได้สูงสุด {time} การยกเลิกการเชื่อมต่อและเชื่อมต่อใหม่จะรีเซ็ตเวลาเซสชัน","runbox.timer.popover.quota.disconnect":"ตัดการเชื่อมต่อ","runbox.timer.popover.do_not_open":"ไม่แสดงป๊อปอัปนี้เมื่อเริ่มเซสชัน","runbox.timer.almost_end.snackbar.quota_per_session":"เหลือเวลา {time} สำหรับเซสชันนี้","runbox.timer.almost_end.snackbar.quota":"เหลือเวลาใช้งาน Runbox ทั้งหมด {time}","runbox.timer.almost_end.snackbar.detail":"ดูเพิ่มเติม","runbox.disk.almost_full.snackbar.almost_full":"พื้นที่ดิสก์ที่เหลืออยู่คือ {capacity} หากพื้นที่หมด การฝึกปฏิบัติจะสิ้นสุดลง กรุณาบันทึกงานที่กำลังทำอยู่ตอนนี้","runbox.runtime.message.lxp_plan_required":"ขณะนี้สถาบันของคุณไม่รองรับการใช้งานสื่อการเรียนการสอน Runbox\nโปรดติดต่อผู้ดูแลระบบของสถาบันของคุณสำหรับข้อมูลเพิ่มเติม","runbox.runtime.message.runbox_unavailable":"ไม่สามารถใช้ Runbox ได้","runbox.runtime.message.startError":"เกิดข้อผิดพลาดขณะเริ่ม Runbox","runbox.runtime.overlay.assigned.description":"(3 / 3)\nRunbox กำลังทำงานอยู่\nกรุณารอสักครู่!","runbox.runtime.overlay.assigned.description_timeout":"(3 / 3)\nRunbox ใช้เวลานานกว่าที่คาดไว้ในการทำงาน\nกรุณาอย่ารีเฟรชและรอสักครู่!","runbox.runtime.overlay.queued.description":"(2 / 3)\nกำลังรอคิวอยู่ที่ {waiters}...","runbox.runtime.overlay.queued.description_zero":"(2 / 3)\nRunbox ของคุณจะเริ่มทำงานเร็วๆ นี้","runbox.runtime.overlay.terminated.description.default":"หากต้องการดำเนินการฝึก Runbox ต่อ กรุณาคลิกปุ่มเชื่อมต่อ","runbox.runtime.overlay.terminated.description.os_disk_is_full":"พื้นที่ดิสก์ถูกใช้งานจนหมดแล้ว การฝึกปฏิบัติได้สิ้นสุดลง","runbox.runtime.overlay.terminated.description.quota_exceeded":"รันไทม์ถูกยกเลิกเนื่องจากเวลาการใช้งานหมดอายุแล้ว","runbox.runtime.overlay.terminated.description.quota_per_session_exceeded":"รันไทม์ถูกยกเลิกเนื่องจากเวลาการใช้งานต่อเซสชันหมดอายุแล้ว\nหากต้องการเชื่อมต่อกับ Runbox อีกครั้ง กรุณากดปุ่มด้านล่าง","runbox.runtime.overlay.terminated.title":"การเชื่อมต่อถูกยกเลิก","runbox.runtime.overlay.terminated.connect":"เชื่อมต่อ","runbox.runtime.overlay.terminated.unlimited":"ไม่จำกัด","runbox.runtime.overlay.terminated.contact":"ติดต่อฝ่ายบริการลูกค้า","runbox.runtime.overlay.terminated.quota.total":"เวลาที่สามารถใช้งานได้ทั้งหมด","runbox.runtime.overlay.terminated.quota.used":"เวลาที่ใช้ไปทั้งหมด","runbox.runtime.overlay.terminated.disk.total":"พื้นที่ดิสก์ทั้งหมด","runbox.runtime.overlay.terminated.disk.used":"พื้นที่ดิสก์ที่ใช้ไปทั้งหมด","runbox.runtime.overlay.conflicted.description":"การเชื่อมต่อกับการฝึก Runbox นี้จะยุติการทำงานของ Runbox ในสื่อการสอนอื่น\nกรุณาบันทึกงานที่ยังไม่ได้บันทึกก่อน","runbox.runtime.overlay.conflicted.title":"ขณะนี้ Runbox เชื่อมต่อกับสื่อการสอนอื่นอยู่","runbox.runtime.dialog.change_material.title":"ประกาศการเปลี่ยนการเชื่อมต่อ Runbox","runbox.runtime.dialog.change_material.description":"การเชื่อมต่อกับการฝึก Runbox นี้จะยุติการทำงานของ Runbox ในสื่อการสอนอื่น คุณต้องการดำเนินการต่อหรือไม่?"};
6
6
 
7
7
  exports.default = th;
@@ -0,0 +1,6 @@
1
+ interface MaterialRunboxAlmostEndSnackbarsProps {
2
+ runboxId: string;
3
+ onClickDetail: () => void;
4
+ }
5
+ declare const MaterialRunboxAlmostEndSnackbars: React.FC<MaterialRunboxAlmostEndSnackbarsProps>;
6
+ export default MaterialRunboxAlmostEndSnackbars;
@@ -0,0 +1,90 @@
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 runboxClient = require('@elice/runbox-client');
8
+ var material = require('@mui/material');
9
+ var MaterialRunboxSnackbar = require('../../shared/material-runbox-snackbar/MaterialRunboxSnackbar.js');
10
+
11
+ //
12
+ //
13
+ //
14
+ var QUOTA_ALMOST_END_MINUTES = 30;
15
+ var QUOTA_PER_SESSION_ALMOST_END_MINUTES = 10;
16
+ //
17
+ //
18
+ //
19
+ var MaterialRunboxAlmostEndSnackbars = function MaterialRunboxAlmostEndSnackbars(_ref) {
20
+ var runboxId = _ref.runboxId,
21
+ onClickDetail = _ref.onClickDetail;
22
+ var _useEliceRunboxQuota = runboxClient.useEliceRunboxQuota(),
23
+ quotaInfo = _useEliceRunboxQuota.quotaInfo,
24
+ quotaPerSessionInfo = _useEliceRunboxQuota.quotaPerSessionInfo;
25
+ var intl$1 = intl.useRawEliceIntl();
26
+ var renderDetailButton = function renderDetailButton() {
27
+ return jsxRuntime.jsx(material.Button, {
28
+ variant: "text",
29
+ color: "inherit",
30
+ onClick: onClickDetail,
31
+ children: jsxRuntime.jsx(material.Typography, {
32
+ variant: "body2",
33
+ children: intl$1.formatMessage({
34
+ id: 'runbox.timer.almost_end.snackbar.detail'
35
+ })
36
+ })
37
+ });
38
+ };
39
+ var renderQuotaAlmostEndMessage = function renderQuotaAlmostEndMessage() {
40
+ var _a;
41
+ return jsxRuntime.jsx(material.Typography, {
42
+ variant: "body2",
43
+ children: intl$1.formatMessage({
44
+ id: 'runbox.timer.almost_end.snackbar.quota'
45
+ }, {
46
+ time: intl$1.formatNumber((_a = quotaInfo.remainingQuota) !== null && _a !== void 0 ? _a : 0, {
47
+ style: 'unit',
48
+ unit: 'minute',
49
+ unitDisplay: 'short'
50
+ })
51
+ })
52
+ });
53
+ };
54
+ var renderQuotaPerSessionAlmostEndMessage = function renderQuotaPerSessionAlmostEndMessage() {
55
+ var _a;
56
+ return jsxRuntime.jsx(material.Typography, {
57
+ variant: "body2",
58
+ children: intl$1.formatMessage({
59
+ id: 'runbox.timer.almost_end.snackbar.quota_per_session'
60
+ }, {
61
+ time: intl$1.formatNumber((_a = quotaPerSessionInfo.remainingQuota) !== null && _a !== void 0 ? _a : 0, {
62
+ style: 'unit',
63
+ unit: 'minute',
64
+ unitDisplay: 'short'
65
+ })
66
+ })
67
+ });
68
+ };
69
+ return jsxRuntime.jsxs(jsxRuntime.Fragment, {
70
+ children: [jsxRuntime.jsx(MaterialRunboxSnackbar.default, {
71
+ once: true,
72
+ snackbarKey: "quotaAlmostEnd",
73
+ runboxId: runboxId,
74
+ open: !quotaInfo.isUnlimited && quotaInfo.remainingQuota <= QUOTA_ALMOST_END_MINUTES,
75
+ message: jsxRuntime.jsxs(jsxRuntime.Fragment, {
76
+ children: [renderQuotaAlmostEndMessage(), renderDetailButton()]
77
+ })
78
+ }), jsxRuntime.jsx(MaterialRunboxSnackbar.default, {
79
+ once: true,
80
+ snackbarKey: "quotaPerSessionAlmostEnd",
81
+ runboxId: runboxId,
82
+ open: !quotaPerSessionInfo.isUnlimited && quotaPerSessionInfo.remainingQuota <= QUOTA_PER_SESSION_ALMOST_END_MINUTES,
83
+ message: jsxRuntime.jsxs(jsxRuntime.Fragment, {
84
+ children: [renderQuotaPerSessionAlmostEndMessage(), renderDetailButton()]
85
+ })
86
+ })]
87
+ });
88
+ };
89
+
90
+ exports.default = MaterialRunboxAlmostEndSnackbars;
@@ -9,12 +9,6 @@ export interface MaterialRunboxTimerProps {
9
9
  * @default false
10
10
  */
11
11
  hideTimerPopover?: boolean;
12
- /**
13
- * Tutoring mode? Session-end warnings are for the learner, not for the tutor
14
- * looking at their runbox.
15
- * @default false
16
- */
17
- isTutoring?: boolean;
18
12
  }
19
13
  declare const MaterialRunboxTimer: React.FC<MaterialRunboxTimerProps>;
20
14
  export default MaterialRunboxTimer;
@@ -12,9 +12,7 @@ var muiElements = require('@elice/mui-elements');
12
12
  var runboxClient = require('@elice/runbox-client');
13
13
  var proSolidSvgIcons = require('@fortawesome/pro-solid-svg-icons');
14
14
  var material = require('@mui/material');
15
- var useRunboxSessionEndWarning = require('../hooks/useRunboxSessionEndWarning.js');
16
- var MaterialRunboxQuotaAlmostEndDialog = require('./MaterialRunboxQuotaAlmostEndDialog.js');
17
- var MaterialRunboxQuotaPerSessionAlmostEndDialog = require('./MaterialRunboxQuotaPerSessionAlmostEndDialog.js');
15
+ var MaterialRunboxAlmostEndSnackbars = require('./MaterialRunboxAlmostEndSnackbars.js');
18
16
  var MaterialRunboxTimerDetailPopover = require('./MaterialRunboxTimerDetailPopover.js');
19
17
  var time = require('../../../utils/time.js');
20
18
 
@@ -23,6 +21,10 @@ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'defau
23
21
  var _styled__default = /*#__PURE__*/_interopDefaultCompat(_styled);
24
22
  var React__default = /*#__PURE__*/_interopDefaultCompat(React);
25
23
 
24
+ //
25
+ //
26
+ //
27
+ var QUOTA_ALMOST_END_MINUTES = 30;
26
28
  //
27
29
  //
28
30
  //
@@ -44,21 +46,13 @@ var MaterialRunboxTimer = function MaterialRunboxTimer(_ref3) {
44
46
  headerElement = _ref3.headerElement,
45
47
  stopRuntime = _ref3.stopRuntime,
46
48
  _ref3$hideTimerPopove = _ref3.hideTimerPopover,
47
- hideTimerPopover = _ref3$hideTimerPopove === void 0 ? false : _ref3$hideTimerPopove,
48
- _ref3$isTutoring = _ref3.isTutoring,
49
- isTutoring = _ref3$isTutoring === void 0 ? false : _ref3$isTutoring;
49
+ hideTimerPopover = _ref3$hideTimerPopove === void 0 ? false : _ref3$hideTimerPopove;
50
50
  var intl$1 = intl.useRawEliceIntl();
51
51
  var _useEliceRunboxRunnin = runboxClient.useEliceRunboxRunning(),
52
52
  status = _useEliceRunboxRunnin.status;
53
53
  var isRunboxRunning = status === 'running';
54
54
  var _useEliceRunboxQuota = runboxClient.useEliceRunboxQuota(),
55
55
  quotaInfo = _useEliceRunboxQuota.quotaInfo;
56
- var _useRunboxSessionEndW = useRunboxSessionEndWarning.useRunboxSessionEndWarning({
57
- runboxId: runboxId,
58
- disabled: isTutoring || !isRunboxRunning
59
- }),
60
- warning = _useRunboxSessionEndW.warning,
61
- dismiss = _useRunboxSessionEndW.dismiss;
62
56
  var _React$useState = React__default.default.useState(false),
63
57
  _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
64
58
  isTimerDetailPopoverOpen = _React$useState2[0],
@@ -88,7 +82,7 @@ var MaterialRunboxTimer = function MaterialRunboxTimer(_ref3) {
88
82
  var hoursString = hours.toString().padStart(2, '0');
89
83
  var minutesString = minutes.toString().padStart(2, '0');
90
84
  var timeString = "".concat(hoursString, " : ").concat(minutesString);
91
- var isAlmostEnd = !quotaInfo.isUnlimited && quotaInfo.remainingQuota <= useRunboxSessionEndWarning.QUOTA_ALMOST_END_MINUTES;
85
+ var isAlmostEnd = !quotaInfo.isUnlimited && quotaInfo.remainingQuota <= QUOTA_ALMOST_END_MINUTES;
92
86
  return jsxRuntime.jsx(material.Tooltip, {
93
87
  arrow: true,
94
88
  placement: "bottom",
@@ -166,17 +160,19 @@ var MaterialRunboxTimer = function MaterialRunboxTimer(_ref3) {
166
160
  }
167
161
  });
168
162
  };
163
+ var renderAlmostEndSnackbars = function renderAlmostEndSnackbars() {
164
+ return jsxRuntime.jsx(MaterialRunboxAlmostEndSnackbars.default, {
165
+ runboxId: runboxId,
166
+ onClickDetail: function onClickDetail() {
167
+ return setTimerDetailPopoverOpen(true);
168
+ }
169
+ });
170
+ };
169
171
  if (!isRunboxRunning) {
170
172
  return null;
171
173
  }
172
174
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
173
- children: [renderTimer(), renderTimerDetailPopover(), jsxRuntime.jsx(MaterialRunboxQuotaAlmostEndDialog.default, {
174
- open: warning === 'quota',
175
- onClose: dismiss
176
- }), jsxRuntime.jsx(MaterialRunboxQuotaPerSessionAlmostEndDialog.default, {
177
- open: warning === 'quotaPerSession',
178
- onClose: dismiss
179
- })]
175
+ children: [renderTimer(), renderTimerDetailPopover(), renderAlmostEndSnackbars()]
180
176
  });
181
177
  };
182
178
 
@@ -13,12 +13,13 @@ var runboxClient = require('@elice/runbox-client');
13
13
  var proRegularSvgIcons = require('@fortawesome/pro-regular-svg-icons');
14
14
  var material = require('@mui/material');
15
15
  var reactQuery = require('@tanstack/react-query');
16
- var useRunboxSessionEndWarning = require('../hooks/useRunboxSessionEndWarning.js');
17
- var MaterialRunboxQuotaAmount = require('./MaterialRunboxQuotaAmount.js');
16
+ var time = require('../../../utils/time.js');
18
17
 
19
18
  //
20
19
  //
21
20
  //
21
+ var QUOTA_ALMOST_END_MINUTES = 30;
22
+ var QUOTA_PER_SESSION_ALMOST_END_MINUTES = 10;
22
23
  var QUOTA_POPOVER_NOT_SHOW_ON_START = 'MaterialRunboxTimer.timerDetailPopover.notShowOnStart';
23
24
  //
24
25
  //
@@ -117,6 +118,48 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
117
118
  })]
118
119
  });
119
120
  };
121
+ /**
122
+ *
123
+ */
124
+ var formatTimePart = function formatTimePart(value, unit) {
125
+ return intl$1.formatNumber(value, {
126
+ style: 'unit',
127
+ unit: unit,
128
+ unitDisplay: 'short'
129
+ });
130
+ };
131
+ /**
132
+ *
133
+ */
134
+ var renderQuotaTimePart = function renderQuotaTimePart(value, unit, color) {
135
+ if (value === 0) {
136
+ return null;
137
+ }
138
+ var parts = intl$1.formatNumberToParts(value, {
139
+ style: 'unit',
140
+ unit: unit,
141
+ unitDisplay: 'short'
142
+ });
143
+ return jsxRuntime.jsx(material.Typography, {
144
+ component: "span",
145
+ variant: "h5",
146
+ fontWeight: "extraBold",
147
+ color: color,
148
+ children: parts.map(function (part, index) {
149
+ if (part.type === 'unit') {
150
+ return jsxRuntime.jsx(material.Typography, {
151
+ component: "span",
152
+ variant: "body2",
153
+ fontWeight: "regular",
154
+ children: part.value
155
+ }, index);
156
+ }
157
+ return jsxRuntime.jsx("span", {
158
+ children: part.value
159
+ }, index);
160
+ })
161
+ });
162
+ };
120
163
  /**
121
164
  *
122
165
  */
@@ -142,8 +185,15 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
142
185
  })]
143
186
  });
144
187
  }
145
- var quotaColor = quotaInfo.remainingQuota > useRunboxSessionEndWarning.QUOTA_ALMOST_END_MINUTES ? 'success.main' : 'warning.main';
146
- var quotaBgColor = quotaInfo.remainingQuota > useRunboxSessionEndWarning.QUOTA_ALMOST_END_MINUTES ? undefined : 'warning.opacity03';
188
+ // Sync UI with the timer.
189
+ var _getTimeParts = time.getTimeParts(quotaInfo.remainingQuota * 60),
190
+ remainingHours = _getTimeParts.hours,
191
+ remainingMinutes = _getTimeParts.minutes;
192
+ var _getTimeParts2 = time.getTimeParts(quotaInfo.quota * 60),
193
+ totalHours = _getTimeParts2.hours,
194
+ totalMinutes = _getTimeParts2.minutes;
195
+ var quotaColor = quotaInfo.remainingQuota > QUOTA_ALMOST_END_MINUTES ? 'success.main' : 'warning.main';
196
+ var quotaBgColor = quotaInfo.remainingQuota > QUOTA_ALMOST_END_MINUTES ? undefined : 'warning.opacity03';
147
197
  return jsxRuntime.jsxs(material.Stack, {
148
198
  direction: "column",
149
199
  gap: "0.5rem",
@@ -155,10 +205,15 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
155
205
  children: intl$1.formatMessage({
156
206
  id: 'runbox.timer.popover.quota.title'
157
207
  })
158
- }), jsxRuntime.jsx(MaterialRunboxQuotaAmount.default, {
159
- remainingQuota: quotaInfo.remainingQuota,
160
- quota: quotaInfo.quota,
161
- color: quotaColor
208
+ }), jsxRuntime.jsxs(material.Typography, {
209
+ variant: "body2",
210
+ children: [jsxRuntime.jsxs(material.Stack, {
211
+ component: "span",
212
+ display: "inline-flex",
213
+ direction: "row",
214
+ gap: "0.25rem",
215
+ children: [renderQuotaTimePart(remainingHours, 'hour', quotaColor), renderQuotaTimePart(remainingMinutes, 'minute', quotaColor)]
216
+ }), [" / ", totalHours > 0 ? formatTimePart(totalHours, 'hour') : null, totalMinutes > 0 ? formatTimePart(totalMinutes, 'minute') : null].filter(Boolean).join(' ')]
162
217
  })]
163
218
  });
164
219
  };
@@ -177,8 +232,14 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
177
232
  })]
178
233
  });
179
234
  }
180
- var perSessionColor = quotaPerSessionInfo.remainingQuota > useRunboxSessionEndWarning.QUOTA_PER_SESSION_ALMOST_END_MINUTES ? 'success.main' : 'warning.main';
181
- var perSessionBgColor = quotaPerSessionInfo.remainingQuota > useRunboxSessionEndWarning.QUOTA_PER_SESSION_ALMOST_END_MINUTES ? undefined : 'warning.opacity03';
235
+ var _getTimeParts3 = time.getTimeParts(quotaPerSessionInfo.remainingQuota * 60),
236
+ remainingHours = _getTimeParts3.hours,
237
+ remainingMinutes = _getTimeParts3.minutes;
238
+ var _getTimeParts4 = time.getTimeParts(quotaPerSessionInfo.quota * 60),
239
+ totalHours = _getTimeParts4.hours,
240
+ totalMinutes = _getTimeParts4.minutes;
241
+ var perSessionColor = quotaPerSessionInfo.remainingQuota > QUOTA_PER_SESSION_ALMOST_END_MINUTES ? 'success.main' : 'warning.main';
242
+ var perSessionBgColor = quotaPerSessionInfo.remainingQuota > QUOTA_PER_SESSION_ALMOST_END_MINUTES ? undefined : 'warning.opacity03';
182
243
  return jsxRuntime.jsxs(material.Stack, {
183
244
  direction: "column",
184
245
  gap: "0.5rem",
@@ -190,28 +251,28 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
190
251
  children: intl$1.formatMessage({
191
252
  id: 'runbox.timer.popover.quota_per_session.title'
192
253
  })
193
- }), jsxRuntime.jsx(MaterialRunboxQuotaAmount.default, {
194
- remainingQuota: quotaPerSessionInfo.remainingQuota,
195
- quota: quotaPerSessionInfo.quota,
196
- color: perSessionColor
254
+ }), jsxRuntime.jsxs(material.Typography, {
255
+ variant: "body2",
256
+ children: [jsxRuntime.jsxs(material.Stack, {
257
+ component: "span",
258
+ display: "inline-flex",
259
+ direction: "row",
260
+ gap: "0.25rem",
261
+ children: [renderQuotaTimePart(remainingHours, 'hour', perSessionColor), renderQuotaTimePart(remainingMinutes, 'minute', perSessionColor)]
262
+ }), [" / ", totalHours > 0 ? formatTimePart(totalHours, 'hour') : null, totalMinutes > 0 ? formatTimePart(totalMinutes, 'minute') : null].filter(Boolean).join(' ')]
197
263
  }), jsxRuntime.jsx(material.Typography, {
198
264
  variant: "body2",
199
265
  color: "text.tertiary",
200
266
  children: intl$1.formatMessage({
201
267
  id: 'runbox.timer.popover.quota_per_session.description'
202
268
  }, {
203
- time: intl$1.formatNumber(quotaPerSessionInfo.quota, {
204
- style: 'unit',
205
- unit: 'minute',
206
- unitDisplay: 'short'
207
- })
269
+ time: formatTimePart(quotaPerSessionInfo.quota, 'minute')
208
270
  })
209
271
  })]
210
272
  });
211
273
  };
212
274
  return jsxRuntime.jsx(material.Popover, Object.assign({
213
275
  open: open,
214
- TransitionComponent: material.Fade,
215
276
  onClose: onClose
216
277
  }, props, {
217
278
  children: jsxRuntime.jsxs(material.Stack, {
@@ -222,7 +283,6 @@ var MaterialRunboxTimerDetailPopover = function MaterialRunboxTimerDetailPopover
222
283
  width: "22rem",
223
284
  bgcolor: "background.paper",
224
285
  children: [renderHeader(), renderCloseButton(), jsxRuntime.jsxs(material.Card, {
225
- elevation: 0,
226
286
  sx: {
227
287
  bgcolor: 'background.neutral'
228
288
  },
@@ -0,0 +1,3 @@
1
+ var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABvQAAAGuCAYAAABP+OGYAAAK02lDQ1BEaXNwbGF5AABIx62Xd1BT2R7Hz73pjRaIgJRQQ5dOACkhtFAE6SAqIQkklBgCQUXsLCq4FkREsKzoqoiCZQXEhliwLYoFuxtkEVCfi7ooipp3A4+wuzPvjzfzfjMn5zO/+Z1fubln5nsBoIRyJZIcWAOAXHGBNCYkgJ6UnELHDQAIoAAJmAAzLi9fwoqOjgCITe5/t489SDRid+2VucD/Zlp8QT4PACgV4XR+Pi8X4XZkveJJpAUAoA4jfrOFBRIl30ZYW4o0iPDvSs6c4FElp48zmjweExfDRpgOAJ7M5UozASDbIX56IS8TyUNWzuAo5ovECBcj7MsTcvkIn0HYLjd3gZIHEbZC4iUAUJCnA5jpf8mZ+bf86ar8XG6miifmGjd8oChfksNdDP7flpsjm6xhiSyyUBoao6yHPL+H2QvCVSxOnxU1ySL+RE9KFspC4yeZl89OmWQ+NzBcdTZnVsQkZ4iCOao8BZy4SRbkB8VOsnRBjKpWhpTNmmSudLwuEWG5LDte5RcKOKr8RcK4xEkuFCXMmuT87NjwqRi2yi+Vxaj6F4hDAqbqBqtmz83/y7wijupsgTAuVDU7d6p/gZg1lTM/SdUbXxAYNBUTr4qXFASoaklyolXxgpwQlT+/MFZ1tgB5OafORqueYRY3LHqSgQhEAi7g0dUnCYACwaIC5SDsBZLFUlGmsIDOQm6bgM4R8xzs6M6Ozi4AKO/uxOvwgTZ+JyHa9Snf2noA/DUVCsWpKV/wBQCOuQFAcpzyMZA7rHYagKtsnkxaOOFDK38wyL+nDrSBHjACZsAK2ANn4A68gT8IAmEgCsSBZDAP6VUIcoEULATFYCUoBeVgE9gKasBusBccBEfAcdACzoAL4Aq4AW6D++AJkIN+8BoMg49gDIIgHESBqJAeZAxZQLaQM8SEfKEgKAKKgZKhNCgTEkMyqBhaDZVDFVANtAeqh45Bp6AL0DWoG3oE9UJD0HvoC4yCybA2bAhbwjNgJsyCw+E4eC6cCefBRXAJvAGuhuvgw3AzfAG+Ad+H5fBreAQFUCQUDWWCskcxUWxUFCoFlYGSopahylBVqDpUI6oN1Ym6i5Kj3qA+o7FoKpqOtkd7o0PR8WgeOg+9DL0eXYM+iG5GX0LfRfeih9HfMRSMAcYW44XhYJIwmZiFmFJMFWY/5iTmMuY+ph/zEYvF0rAMrAc2FJuMzcIuwa7H7sQ2Ydux3dg+7AgOh9PD2eJ8cFE4Lq4AV4rbjjuMO4+7g+vHjeJJeGO8Mz4Yn4IX41fhq/CH8Ofwd/AD+DGCBsGC4EWIIvAJiwkbCfsIbYRbhH7CGFGTyCD6EOOIWcSVxGpiI/Ey8SnxA4lEMiV5kmaTRKQVpGrSUdJVUi/pM1mLbENmk1PJMvIG8gFyO/kR+QOFQrGk+FNSKAWUDZR6ykXKc8qoGlXNQY2jxldbrlar1qx2R+2tOkHdQp2lPk+9SL1K/YT6LfU3GgQNSw22BldjmUatximNBxojmlRNJ80ozVzN9ZqHNK9pDmrhtCy1grT4WiVae7UuavVRUVQzKpvKo66m7qNepvZrY7UZ2hztLO1y7SPaXdrDOlo6rjoJOot0anXO6shpKJoljUPLoW2kHaf10L5MM5zGmiaYtm5a47Q70z7pTtf11xXoluk26d7X/aJH1wvSy9bbrNei90wfrW+jP1t/of4u/cv6b6ZrT/eezpteNv349McGsIGNQYzBEoO9BjcNRgyNDEMMJYbbDS8avjGiGfkbZRlVGp0zGjKmGvsai4wrjc8bv6Lr0Fn0HHo1/RJ92MTAJNREZrLHpMtkzJRhGm+6yrTJ9JkZ0YxplmFWadZhNmxubB5pXmzeYP7YgmDBtBBabLPotPhkybBMtFxj2WI5yNBlcBhFjAbGUyuKlZ9VnlWd1T1rrDXTOtt6p/VtG9jGzUZoU2tzyxa2dbcV2e607bbD2Hnaie3q7B7Yk+1Z9oX2Dfa9DjSHCIdVDi0Ob2eYz0iZsXlG54zvjm6OOY77HJ84aTmFOa1yanN672zjzHOudb7nQnEJdlnu0uryztXWVeC6y/WhG9Ut0m2NW4fbN3cPd6l7o/uQh7lHmscOjwdMbWY0cz3zqifGM8BzuecZz89e7l4FXse9/vC29872PuQ9OJMxUzBz38w+H1Mfrs8eH7kv3TfN9ydfuZ+JH9evzu+Fv5k/33+//wDLmpXFOsx6G+AYIA04GfCJ7cVeym4PRAWGBJYFdgVpBcUH1QQ9DzYNzgxuCB4OcQtZEtIeigkND90c+oBjyOFx6jnDYR5hS8MuhZPDY8Nrwl9E2ERII9oi4ciwyC2RT2dZzBLPaokCUZyoLVHPohnRedGnZ2NnR8+unf0yximmOKYzlho7P/ZQ7Me4gLiNcU/ireJl8R0J6gmpCfUJnxIDEysS5UkzkpYm3UjWTxYlt6bgUhJS9qeMzAmas3VOf6pbamlqz1zG3EVzr83Tn5cz7+x89fnc+SfSMGmJaYfSvnKjuHXckXRO+o70YR6bt433mu/Pr+QPCXwEFYKBDJ+MiozBTJ/MLZlDQj9hlfCNiC2qEb3LCs3anfUpOyr7QLYiJzGnKRefm5Z7SqwlzhZfWmC0YNGCbomtpFQiz/PK25o3LA2X7s+H8ufmtxZoIyLppsxK9oOst9C3sLZwdGHCwhOLNBeJF91cbLN43eKBouCin5egl/CWdBSbFK8s7l3KWrpnGbQsfVnHcrPlJcv7V4SsOLiSuDJ75a+rHFdVrPpzdeLqthLDkhUlfT+E/NBQqlYqLX2wxnvN7rXotaK1Xetc1m1f972MX3a93LG8qvzret766z86/Vj9o2JDxoauje4bd23CbhJv6tnst/lghWZFUUXflsgtzZX0yrLKP7fO33qtyrVq9zbiNtk2eXVEdet28+2btn+tEdbcrw2obdphsGPdjk87+Tvv7PLf1bjbcHf57i8/iX56uCdkT3OdZV3VXuzewr0v9yXs6/yZ+XP9fv395fu/HRAfkB+MOXip3qO+/pDBoY0NcIOsYehw6uHbRwKPtDbaN+5pojWVHwVHZUdfHUs71nM8/HjHCeaJxl8sftlxknqyrBlqXtw83CJskbcmt3afCjvV0ebddvK0w+kDZ0zO1J7VObvxHPFcyTnF+aLzI+2S9jcXMi/0dczveHIx6eK9S7MvdV0Ov3z1SvCVi52szvNXfa6eueZ17dR15vWWG+43mm+63Tz5q9uvJ7vcu5pvedxqve15u617Zve5O353LtwNvHvlHufejfuz7nf3xPc8fJD6QP6Q/3DwUc6jd48LH489WfEU87TsmcazqucGz+t+s/6tSe4uP9sb2HvzReyLJ328vte/5//+tb/kJeVl1YDxQP2g8+CZoeCh26/mvOp/LXk99qb0X5r/2vHW6u0vf/j/cXM4abj/nfSd4v36D3ofDvzp+mfHSPTI84+5H8c+lY3qjR78zPzc+SXxy8DYwq+4r9XfrL+1fQ///lSRq1BIuFLuuBRAIQvOyADg/QFEGycDQEV0OXHOhLYeN2jie2CcwH/jCf09bu4ANCKbUhb5I9r/hFLO+iO5EVZKojh/ALu4qNZ/LD/DxXkiFxlRlphRheKDIQC4NgC+SRWKsZ0Kxbd9SLOPAGjPm9D0SsMiWr6REZ7OkPVUkkf/qacn9P5fZvznDpQduIJ/7v8GalcZkZI7WTwAAAAJcEhZcwAACxMAAAsTAQCanBgAAAXDaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA5LjEtYzAwMSA3OS5hOGQ0NzUzNDksIDIwMjMvMDMvMjMtMTM6MDU6NDUgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyNC43IChNYWNpbnRvc2gpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyMy0wNC0xOFQxNzo0NTozOCswOTowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjMtMDktMTVUMTU6NTM6NDIrMDk6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMjMtMDktMTVUMTU6NTM6NDIrMDk6MDAiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmFmYzIyMzMwLWRiOTMtNGE4YS04M2ZhLWU1NzI0Yjg4NDk3NSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDplNjk3Yzk5Yi0xOGVmLTQzNTMtOTNjZi00ODI2YmJmMTNhMWQiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplNjk3Yzk5Yi0xOGVmLTQzNTMtOTNjZi00ODI2YmJmMTNhMWQiPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJjcmVhdGVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmU2OTdjOTliLTE4ZWYtNDM1My05M2NmLTQ4MjZiYmYxM2ExZCIgc3RFdnQ6d2hlbj0iMjAyMy0wNC0xOFQxNzo0NTozOCswOTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI0LjcgKE1hY2ludG9zaCkiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmFmYzIyMzMwLWRiOTMtNGE4YS04M2ZhLWU1NzI0Yjg4NDk3NSIgc3RFdnQ6d2hlbj0iMjAyMy0wOS0xNVQxNTo1Mzo0MiswOTowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDI0LjcgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DXBbPQAAdTRJREFUeNrt3Q20XWd93/ldr0yLYdKJvRqGMLMyjAboxA1MRjPFKem0GRycTp0ELak0XYQEEtUxUKzWodAmoY4cVizipHIIqSCOI9sYMNgYx1zwuzBCyBjb12+y/CLZgG2MMQaEEAYpNpzZz7nn+h5d3at79r1nn73/z/781vqushqDpfPs/bz8v/t5nqLX6xUt5xgAQK0UAAAAAAAAAID20sY/1I+V/FLJu0t2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";
2
+
3
+ export { img as default };
@@ -11,6 +11,7 @@ import { useQuery } from '@tanstack/react-query';
11
11
  import MaterialAdminRunboxConfirmDialog from './MaterialAdminRunboxConfirmDialog.js';
12
12
  import MaterialRunboxAlert from './MaterialRunboxAlert.js';
13
13
  import MaterialRunboxBody from './MaterialRunboxBody.js';
14
+ import MaterialRunboxFooter from './MaterialRunboxFooter.js';
14
15
  import MaterialRunboxHeader from './MaterialRunboxHeader.js';
15
16
  import { useMaterialRunboxContext } from './contexts/MaterialRunboxContext.js';
16
17
  import { useMaterialRunboxApiContext } from './contexts/MaterialRunboxApiContext.js';
@@ -282,7 +283,7 @@ var MaterialRunboxContent = function MaterialRunboxContent(_ref) {
282
283
  isTutoring: isTutoring
283
284
  }), jsx(MaterialRunboxBody, Object.assign({
284
285
  setSnackbarRoot: setSnackbarRoot
285
- }, props))]
286
+ }, props)), jsx(MaterialRunboxFooter, Object.assign({}, props))]
286
287
  })
287
288
  })
288
289
  })
@@ -0,0 +1,4 @@
1
+ import type React from 'react';
2
+ import type { RuntimeProps } from './runtime/Runtime';
3
+ declare const MaterialRunboxFooter: React.FC<RuntimeProps>;
4
+ export default MaterialRunboxFooter;
@@ -0,0 +1,56 @@
1
+ import _styled from '@emotion/styled/base';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { EliceRunboxResourceStat, EliceRunboxNetworkStat, EliceRunboxRunningStatus } from '@elice/runbox-client';
4
+ import { Box, Stack, Divider } from '@mui/material';
5
+
6
+ //
7
+ //
8
+ //
9
+ var StyledFooter = /*#__PURE__*/_styled("div", {
10
+ target: "e9lbhtr0"
11
+ })("position:relative;flex:0 0 2rem;display:flex;justify-content:space-between;align-items:center;padding:0 1rem;width:100%;border-top:1px solid ", function (_ref) {
12
+ var theme = _ref.theme;
13
+ return theme.palette.divider;
14
+ }, ";background-color:", function (_ref2) {
15
+ var theme = _ref2.theme;
16
+ return theme.palette.background.paper;
17
+ }, ";");
18
+ //
19
+ //
20
+ //
21
+ var MaterialRunboxFooter = function MaterialRunboxFooter(_ref3) {
22
+ var runtimeTemplate = _ref3.runtimeTemplate;
23
+ /**
24
+ * Resource stats
25
+ */
26
+ var renderFooterResourceStats = function renderFooterResourceStats() {
27
+ var _a, _b;
28
+ return jsx(Box, {
29
+ children: jsx(EliceRunboxResourceStat, {
30
+ gpu: ((_b = (_a = runtimeTemplate.gpus) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0
31
+ })
32
+ });
33
+ };
34
+ /**
35
+ * Status
36
+ */
37
+ var renderFooterStatus = function renderFooterStatus() {
38
+ return jsxs(Stack, {
39
+ direction: "row",
40
+ gap: "0.5rem",
41
+ divider: jsx(Divider, {
42
+ flexItem: true,
43
+ orientation: "vertical"
44
+ }),
45
+ children: [jsx(EliceRunboxNetworkStat, {}), jsx(EliceRunboxRunningStatus, {})]
46
+ });
47
+ };
48
+ //
49
+ //
50
+ //
51
+ return jsxs(StyledFooter, {
52
+ children: [renderFooterResourceStats(), renderFooterStatus()]
53
+ });
54
+ };
55
+
56
+ export { MaterialRunboxFooter as default };