@selfcommunity/react-ui 0.8.0-live.66 → 0.8.0-live.68

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 (76) hide show
  1. package/lib/cjs/assets/liveStream/event.d.ts +2 -0
  2. package/lib/cjs/assets/liveStream/event.js +3 -0
  3. package/lib/cjs/assets/liveStream/live.d.ts +2 -0
  4. package/lib/cjs/assets/liveStream/live.js +3 -0
  5. package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +1 -0
  6. package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +38 -81
  7. package/lib/cjs/components/LiveStreamForm/LiveStreamFormSettings.js +1 -1
  8. package/lib/cjs/components/LiveStreamForm/constants.d.ts +4 -0
  9. package/lib/cjs/components/LiveStreamForm/constants.js +4 -0
  10. package/lib/cjs/components/LiveStreamRoom/LiveStreamRoom.js +10 -3
  11. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.d.ts +20 -0
  12. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.js +28 -0
  13. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +21 -2
  14. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTile.js +1 -1
  15. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTileAvatar.js +1 -2
  16. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/VideoConference.js +7 -2
  17. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.d.ts +11 -0
  18. package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.js +104 -0
  19. package/lib/cjs/components/LiveStreamRoom/constants.d.ts +10 -0
  20. package/lib/cjs/components/LiveStreamRoom/constants.js +11 -1
  21. package/lib/cjs/components/Notification/LiveStream/LiveStream.d.ts +15 -0
  22. package/lib/cjs/components/Notification/LiveStream/LiveStream.js +72 -0
  23. package/lib/cjs/components/Notification/LiveStream/index.d.ts +3 -0
  24. package/lib/cjs/components/Notification/LiveStream/index.js +5 -0
  25. package/lib/cjs/components/Notification/Notification.js +5 -1
  26. package/lib/cjs/components/SnippetNotifications/SnippetNotifications.js +4 -0
  27. package/lib/cjs/components/ToastNotifications/ToastNotifications.js +6 -2
  28. package/lib/cjs/components/UserLiveStreamWidget/Skeleton.d.ts +2 -0
  29. package/lib/cjs/components/UserLiveStreamWidget/Skeleton.js +28 -0
  30. package/lib/cjs/components/UserLiveStreamWidget/UserLiveStreamWidget.d.ts +47 -0
  31. package/lib/cjs/components/UserLiveStreamWidget/UserLiveStreamWidget.js +129 -0
  32. package/lib/cjs/components/UserLiveStreamWidget/constants.d.ts +1 -0
  33. package/lib/cjs/components/UserLiveStreamWidget/constants.js +4 -0
  34. package/lib/cjs/components/UserLiveStreamWidget/index.d.ts +4 -0
  35. package/lib/cjs/components/UserLiveStreamWidget/index.js +8 -0
  36. package/lib/cjs/index.d.ts +2 -1
  37. package/lib/cjs/index.js +4 -1
  38. package/lib/esm/assets/liveStream/event.d.ts +2 -0
  39. package/lib/esm/assets/liveStream/event.js +1 -0
  40. package/lib/esm/assets/liveStream/live.d.ts +2 -0
  41. package/lib/esm/assets/liveStream/live.js +1 -0
  42. package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +1 -0
  43. package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +34 -78
  44. package/lib/esm/components/LiveStreamForm/LiveStreamFormSettings.js +1 -1
  45. package/lib/esm/components/LiveStreamForm/constants.d.ts +4 -0
  46. package/lib/esm/components/LiveStreamForm/constants.js +4 -0
  47. package/lib/esm/components/LiveStreamRoom/LiveStreamRoom.js +10 -3
  48. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.d.ts +20 -0
  49. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.js +23 -0
  50. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +22 -3
  51. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTile.js +1 -1
  52. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTileAvatar.js +1 -2
  53. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/VideoConference.js +7 -2
  54. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.d.ts +11 -0
  55. package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.js +100 -0
  56. package/lib/esm/components/LiveStreamRoom/constants.d.ts +10 -0
  57. package/lib/esm/components/LiveStreamRoom/constants.js +10 -0
  58. package/lib/esm/components/Notification/LiveStream/LiveStream.d.ts +15 -0
  59. package/lib/esm/components/Notification/LiveStream/LiveStream.js +69 -0
  60. package/lib/esm/components/Notification/LiveStream/index.d.ts +3 -0
  61. package/lib/esm/components/Notification/LiveStream/index.js +2 -0
  62. package/lib/esm/components/Notification/Notification.js +5 -1
  63. package/lib/esm/components/SnippetNotifications/SnippetNotifications.js +4 -0
  64. package/lib/esm/components/ToastNotifications/ToastNotifications.js +6 -2
  65. package/lib/esm/components/UserLiveStreamWidget/Skeleton.d.ts +2 -0
  66. package/lib/esm/components/UserLiveStreamWidget/Skeleton.js +24 -0
  67. package/lib/esm/components/UserLiveStreamWidget/UserLiveStreamWidget.d.ts +47 -0
  68. package/lib/esm/components/UserLiveStreamWidget/UserLiveStreamWidget.js +126 -0
  69. package/lib/esm/components/UserLiveStreamWidget/constants.d.ts +1 -0
  70. package/lib/esm/components/UserLiveStreamWidget/constants.js +1 -0
  71. package/lib/esm/components/UserLiveStreamWidget/index.d.ts +4 -0
  72. package/lib/esm/components/UserLiveStreamWidget/index.js +4 -0
  73. package/lib/esm/index.d.ts +2 -1
  74. package/lib/esm/index.js +2 -1
  75. package/lib/umd/react-ui.js +1 -1
  76. package/package.json +7 -7
@@ -0,0 +1,2 @@
1
+ declare const _default: "data:image/png;base64,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";
2
+ export default _default;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAARAElEQVR4nO1dCVRUSZbNqenpmZ6ZrpnuMzN9ps/MmTkz3VNtldqlImpZlpYbssgqCK4o7uKC+1ouJYi7gvuKuOICiruIqCCyyOKKoFKKoCz5Iz6LiCl657wgMxsoliQzWcR/z3mH+BGf/Blx/4sX8eJFpEqlQIECBQoUKFCgQIECBQoUKFCgQIECBQqq4tWrV//AGGsvSdIAWZZdSTjnvQoLC/8PwC+q3a7A3ADw15IkWXPOt3DO0xhj7znnqEkYY2WMsTjO+XJJkr5S2DAjCgoKfs0YW8A5z66NgLqEMfaBMXaFMTYQwGcKOcZrxF9xzscyxtQNIaC4uFgIpYuKilBYWCiE8kpKSh5rNJoJAPpqZRyAOQDstdcWCmE1oKCg4PeMsciGagM1vEajEULpt2/f4vXr10LevXsnRKPRfCgvL88EEAngGQA1gHgAEQB21vR9PmnIsmzJGMszpnuqSUpKSgQh9Jc0RkdQaWlpRnl5+TStlvy+uevdIiHLcl/OeYm5yCApLS0VmkJ/iRRKV5ICAEEAvmjuurc4SJLU3RxkUMOXlZXVK2/evBF2paysTAKwAEAPAP5amaP6lCFJ0n8yxvLNoRHa7qheofuoC9Om0wB0ADBXKyNUn/L8gnMea85uykhZ2dxt0SLAOZ/TAsig+cr7wsLCLqpPfXjLOX/d3GRUIiXhk548MsZ2NDcJNYiz6lNEcXHx78jn1AIIqK4lt1WfIhhji5u78WsTWZY7qVrbyEmW5c6cc09ZlueSMMYmMsa+BfA3dA95bJu74euQjarWAM75f3POAxhjUh2VLUmNj0948fy5uC7Iz0dyXJy+/MGdVGS/eCHS+Xl5SImP15fdT03Fy+xskc7LzUVqYqK+7F5yMl7l5OjL7txONKXbeqL6mKFWqz9njK1jjL01pMITnZ2w2XeFSF8+fRrW7doiPy9XXI8ZaIvtq1eJ9LkTx2H753YoKCgQ157WVti7cYNIhx89ArsOf6bGE9dD+3yP/ZsDRfpk8H44WlqY2m39r+pjBOfckXP+sr4K3ktOxoYlizHVfTAGdvwart2/EcQM79cHVl+1wXgHB3Ft16E93Hp0F+lhfXqLsgmOFWW2X7fH4O++FWkigMooTWLTvi3cv+tRUfZ9L1i1/RLebq7wnzsH8dE3GkyIJEnuqo8NjLFJda3c6eTgtq1w7GyBXevWISYyUpCwZIo3EmJisHvDetGw0RER4nrI9z3xo890xN24js0rfUVZ1MULiI68Ardvv8GPM6aLdMCPy0XZjSsR4tqlqyX8Zs8U6fVLFguCbkRE4OD2bYLEDUt+0GuTgeKn+pjAOZ9tSMWo23HuaomMtDTk5uYKmTFimCCC0tcuXYRLty7Iyc4W11Pc3RC0OVCkI86Ew7V7N7x8mSOuJw1yxuGdO0T6QlioaGjdZ45zGIiQvXtE+syxEKFBurKs588wytoKQQGbGkLIEdXHAkmSbAzRDCZJGNq7Fy6Gheob50VWFh5npOuvSXQNXj1tSlnm0yd4lpmpv06Oj4N9pw7IzsoylJAsSZI88vLy/lHVkiHL8m8YYwWGVColIUF0K0RCbm4uHt67J+yDk2VnXA4Pr9KA5pTE2JsY9E1XoXmx167p8we0/VK8HA20JzLn3JcGLqqWCMbYBkMrE3nurCDk1atXokHOHj8mjPqmZUux/ofFjUbIoR3bsWjieKyY4YM9Gzfo8z16fSdsipEjrxxaQFO1JMiy/FvG2BtDK0FDWiIkV0vIi6znwphPG+KBO0lJjUbIk4wMzBvjhVmeI5H+8KE+f2jv7xG8ZbOxhNCgoJwxNlnVUsA5n96QClQnJLeZxVRCtKR8kCRpgqolgDEWZQwh4x0dMMHJsUnFd9YMrFm4AH6zZ2H1/Hkiz6FTR2z198Opw4dwPGgfbl6NhCSpjSHlHbmBmpWMrKysXzWku6pMCLk7Sg1YVm1scbToBKcuneE7cwbWLVqIya4uGNGvL2IirxijLfd1frkmQ1FR0b9qHYMUI1XU0C/d4gjpbIFD27dVyYuNuiqMfWxUlDGkzG4SIn766ae/o7hYznmpKf1tSyPEybIzDu/Y/rP8xJgYDO/bB2q1Wjg6t670w9Ip3mJ2TxPXOrouCiP6ZaOSoVar/4MxllT94e/fv8eHDx9ERGBrI6S0tBRzRnlixvBh8OjVUzgwL4WFCq/AKOsBmD92jN6TXAMpDo1GRnFx8b8xxtLpQbIs6+NiK0tjaciT9DRM9RiMiNOn8CA1Fd6DB8FnuIdwpUSePYO7SbfhPdhFn3ft4nmkJiRgirvuPlfhD0u6FVsljwy3IYSQv22ahzvUBflV8mXOhM1Z4j2pNkKONWZw8wXdgyiyj7SispSXl5tdQ5gk4WlGGu6kROPw7kDhQo+5cgUbli1AYvwVHNi5UUzmrl+8iE0rFom84G3rELJnlyAqcOUSkbcvcA1O7t+HS6fCsHX1cpG3e5M/wg4GG0RISUlFkHZNZZJajWF9e+P2rdia6pltLgI+A9BLFwn+5s2bZbrI8eqiiyKndOVocl2ZKYTciorC+qXzRQM2JyH1CdmV2pyTjLF/MgchnwM4o436jtBoNIW6CPHqQqGX9KUorfuCujIKyTSFkNSEBIyy7o9pQ9ww3nEgQg/sF93OaBsrTBs6GOMc7XD6yGEkxkRjlM2AijwHO5w9FiLIHG1rLfLG2tvhYuhJQaaXXcV9Y+xtEXH6tMmE0KrmNn8/+AwdgszHj39WT7PGcwH4nUajWUShlfTh9FenAbpI8bpEtxfjYzfqpbVI2MEDwr6QNv7gPRku3buJelXTkB7mJOSP5eXl10gLyJDTX13YfrVI8RpFR6QhhKTfv19hmId5YKqHG84fP460u3cqDPiwCmN96VQoHqSk6O+jvCtnwnH39u0qeVHnzyElPq7CgIs8V9y4fAm3b97EFP3nueJm5BWjCSFNraxhJDTgoIUyWgHV1ZMCOlTmBAUmVG9MamhdV2WueUhC9A2sXTxH9O8h+7Zi78b1YmK2bum8FmlDqKuqKXg7ZM9urJgxvbKGtDc3IcHVG5P2UtDD69KA1k5IaS3yJC0NI6366cj4QPsgzUoIY+yosY3eEELuJydjlNZYT3C2x8ngINxJTNQb8PFOA0WfnRx3C6NttQbc0Q7hR46I2fRovVEfiPMnjiPu+vWqRj0sFLFXI+Flp8uzRUR4uNkJycnKEsvH2no+NCsZWkLWNwUhpU0kNJkje7I/MEAshgUsX4YDW7cIby9pm6mffzbkKBaMG6vTkA2NQcjEpiAknYy62yBMJ6Pu7oZzx4/h4R0y6i4ij4zwxbCTuJecVCWP3nIaHnu7/SXv6rmzwuhOGuSIqUNcce3SOeTm5IjGd7DoKJ7r+u03wvVPGkVRKZRnb9ER+zZtFJM9Y8jIfv4Mg3t0Fx4AbT2/NjshkiS1bQpCEhrDhvj+UPG/ewNFdItzF0sc2LIZz58+RWWQHy7jwX1s918p4sIo+OL2zRhkPs4wSOhlOrk/CIO6dxPDYG0d01SNBcbYI3OQQBGI+wI2CU1wsrSAYxcL7Fy7BpwxsxNC9+1Yv0IYb+t2X2HxxAkoZAz1IS8nR2goBd5RcB2tidQnXnY2WD59GhJioqvUlzE2tbEImWwqGc9/yhRf3HemD5JiY5GfmyvmChT4Ns7BXswRhvfrjXH2dvC07ofQ4GAxv9DnDegnZuWp8fFV8s6EHBGfp8ujEc6FkyeE1kVdCBchpWsXzMf79+UwFG/LyjB/jJeITHl0/76p6+zfmZ0Q8uvrPL3GyryxXsJ1XVPfu3PtGrHGICZcsbE4umunWN8ml4ixxpUcgmQfpg1xxzuNpk4CiKxD27aK5+ruLS4qgqdVf8wbM9rkPSWNsvOKc96hocu0OqG3jFbeqJFqaryioiK49+wh1hxIW4iggOVLMdrGGnNGe6IgL09/L7naadhLje1lay2Gs6Q1+jw7GzF7Jy2hWKtHd+/WSwaFBB3ft0/ItpV++rIbly4JO0dDaBNJsVM1VlSioSuFtHVgi5+vCCSgNYPFkybU+UavnD0L21f547V20imIKizE2oULMH+slz6vNhsSUM2G0NBz1sjh9ZJBz6Xu6Wl6uhhgzPUaVcXYj+jfV3wHEwnZq2osqNXqroyxx3V9ARr2UQQ7DSFPHTwoAgaWeE82qusplGURgE2aYQghJw7uxLmTJ8Ro6WTQvjrJWDV3DkKD9wsnKAXnebsOQvq9e1Xu2+rnK5ZwTbShr1SNiZycnL/nnPswxjIrPzjr2TMkxd3CWPuBiI64rG9UqnDey5dG2wP/ObMReqDCzUFzDnLFTx/qjkmDnHD+xDEx56A8moH7zvLB88xM0dUkRkfXSwZ9Ji3BTh86BKkJdM5MVdBEj/aoGBMSVKVtsrJ+pWoK0CFgjx8+HDPVY3CKQ6cO7yY4O5bOHjXyQ232oqGGOfzIYSwcPxZ2Hb/GrrVrqnRptQl5XYmQmuxHTWTQWkZ1zdAh+nKFHaGXzRRCZFn+nyYhZIlK9ZlTF4vbq+bPLZMKCkwmobSSkG+JGpfS9NbPGjkCm1f8WO//1aUhK3x8RDdK95HNIDJoUlgbzoWEmEVDaEtfkxBi1aaN22RXlyJDzxFpiGQ8fFDlmoIMaDSWmZFR5//RYIAmdmEHgqs0LnliZ3uOEMNbImP6EI86ySDsWL1K7CcxkQyY3etbG5wsLYJ0/XtTiN+smcLPVd9987xGVxkxEQKWLRU2Yc/GjWJ4XB8ZBNrMQ+GmLdqoV4ZzF8uDR3fvajJCFk0YLzbXCN9UHTKwUwexl/Dpo0f6xiUf1SQXJwRvDgRT02FxdeNW1FX9ljoTh70hTUaI1Zd/8hjv5FBiiLE1VV7l5MC5axexSzcoMKBO2btpI1x7dMfMEcNFiJLOT2WoC6X09Wt42dqIyaqp3RVjzLbJCOnZs+cvnCwtUpZPm1paPZDMnJL5OENs6CEXuqENQfMh2jpNAwGa5BkKiphZOmUyHDp3wv2UFFPJSGryQ2vsv/ji1/YWHQ/btG+rGda3d9FoG+vC8Q72bye5OKMmoUli8q1botIUEDDZ1QW7168TS8MkNHuufL/ngP5iRY/eegqea0iD0NYCcqH4zZyB0pKSesmgrmy250gxKKBdXiaS8VaW5eY7zXTAH/7w+YA2bTr0b/enTlv9/UbSJLEmeXj3rjhRgf5SsEBS3C2hAZV9X5Xvp1k6ndxgbMOQv4vsDi0e0bqFOi/3Z0S8zMoSayV0qAB5GYyMeK9OyERVSwLn/LqpleJmkifp6cKvRnvUSWNo9DRzxDDMGDZUf0ABuVuoSzR1EkjBDbRVQ9XSIMuyVXMTwasJbX0+ExIi7MqPPtOEp5dCQSkihbbXmeEZ2XRStqqlgjEW1twkcDMJY2w+bYNmjMUzxjSVysgDfo1Or2jxe9cZY/+l3c/9sZOxvXK9APwt7csvKir6F9XHBs65E/WrzdCI+eZ4Lv2aAu0cU7UmcM6XNTEh2eTQoyMwjF3p1Eo05/yfVa0RjLHVTaQZmYWFhX/UPVeSpG6c8+dGbG9e2+j7BJsb2p275Y1ISGx+fv6/1/KrO4vqO8xfe9DaIcZYO9WnAlmW+xlysBlv+Bu9qr794fSTR5zz3oyxhZzzINoHyDnfT6MnsnUt9iCZxgZt9eKcBxp69B+vmww6RaJjc9epVYCGxYyxDYYe61SJBA1j7Dj92Fdz16FVAsAvOed9GGP+jLHLZIR1oyPt0PWl9se8ttCZh6125KNAgQIFChQoUKBAgQIFChQoUKBAgQIFChQoUKBqnfh/x0mV0mXjHZwAAAAASUVORK5CYII=';
@@ -0,0 +1,2 @@
1
+ declare const _default: "data:image/png;base64,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";
2
+ export default _default;
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = 'data:image/png;base64,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';
@@ -1,4 +1,5 @@
1
1
  import { LiveStreamType } from '../types';
2
+ export declare const PREFIX = "SCLiveStreamSelector";
2
3
  export interface LiveStreamSelectorProps {
3
4
  /**
4
5
  * Overrides or extends the styles applied to the component.
@@ -1,100 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREFIX = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  const jsx_runtime_1 = require("react/jsx-runtime");
5
6
  const react_1 = require("react");
6
7
  const styles_1 = require("@mui/material/styles");
7
8
  const material_1 = require("@mui/material");
8
9
  const Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
9
- const constants_1 = require("../constants");
10
10
  const system_1 = require("@mui/system");
11
11
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
12
12
  const types_1 = require("../types");
13
13
  const notistack_1 = require("notistack");
14
14
  const react_intl_1 = require("react-intl");
15
+ const event_1 = tslib_1.__importDefault(require("../../../assets/liveStream/event"));
16
+ const live_1 = tslib_1.__importDefault(require("../../../assets/liveStream/live"));
17
+ const api_services_1 = require("@selfcommunity/api-services");
18
+ const constants_1 = require("../../LiveStreamRoom/constants");
19
+ exports.PREFIX = 'SCLiveStreamSelector';
15
20
  const classes = {
16
- root: `${constants_1.PREFIX}-root`,
17
- options: `${constants_1.PREFIX}-options`,
18
- actions: `${constants_1.PREFIX}-actions`
21
+ root: `${exports.PREFIX}-root`,
22
+ warning: `${exports.PREFIX}-warning`,
23
+ options: `${exports.PREFIX}-options`,
24
+ actions: `${exports.PREFIX}-actions`
19
25
  };
20
26
  const Root = (0, styles_1.styled)(material_1.Container, {
21
- name: constants_1.PREFIX,
27
+ name: exports.PREFIX,
22
28
  slot: 'Root'
23
- })(({ theme }) => ({
24
- [`& .${classes.options}`]: {
25
- display: 'flex',
26
- justifyContent: 'center',
27
- alignItems: 'center',
28
- [theme.breakpoints.down('sm')]: {
29
- display: 'block'
30
- },
31
- '& > div': {
32
- width: '290px',
33
- [theme.breakpoints.down('sm')]: {
34
- margin: '0px auto',
35
- marginBottom: theme.spacing(2)
36
- }
37
- }
38
- },
39
- [`& .${classes.actions}`]: {
40
- display: 'flex',
41
- justifyContent: 'flex-end',
42
- alignItems: 'flex-end',
43
- marginTop: theme.spacing(4)
44
- }
45
- }));
29
+ })(({ theme }) => ({}));
46
30
  // Styled components
47
31
  const OptionCard = (0, styles_1.styled)(material_1.Paper, {
32
+ name: exports.PREFIX,
33
+ slot: 'optionCardRoot',
48
34
  shouldForwardProp: (prop) => prop !== 'selected'
49
- })(({ theme, selected }) => ({
50
- maxWidth: 300,
51
- height: 350,
52
- padding: theme.spacing(3),
53
- margin: theme.spacing(0, 3),
54
- cursor: 'pointer',
55
- transition: theme.transitions.create(['background-color', 'box-shadow'], {
56
- duration: theme.transitions.duration.short
57
- }),
58
- backgroundColor: selected ? theme.palette.grey[100] : theme.palette.background.paper,
59
- '&:hover': {
60
- backgroundColor: theme.palette.grey[50],
61
- boxShadow: theme.shadows[2]
62
- },
63
- border: `1px solid ${theme.palette.divider}`,
64
- [`& > div`]: {
65
- display: 'flex',
66
- justifyContent: 'space-between',
67
- alignItems: 'center',
68
- marginBottom: 2,
69
- maxWidth: '300px'
70
- },
71
- [`& ul`]: {
72
- marginTop: theme.spacing(2),
73
- padding: 0,
74
- listStyle: 'none'
75
- }
76
- }));
77
- const RadioIndicator = (0, styles_1.styled)(material_1.Radio, {
78
- // shouldForwardProp: (prop) => prop !== 'selected'
79
- })(({ theme, selected }) => ({
80
- /* width: 16,
81
- height: 16,
82
- borderRadius: '50%',
83
- border: `2px solid ${selected ? theme.palette.secondary.main : theme.palette.grey[300]}`,
84
- backgroundColor: selected ? theme.palette.secondary.main : 'transparent',
85
- transition: theme.transitions.create(['border-color', 'background-color'], {
86
- duration: theme.transitions.duration.shortest
87
- }) */
88
- }));
89
- const FeatureItem = (0, styles_1.styled)(material_1.Box)(({ theme }) => ({
90
- display: 'flex',
91
- alignItems: 'flex-start',
92
- gap: theme.spacing(1.5),
93
- marginBottom: theme.spacing(2),
94
- '&:last-child': {
95
- marginBottom: 0
96
- }
97
- }));
35
+ })(({ theme, selected }) => ({}));
36
+ const FeatureItem = (0, styles_1.styled)(material_1.Box, {
37
+ name: exports.PREFIX,
38
+ slot: 'featureItemRoot'
39
+ })(({ theme }) => ({}));
98
40
  /**
99
41
  *> API documentation for the Community-JS LiveStreamSelector component. Learn about the available props and the CSS API.
100
42
  *
@@ -118,16 +60,18 @@ function LiveStreamSelector(inProps) {
118
60
  //PROPS
119
61
  const props = (0, system_1.useThemeProps)({
120
62
  props: inProps,
121
- name: constants_1.PREFIX
63
+ name: exports.PREFIX
122
64
  });
123
65
  const { className, liveSelected, onLiveSelected, onNext } = props, rest = tslib_1.__rest(props, ["className", "liveSelected", "onLiveSelected", "onNext"]);
124
66
  // CONTEXT
125
67
  const { enqueueSnackbar } = (0, notistack_1.useSnackbar)();
126
68
  // STATE
127
69
  const [selectedOption, setSelectedOption] = (0, react_1.useState)(liveSelected);
70
+ const [timeRemaining, setTimeRemaining] = (0, react_1.useState)(null);
128
71
  const options = [
129
72
  {
130
73
  title: 'Schedule a live event',
74
+ image: event_1.default,
131
75
  type: types_1.LiveStreamType.EVENT_LIVE,
132
76
  features: [
133
77
  'Schedule a live room or stream in your event space',
@@ -139,6 +83,7 @@ function LiveStreamSelector(inProps) {
139
83
  },
140
84
  {
141
85
  title: 'Start a live stream',
86
+ image: live_1.default,
142
87
  type: types_1.LiveStreamType.DIRECT_LIVE,
143
88
  features: [
144
89
  'Best for webinars, Q&As, AMAs, and for presentations',
@@ -164,14 +109,26 @@ function LiveStreamSelector(inProps) {
164
109
  onNext && onNext(selectedOption);
165
110
  }
166
111
  };
167
- return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), maxWidth: "lg", sx: { py: 4 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", component: "h1", align: "center", gutterBottom: true, sx: { mb: 4, fontWeight: 500 } }, { children: "How do you want to go live?" })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.options }, { children: options.map((option, index) => ((0, jsx_runtime_1.jsxs)(OptionCard, Object.assign({ selected: selectedOption === option.type, onClick: () => handleOptionSelect(option.type), elevation: 0, role: "button", tabIndex: 0, onKeyDown: (e) => {
112
+ const fetchLivestreamStatus = () => {
113
+ api_services_1.LiveStreamApiClient.getMonthlyDuration()
114
+ .then((r) => {
115
+ setTimeRemaining(r.remaining_minutes);
116
+ })
117
+ .catch((error) => {
118
+ console.error('Error fetching live status:', error);
119
+ });
120
+ };
121
+ (0, react_1.useEffect)(() => {
122
+ fetchLivestreamStatus();
123
+ }, []);
124
+ return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), maxWidth: "lg", sx: { py: 4 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", component: "h1", align: "center", gutterBottom: true, sx: { mb: 4, fontWeight: 500 } }, { children: "How do you want to go live?" })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.warning }, { children: (0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "warning" }, { children: timeRemaining <= 1 ? ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.selector.warningMinutesExausted", defaultMessage: "ui.liveStreamRoom.selector.warningMinutesExausted" })) : timeRemaining <= constants_1.WARNING_THRESHOLD_EXPIRING_SOON ? ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.selector.warningRemainingMinutes", defaultMessage: "ui.liveStreamRoom.selector.warningRemainingMinutes", values: { minutes: timeRemaining } })) : null })) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.options }, { children: options.map((option, index) => ((0, jsx_runtime_1.jsxs)(OptionCard, Object.assign({ selected: selectedOption === option.type, onClick: () => handleOptionSelect(option.type), elevation: 0, role: "button", tabIndex: 0, onKeyDown: (e) => {
168
125
  if (e.key === 'Enter' || e.key === ' ') {
169
126
  handleOptionSelect(index);
170
127
  e.preventDefault();
171
128
  }
172
- }, theme: undefined }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", component: "h2", sx: { fontWeight: 500 } }, { children: option.title })), (0, jsx_runtime_1.jsx)(material_1.Radio, { checked: selectedOption === option.type })] }), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ component: "ul" }, { children: option.features.map((feature, featureIndex) => {
129
+ }, theme: undefined }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", component: "h2", sx: { fontWeight: 500 } }, { children: option.title })), (0, jsx_runtime_1.jsx)(material_1.Radio, { checked: selectedOption === option.type })] }), (0, jsx_runtime_1.jsx)("img", { src: option.image, alt: "logo" }), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ component: "ul" }, { children: option.features.map((feature, featureIndex) => {
173
130
  const _Icon = option.icons[featureIndex];
174
131
  return ((0, jsx_runtime_1.jsxs)(FeatureItem, Object.assign({ component: "li" }, { children: [_Icon, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body2", color: "text.secondary", sx: { flex: 1 } }, { children: feature }))] }), featureIndex));
175
- }) }))] }), index))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ disabled: !selectedOption, variant: "contained", onClick: handleNext, color: "secondary" }, { children: "Next" })) }))] })));
132
+ }) }))] }), index))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ disabled: !selectedOption || !timeRemaining, variant: "contained", onClick: handleNext, color: "secondary" }, { children: "Next" })) }))] })));
176
133
  }
177
134
  exports.default = LiveStreamSelector;
@@ -55,7 +55,7 @@ function LiveStreamSettingsForm(inProps) {
55
55
  /**
56
56
  * Renders root object
57
57
  */
58
- return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.muteParticipants), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['muteParticipants']: !(settings === null || settings === void 0 ? void 0 : settings.muteParticipants) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.muteParticipants", defaultMessage: "ui.liveStreamForm.muteParticipants" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableVideo), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableVideo']: !(settings === null || settings === void 0 ? void 0 : settings.disableVideo) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableVideo", defaultMessage: "ui.liveStreamForm.disableVideo" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableChat), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableChat']: !(settings === null || settings === void 0 ? void 0 : settings.disableChat) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableChat", defaultMessage: "ui.liveStreamForm.disableChat" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableShareScreen']: !(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableShareScreen", defaultMessage: "ui.liveStreamForm.disableShareScreen" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['hideParticipantsList']: !(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.hideParticipantsList", defaultMessage: "ui.liveStreamForm.hideParticipantsList" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['automaticallyNotifyFollowers']: !(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.automaticallyNotifyFollowers", defaultMessage: "ui.liveStreamForm.automaticallyNotifyFollowers" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ className: classes.accessView }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, Object.assign({ id: "viewLabel" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }) })), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ name: "view", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }), labelId: "viewLabel", fullWidth: true, value: (_a = settings === null || settings === void 0 ? void 0 : settings.view) !== null && _a !== void 0 ? _a : types_1.SCLiveStreamViewType.SPEAKER, onChange: (e) => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['view']: e.target.value })), displayEmpty: true, renderValue: (selected) => {
58
+ return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.muteParticipants), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['muteParticipants']: !(settings === null || settings === void 0 ? void 0 : settings.muteParticipants) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.muteParticipants", defaultMessage: "ui.liveStreamForm.muteParticipants" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableVideo), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableVideo']: !(settings === null || settings === void 0 ? void 0 : settings.disableVideo) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableVideo", defaultMessage: "ui.liveStreamForm.disableVideo" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableChat), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableChat']: !(settings === null || settings === void 0 ? void 0 : settings.disableChat) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableChat", defaultMessage: "ui.liveStreamForm.disableChat" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableShareScreen']: !(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableShareScreen", defaultMessage: "ui.liveStreamForm.disableShareScreen" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['hideParticipantsList']: !(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.hideParticipantsList", defaultMessage: "ui.liveStreamForm.hideParticipantsList" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['automaticallyNotifyFollowers']: !(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.automaticallyNotifyFollowers", defaultMessage: "ui.liveStreamForm.automaticallyNotifyFollowers" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.showInProfile), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['showInProfile']: !(settings === null || settings === void 0 ? void 0 : settings.showInProfile) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.showInProfile", defaultMessage: "ui.liveStreamForm.showInProfile" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ className: classes.accessView }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, Object.assign({ id: "viewLabel" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }) })), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ name: "view", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }), labelId: "viewLabel", fullWidth: true, value: (_a = settings === null || settings === void 0 ? void 0 : settings.view) !== null && _a !== void 0 ? _a : types_1.SCLiveStreamViewType.SPEAKER, onChange: (e) => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['view']: e.target.value })), displayEmpty: true, renderValue: (selected) => {
59
59
  return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ className: classes.accessViewIcon }, { children: selected === types_1.SCLiveStreamViewType.SPEAKER ? 'upload' : 'category' })), "\u00A0", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${selected}`, defaultMessage: `ui.liveStreamForm.view.${selected}` })] }));
60
60
  } }, { children: Object.values(types_1.SCLiveStreamViewType).map((f) => ((0, jsx_runtime_1.jsx)(material_1.MenuItem, Object.assign({ value: f }, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body1" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [(0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ className: classes.accessViewIcon }, { children: f === types_1.SCLiveStreamViewType.SPEAKER ? 'upload' : 'category' })), "\u00A0", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${f}`, defaultMessage: `ui.liveStreamForm.view.${f}` })] }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${f}.description`, defaultMessage: `ui.liveStreamForm.view.${f}.description` }) })] }) }), f))) }))] }))] })));
61
61
  }
@@ -1,5 +1,8 @@
1
1
  import { SCLiveStreamViewType } from '@selfcommunity/types';
2
2
  export declare const PREFIX = "SCLiveStreamForm";
3
+ /**
4
+ * Default live stream settings
5
+ */
3
6
  export declare const LIVESTREAM_DEFAULT_SETTINGS: {
4
7
  muteParticipants: boolean;
5
8
  hideParticipantsList: boolean;
@@ -7,5 +10,6 @@ export declare const LIVESTREAM_DEFAULT_SETTINGS: {
7
10
  disableVideo: boolean;
8
11
  disableChat: boolean;
9
12
  disableShareScreen: boolean;
13
+ showInProfile: boolean;
10
14
  view: SCLiveStreamViewType;
11
15
  };
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LIVESTREAM_DEFAULT_SETTINGS = exports.PREFIX = void 0;
4
4
  const types_1 = require("@selfcommunity/types");
5
5
  exports.PREFIX = 'SCLiveStreamForm';
6
+ /**
7
+ * Default live stream settings
8
+ */
6
9
  exports.LIVESTREAM_DEFAULT_SETTINGS = {
7
10
  muteParticipants: true,
8
11
  hideParticipantsList: false,
@@ -10,5 +13,6 @@ exports.LIVESTREAM_DEFAULT_SETTINGS = {
10
13
  disableVideo: true,
11
14
  disableChat: false,
12
15
  disableShareScreen: true,
16
+ showInProfile: true,
13
17
  view: types_1.SCLiveStreamViewType.SPEAKER
14
18
  };
@@ -19,6 +19,8 @@ const Errors_1 = require("../../constants/Errors");
19
19
  const PreJoin_1 = require("./LiveStreamVideoConference/PreJoin");
20
20
  const LiveStreamProvider_1 = require("./LiveStreamVideoConference/LiveStreamProvider");
21
21
  const notistack_1 = require("notistack");
22
+ const DialogContent_1 = tslib_1.__importDefault(require("@mui/material/DialogContent"));
23
+ const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
22
24
  const classes = {
23
25
  root: `${constants_1.PREFIX}-root`,
24
26
  content: `${constants_1.PREFIX}-content`,
@@ -38,6 +40,11 @@ const Root = (0, styles_1.styled)(material_1.Box, {
38
40
  name: constants_1.PREFIX,
39
41
  slot: 'Root'
40
42
  })(({ theme }) => ({}));
43
+ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
44
+ name: constants_1.PREFIX,
45
+ slot: 'Root',
46
+ overridesResolver: (props, styles) => styles.dialogRoot
47
+ })(({ theme }) => ({}));
41
48
  /**
42
49
  *> API documentation for the Community-JS LiveStreamRoom component. Learn about the available props and the CSS API.
43
50
  *
@@ -129,7 +136,7 @@ function LiveStreamRoom(inProps) {
129
136
  _msg = intl.formatMessage({ id: _error, defaultMessage: _error });
130
137
  }
131
138
  setError(_msg);
132
- enqueueSnackbar(_msg, { variant: 'error', autoHideDuration: 5000 });
139
+ enqueueSnackbar(_msg, { variant: 'error' });
133
140
  }
134
141
  setLoading(false);
135
142
  });
@@ -162,9 +169,9 @@ function LiveStreamRoom(inProps) {
162
169
  /**
163
170
  * Renders root object
164
171
  */
165
- return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ id: id, className: (0, classnames_1.default)(classes.root, className) }, rest, { children: scLiveStream.closed_at_by_host ? ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.closed", defaultMessage: "ui.liveStreamRoom.conference.closed" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) }))] }))) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.content, "data-lk-theme": "default" }, { children: connectionDetails === undefined || preJoinChoices === undefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [startPrejoinContent && (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.startPrejoinContent }, { children: startPrejoinContent })), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "h5", className: classes.title }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title }))), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body1", className: classes.description }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description }))), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: (0, classnames_1.default)(classes.preJoin, { [classes.preJoinLoading]: loading || error }) }, { children: [(0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(PreJoin_1.PreJoin, { defaults: preJoinDefaults, onSubmit: handlePreJoinSubmit, onError: handlePreJoinError }) })), loading && ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.prejoinLoader }, { children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, {}), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body2" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.connecting", defaultMessage: "ui.liveStreamRoom.connecting" }) }))] }))), error && ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.prejoinLoader }, { children: (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body2" }, { children: error })) })))] })), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endPrejoinContent }, { children: [Boolean(scUserContext.user &&
172
+ return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ id: id, className: (0, classnames_1.default)(classes.root, className) }, rest, { children: scLiveStream.closed_at_by_host ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsxs)(DialogContent_1.default, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.closed", defaultMessage: "ui.liveStreamRoom.conference.closed" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) }))] })) }))) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.content, "data-lk-theme": "default" }, { children: connectionDetails === undefined || preJoinChoices === undefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [startPrejoinContent && (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.startPrejoinContent }, { children: startPrejoinContent })), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "h5", className: classes.title }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title }))), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body1", className: classes.description }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description }))), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: (0, classnames_1.default)(classes.preJoin, { [classes.preJoinLoading]: loading || error }) }, { children: [(0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(PreJoin_1.PreJoin, { defaults: preJoinDefaults, onSubmit: handlePreJoinSubmit, onError: handlePreJoinError }) })), loading && ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.prejoinLoader }, { children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, {}), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body2" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.connecting", defaultMessage: "ui.liveStreamRoom.connecting" }) }))] })))] })), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endPrejoinContent }, { children: [Boolean(scUserContext.user &&
166
173
  scUserContext.user.id !== scLiveStream.host.id &&
167
174
  scLiveStream &&
168
- (((_a = scLiveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants) || (scLiveStream && ((_b = scLiveStream.settings) === null || _b === void 0 ? void 0 : _b.disableVideo)))) && ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ sx: { width: '60%' }, spacing: 1 }, { children: [scLiveStream && ((_c = scLiveStream.settings) === null || _c === void 0 ? void 0 : _c.muteParticipants) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "outlined", severity: "info", component: 'div' }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableMicrophone", defaultMessage: "ui.liveStreamRoom.hostDisableMicrophone" }) }))), scLiveStream && ((_d = scLiveStream.settings) === null || _d === void 0 ? void 0 : _d.disableVideo) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "outlined", severity: "info" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableVideo", defaultMessage: "ui.liveStreamRoom.hostDisableVideo" }) })))] }))), endPrejoinContent] }))] })) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.conference }, { children: (0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(LiveStreamVideoConference_1.default, Object.assign({ connectionDetails: connectionDetails, userChoices: preJoinChoices }, LiveStreamVideoConferenceComponentProps)) })) }))) }))) })));
175
+ (((_a = scLiveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants) || (scLiveStream && ((_b = scLiveStream.settings) === null || _b === void 0 ? void 0 : _b.disableVideo)))) && ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ sx: { width: '60%' }, spacing: 1 }, { children: [scLiveStream && ((_c = scLiveStream.settings) === null || _c === void 0 ? void 0 : _c.muteParticipants) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "info", component: 'div' }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableMicrophone", defaultMessage: "ui.liveStreamRoom.hostDisableMicrophone" }) }))), scLiveStream && ((_d = scLiveStream.settings) === null || _d === void 0 ? void 0 : _d.disableVideo) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "info" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableVideo", defaultMessage: "ui.liveStreamRoom.hostDisableVideo" }) })))] }))), endPrejoinContent] }))] })) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.conference }, { children: (0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(LiveStreamVideoConference_1.default, Object.assign({ connectionDetails: connectionDetails, userChoices: preJoinChoices }, LiveStreamVideoConferenceComponentProps)) })) }))) }))) })));
169
176
  }
170
177
  exports.default = LiveStreamRoom;
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ import type { TrackReferenceOrPlaceholder } from '@livekit/components-core';
3
+ import type { ParticipantClickEvent } from '@livekit/components-core';
4
+ export type FocusLayoutContainerProps = React.HTMLAttributes<HTMLDivElement>;
5
+ /**
6
+ * The `FocusLayoutContainer` is a layout component that expects two children:
7
+ * A small side component: In a video conference, this is usually a carousel of participants
8
+ * who are not in focus. And a larger main component to display the focused participant.
9
+ * For example, with the `FocusLayout` component.
10
+ */
11
+ export declare function FocusLayoutContainer(props: FocusLayoutContainerProps): JSX.Element;
12
+ export interface FocusLayoutProps extends React.HTMLAttributes<HTMLElement> {
13
+ /** The track to display in the focus layout. */
14
+ trackRef?: TrackReferenceOrPlaceholder;
15
+ onParticipantClick?: (evt: ParticipantClickEvent) => void;
16
+ }
17
+ /**
18
+ * The `FocusLayout` component is just a light wrapper around the `ParticipantTile` to display a single participant.
19
+ */
20
+ export declare function FocusLayout({ trackRef, ...htmlProps }: FocusLayoutProps): JSX.Element;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FocusLayout = exports.FocusLayoutContainer = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const ParticipantTile_1 = require("./ParticipantTile");
7
+ const utils_1 = require("./utils");
8
+ /**
9
+ * The `FocusLayoutContainer` is a layout component that expects two children:
10
+ * A small side component: In a video conference, this is usually a carousel of participants
11
+ * who are not in focus. And a larger main component to display the focused participant.
12
+ * For example, with the `FocusLayout` component.
13
+ */
14
+ function FocusLayoutContainer(props) {
15
+ const elementProps = (0, utils_1.mergeProps)(props, { className: 'lk-focus-layout' });
16
+ return (0, jsx_runtime_1.jsx)("div", Object.assign({}, elementProps, { children: props.children }));
17
+ }
18
+ exports.FocusLayoutContainer = FocusLayoutContainer;
19
+ /**
20
+ * The `FocusLayout` component is just a light wrapper around the `ParticipantTile` to display a single participant.
21
+ */
22
+ function FocusLayout(_a) {
23
+ var { trackRef } = _a, htmlProps = tslib_1.__rest(_a, ["trackRef"]);
24
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
25
+ // @ts-ignore
26
+ return (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, Object.assign({ trackRef: trackRef }, htmlProps));
27
+ }
28
+ exports.FocusLayout = FocusLayout;
@@ -16,8 +16,11 @@ const constants_2 = require("../constants");
16
16
  const react_intl_1 = require("react-intl");
17
17
  const VideoConference_1 = require("./VideoConference");
18
18
  const LiveStreamProvider_1 = require("./LiveStreamProvider");
19
+ const DialogContent_1 = tslib_1.__importDefault(require("@mui/material/DialogContent"));
20
+ const BaseDialog_1 = tslib_1.__importDefault(require("../../../shared/BaseDialog"));
19
21
  const classes = {
20
22
  root: `${constants_1.PREFIX}-root`,
23
+ logo: `${constants_1.PREFIX}-logo`,
21
24
  title: `${constants_1.PREFIX}-title`,
22
25
  content: `${constants_1.PREFIX}-content`,
23
26
  endConferenceWrap: `${constants_1.PREFIX}-end-conference-wrap`,
@@ -29,6 +32,12 @@ const Root = (0, styles_1.styled)(material_1.Box, {
29
32
  name: constants_1.PREFIX,
30
33
  slot: 'Root'
31
34
  })(({ theme }) => ({}));
35
+ const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
36
+ name: constants_1.PREFIX,
37
+ slot: 'Root',
38
+ overridesResolver: (props, styles) => styles.dialogRoot
39
+ })(({ theme }) => ({}));
40
+ const PREFERENCES = [react_core_1.SCPreferences.LOGO_NAVBAR_LOGO];
32
41
  /**
33
42
  *> API documentation for the Community-JS LiveStreamVideoConference component. Learn about the available props and the CSS API.
34
43
  *
@@ -59,10 +68,18 @@ function LiveStreamVideoConference(inProps) {
59
68
  }, VideoConferenceComponentProps = {}, startConferenceEndContent, endConferenceEndContent, options = constants_2.defaultVideoOptions } = props, rest = tslib_1.__rest(props, ["className", "handleOnLeaveRoom", "userChoices", "connectionDetails", "LiveKitRoomComponentProps", "VideoConferenceComponentProps", "startConferenceEndContent", "endConferenceEndContent", "options"]);
60
69
  // CONTEXT
61
70
  const scUserContext = (0, react_core_1.useSCUser)();
71
+ const scRoutingContext = (0, react_core_1.useSCRouting)();
72
+ const scPreferences = (0, react_core_1.useSCPreferences)();
62
73
  const { liveStream } = (0, LiveStreamProvider_1.useLiveStream)();
63
74
  // STATE
64
75
  const [liveActive, setLiveActive] = (0, react_1.useState)(true);
65
76
  const [error, setError] = (0, react_1.useState)(null);
77
+ // PREFERENCES
78
+ const preferences = (0, react_1.useMemo)(() => {
79
+ const _preferences = {};
80
+ PREFERENCES.map((p) => (_preferences[p] = p in scPreferences.preferences ? scPreferences.preferences[p].value : null));
81
+ return _preferences;
82
+ }, [scPreferences.preferences]);
66
83
  // PERMISSIONS
67
84
  const canUseAudio = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && liveStream && (liveStream.host.id === scUserContext.user.id || (liveStream && !((_a = liveStream === null || liveStream === void 0 ? void 0 : liveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants))); }, [scUserContext, liveStream]);
68
85
  const canUseVideo = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && liveStream && (liveStream.host.id === scUserContext.user.id || (liveStream && !((_a = liveStream === null || liveStream === void 0 ? void 0 : liveStream.settings) === null || _a === void 0 ? void 0 : _a.disableVideo))); }, [scUserContext, liveStream]);
@@ -89,7 +106,9 @@ function LiveStreamVideoConference(inProps) {
89
106
  */
90
107
  const handleError = (0, react_1.useCallback)((error) => {
91
108
  console.error(error);
92
- setError(`Encountered an unexpected error, check the console logs for details: ${error.message}`);
109
+ if (error.message !== 'Client initiated disconnect') {
110
+ setError(`Encountered an unexpected error, check the console logs for details: ${error.message}`);
111
+ }
93
112
  setLiveActive(false);
94
113
  }, []);
95
114
  /**
@@ -109,6 +128,6 @@ function LiveStreamVideoConference(inProps) {
109
128
  /**
110
129
  * Renders root object
111
130
  */
112
- return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: liveActive && !error ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.LiveKitRoom, Object.assign({ connect: Boolean(liveActive), token: connectionDetails['participantToken'], serverUrl: connectionDetails['serverUrl'], connectOptions: connectOptions, video: userChoices.videoEnabled, audio: userChoices.audioEnabled, onDisconnected: handleOnLeave, onEncryptionError: handleEncryptionError, onError: handleError }, LiveKitRoomComponentProps, { children: (0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, { children: [(0, jsx_runtime_1.jsx)(VideoConference_1.VideoConference, Object.assign({ chatMessageFormatter: components_react_1.formatChatMessageLinks }, (speakerFocused && { speakerFocused: liveStream.host }), VideoConferenceComponentProps, { disableMicrophone: !canUseAudio, disableCamera: !canUseVideo, disableChat: !canUseChat, disableShareScreen: !canUseShareScreen, hideParticipantsList: hideParticipantsList })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionState, {})] }) })) })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: error ? ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [startConferenceEndContent, error, endConferenceEndContent] }))) : liveActive === false ? ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [startConferenceEndContent, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.end", defaultMessage: "ui.liveStreamRoom.conference.end" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] }))) : ((0, jsx_runtime_1.jsx)(material_1.CircularProgress, {})) })) })));
131
+ return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: liveActive && !error ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.LiveKitRoom, Object.assign({ connect: Boolean(liveActive), token: connectionDetails['participantToken'], serverUrl: connectionDetails['serverUrl'], connectOptions: connectOptions, video: userChoices.videoEnabled, audio: userChoices.audioEnabled, onDisconnected: handleOnLeave, onEncryptionError: handleEncryptionError, onError: handleError }, LiveKitRoomComponentProps, { children: (0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, { children: [(0, jsx_runtime_1.jsx)(VideoConference_1.VideoConference, Object.assign({ chatMessageFormatter: components_react_1.formatChatMessageLinks }, (speakerFocused && { speakerFocused: liveStream.host }), VideoConferenceComponentProps, { disableMicrophone: !canUseAudio, disableCamera: !canUseVideo, disableChat: !canUseChat, disableShareScreen: !canUseShareScreen, hideParticipantsList: hideParticipantsList })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionState, {})] }) })) })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: error ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsx)(DialogContent_1.default, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}), className: classes.logo }, { children: (0, jsx_runtime_1.jsx)("img", { src: preferences[react_core_1.SCPreferences.LOGO_NAVBAR_LOGO], alt: "logo" }) })), startConferenceEndContent, error, (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] })) }) }))) : liveActive === false ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsx)(DialogContent_1.default, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}), className: classes.logo }, { children: (0, jsx_runtime_1.jsx)("img", { src: preferences[react_core_1.SCPreferences.LOGO_NAVBAR_LOGO], alt: "logo" }) })), startConferenceEndContent, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.end", defaultMessage: "ui.liveStreamRoom.conference.end" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] })) }) }))) : ((0, jsx_runtime_1.jsx)(material_1.CircularProgress, {})) })) })));
113
132
  }
114
133
  exports.default = LiveStreamVideoConference;
@@ -60,7 +60,7 @@ exports.ParticipantTile =
60
60
  return ((0, jsx_runtime_1.jsx)("div", Object.assign({ ref: ref, style: { position: 'relative' } }, elementProps, { children: (0, jsx_runtime_1.jsx)(TrackRefContextIfNeeded, Object.assign({ trackRef: trackReference }, { children: (0, jsx_runtime_1.jsxs)(ParticipantContextIfNeeded, Object.assign({ participant: trackReference.participant }, { children: [children !== null && children !== void 0 ? children : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, components_core_1.isTrackReference)(trackReference) &&
61
61
  (((_c = trackReference.publication) === null || _c === void 0 ? void 0 : _c.kind) === 'video' ||
62
62
  trackReference.source === livekit_client_1.Track.Source.Camera ||
63
- trackReference.source === livekit_client_1.Track.Source.ScreenShare) ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.VideoTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe, manageSubscription: autoManageSubscription }) })) : ((0, components_core_1.isTrackReference)(trackReference) && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.AudioTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe }) }))), (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-placeholder" }, { children: (0, jsx_runtime_1.jsx)(ParticipantTileAvatar_1.default, Object.assign({}, ((liveStream === null || liveStream === void 0 ? void 0 : liveStream.host.id) !== scUserContext.user.id ? { participant: trackReference.participant } : {}))) })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-participant-metadata" }, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-metadata-item" }, { children: trackReference.source === livekit_client_1.Track.Source.Camera ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEncrypted && (0, jsx_runtime_1.jsx)(components_react_1.LockLockedIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.TrackMutedIndicator, { trackRef: {
63
+ trackReference.source === livekit_client_1.Track.Source.ScreenShare) ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.VideoTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe, manageSubscription: autoManageSubscription }) })) : ((0, components_core_1.isTrackReference)(trackReference) && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.AudioTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe }) }))), (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-placeholder" }, { children: (0, jsx_runtime_1.jsx)(ParticipantTileAvatar_1.default, Object.assign({}, ((liveStream === null || liveStream === void 0 ? void 0 : liveStream.host.id) !== scUserContext.user.id ? { participant: trackReference.participant } : { user: scUserContext.user }))) })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-participant-metadata" }, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-metadata-item" }, { children: trackReference.source === livekit_client_1.Track.Source.Camera ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEncrypted && (0, jsx_runtime_1.jsx)(components_react_1.LockLockedIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.TrackMutedIndicator, { trackRef: {
64
64
  participant: trackReference.participant,
65
65
  source: livekit_client_1.Track.Source.Microphone
66
66
  }, show: 'muted' }), (0, jsx_runtime_1.jsx)(components_react_1.ParticipantName, { children: !disableTileActions && (0, jsx_runtime_1.jsx)(ParticipantTileActions_1.default, {}) })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_react_1.ScreenShareIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.ParticipantName, { children: "'s screen" })] })) })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionQualityIndicator, { className: "lk-participant-metadata-item" })] }))] })), (0, jsx_runtime_1.jsx)(components_react_1.FocusToggle, { trackRef: trackReference })] })) })) })));
@@ -33,7 +33,6 @@ function ParticipantTileAvatar(inProps) {
33
33
  const { className, user, participant } = props, rest = tslib_1.__rest(props, ["className", "user", "participant"]);
34
34
  // CONTEXT
35
35
  const scContext = (0, react_core_1.useSCContext)();
36
- console.log(participant);
37
- return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(className, classes.root) }, rest, { children: participant ? ((0, jsx_runtime_1.jsx)("img", { src: `${scContext.settings.portal}/api/v2/avatar/${participant.identity}` })) : user ? ((0, jsx_runtime_1.jsx)("img", { src: `${user.avatar}` })) : ((0, jsx_runtime_1.jsx)(ParticipantPlaceholder_1.default, {})) })));
36
+ return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(className, classes.root) }, rest, { children: user ? ((0, jsx_runtime_1.jsx)("img", { src: `${user.avatar}` })) : participant ? ((0, jsx_runtime_1.jsx)("img", { src: `${scContext.settings.portal}/api/v2/avatar/${participant.identity}` })) : ((0, jsx_runtime_1.jsx)(ParticipantPlaceholder_1.default, {})) })));
38
37
  }
39
38
  exports.default = ParticipantTileAvatar;
@@ -9,6 +9,9 @@ const livekit_client_1 = require("livekit-client");
9
9
  const components_react_1 = require("@livekit/components-react");
10
10
  const ParticipantTile_1 = require("./ParticipantTile");
11
11
  const ControlBar_1 = require("./ControlBar");
12
+ const react_1 = require("react");
13
+ const useLiveStreamCheck_1 = require("./useLiveStreamCheck");
14
+ const FocusLayout_1 = require("./FocusLayout");
12
15
  /**
13
16
  * The `VideoConference` ready-made component is your drop-in solution for a classic video conferencing application.
14
17
  * It provides functionality such as focusing on one participant, grid view with pagination to handle large numbers
@@ -47,7 +50,9 @@ function VideoConference(_a) {
47
50
  const screenShareTracks = tracks.filter(components_core_1.isTrackReference).filter((track) => track.publication.source === livekit_client_1.Track.Source.ScreenShare);
48
51
  const focusTrack = (_b = (0, components_react_1.usePinnedTracks)(layoutContext)) === null || _b === void 0 ? void 0 : _b[0];
49
52
  const carouselTracks = tracks.filter((track) => !(0, components_core_1.isEqualTrackRef)(track, focusTrack));
50
- React.useEffect(() => {
53
+ // HOOKS
54
+ (0, useLiveStreamCheck_1.useLivestreamCheck)();
55
+ (0, react_1.useEffect)(() => {
51
56
  var _a, _b, _c, _d, _e, _f, _g, _h;
52
57
  // If screen share tracks are published, and no pin is set explicitly, auto set the screen share.
53
58
  if (screenShareTracks.some((track) => track.publication.isSubscribed) && lastAutoFocusedScreenShareTrack.current === null) {
@@ -88,7 +93,7 @@ function VideoConference(_a) {
88
93
  participants,
89
94
  speakerFocused
90
95
  ]);
91
- return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference" }, props, { children: [(0, components_core_1.isWeb)() && ((0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, Object.assign({ value: layoutContext, onPinChange: handleFocusStateChange, onWidgetChange: widgetUpdate }, { children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference-inner" }, { children: [!focusTrack ? ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-grid-layout-wrapper" }, { children: (0, jsx_runtime_1.jsx)(components_react_1.GridLayout, Object.assign({ tracks: tracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) })) }))) : ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-focus-layout-wrapper" }, { children: (0, jsx_runtime_1.jsxs)(components_react_1.FocusLayoutContainer, { children: [!hideParticipantsList && ((0, jsx_runtime_1.jsx)(components_react_1.CarouselLayout, Object.assign({ tracks: carouselTracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) }))), focusTrack && (0, jsx_runtime_1.jsx)(components_react_1.FocusLayout, { trackRef: focusTrack })] }) }))), (0, jsx_runtime_1.jsx)(ControlBar_1.ControlBar, { controls: Object.assign({
96
+ return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference" }, props, { children: [(0, components_core_1.isWeb)() && ((0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, Object.assign({ value: layoutContext, onPinChange: handleFocusStateChange, onWidgetChange: widgetUpdate }, { children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference-inner" }, { children: [!focusTrack ? ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-grid-layout-wrapper" }, { children: (0, jsx_runtime_1.jsx)(components_react_1.GridLayout, Object.assign({ tracks: tracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) })) }))) : ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-focus-layout-wrapper" }, { children: (0, jsx_runtime_1.jsxs)(FocusLayout_1.FocusLayoutContainer, { children: [!hideParticipantsList && ((0, jsx_runtime_1.jsx)(components_react_1.CarouselLayout, Object.assign({ tracks: carouselTracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) }))), focusTrack && (0, jsx_runtime_1.jsx)(FocusLayout_1.FocusLayout, { trackRef: focusTrack })] }) }))), (0, jsx_runtime_1.jsx)(ControlBar_1.ControlBar, { controls: Object.assign({
92
97
  chat: !disableChat,
93
98
  microphone: !disableMicrophone,
94
99
  camera: !disableCamera,
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Custom hook for monitoring livestream.
3
+ * @param {number} warningThreshold
4
+ * @param showWarnings
5
+ * @param performDisconnect
6
+ */
7
+ export declare function useLivestreamCheck(warningThreshold?: number, showWarnings?: boolean, performDisconnect?: boolean): {
8
+ timeRemaining: number;
9
+ isExpiringSoon: boolean;
10
+ isExpired: boolean;
11
+ };