@100mslive/roomkit-react 0.3.24-alpha.0 → 0.3.24-alpha.1

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 (121) hide show
  1. package/dist/index.cjs.css +2 -2
  2. package/dist/index.cjs.css.map +1 -1
  3. package/dist/index.cjs.js +34103 -37488
  4. package/dist/index.cjs.js.map +4 -4
  5. package/dist/index.css +2 -2
  6. package/dist/index.css.map +1 -1
  7. package/dist/index.js +36383 -73
  8. package/dist/index.js.map +4 -4
  9. package/dist/meta.cjs.json +5567 -5616
  10. package/dist/meta.esbuild.json +6030 -8742
  11. package/package.json +7 -7
  12. package/src/Prebuilt/App.tsx +2 -6
  13. package/src/Prebuilt/components/Chat/Chat.tsx +8 -12
  14. package/src/Prebuilt/components/Footer/WhiteboardToggle.tsx +11 -4
  15. package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +3 -3
  16. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +3 -0
  17. package/src/Prebuilt/components/Preview/PreviewJoin.tsx +3 -2
  18. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +30 -43
  19. package/src/Prebuilt/layouts/HLSView.jsx +2 -3
  20. package/src/Prebuilt/layouts/SidePane.tsx +6 -12
  21. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +64 -69
  22. package/dist/ConferenceScreen-CLPW3BGP.css +0 -2780
  23. package/dist/ConferenceScreen-CLPW3BGP.css.map +0 -7
  24. package/dist/ConferenceScreen-M6RBPTAJ.js +0 -1774
  25. package/dist/ConferenceScreen-M6RBPTAJ.js.map +0 -7
  26. package/dist/EmbedView-DDSO7ZCV.js +0 -17
  27. package/dist/EmbedView-DDSO7ZCV.js.map +0 -7
  28. package/dist/EmbedView-HGIUZHKA.css +0 -2780
  29. package/dist/EmbedView-HGIUZHKA.css.map +0 -7
  30. package/dist/EmojiReaction-23JDKJD4.js +0 -11
  31. package/dist/EmojiReaction-23JDKJD4.js.map +0 -7
  32. package/dist/HLSView-OW77EAAO.css +0 -2780
  33. package/dist/HLSView-OW77EAAO.css.map +0 -7
  34. package/dist/HLSView-Q6GEB3UM.js +0 -1666
  35. package/dist/HLSView-Q6GEB3UM.js.map +0 -7
  36. package/dist/LeaveScreen-BYTE73MT.js +0 -556
  37. package/dist/LeaveScreen-BYTE73MT.js.map +0 -7
  38. package/dist/LeaveScreen-P7AATEIF.css +0 -2780
  39. package/dist/LeaveScreen-P7AATEIF.css.map +0 -7
  40. package/dist/MoreSettings-LV5X2U6K.css +0 -2780
  41. package/dist/MoreSettings-LV5X2U6K.css.map +0 -7
  42. package/dist/MoreSettings-WSHMMNOC.js +0 -16
  43. package/dist/MoreSettings-WSHMMNOC.js.map +0 -7
  44. package/dist/PDFView-RIPRIIH6.css +0 -2780
  45. package/dist/PDFView-RIPRIIH6.css.map +0 -7
  46. package/dist/PDFView-ZFSG2ESE.js +0 -84
  47. package/dist/PDFView-ZFSG2ESE.js.map +0 -7
  48. package/dist/Polls-QWW5LTTB.js +0 -1584
  49. package/dist/Polls-QWW5LTTB.js.map +0 -7
  50. package/dist/Polls-ULYGUPPF.css +0 -2780
  51. package/dist/Polls-ULYGUPPF.css.map +0 -7
  52. package/dist/RaiseHand-K7NFLH7H.js +0 -10
  53. package/dist/RaiseHand-K7NFLH7H.js.map +0 -7
  54. package/dist/RoleProminence-235AFT7F.js +0 -116
  55. package/dist/RoleProminence-235AFT7F.js.map +0 -7
  56. package/dist/RoleProminence-6XN3POS5.css +0 -2780
  57. package/dist/RoleProminence-6XN3POS5.css.map +0 -7
  58. package/dist/RoomDetailsPane-O5TFMTPI.css +0 -2780
  59. package/dist/RoomDetailsPane-O5TFMTPI.css.map +0 -7
  60. package/dist/RoomDetailsPane-RF3D3TDR.js +0 -53
  61. package/dist/RoomDetailsPane-RF3D3TDR.js.map +0 -7
  62. package/dist/ScreenshareLayout-KNEB3AJJ.css +0 -2780
  63. package/dist/ScreenshareLayout-KNEB3AJJ.css.map +0 -7
  64. package/dist/ScreenshareLayout-PSQMS3NC.js +0 -358
  65. package/dist/ScreenshareLayout-PSQMS3NC.js.map +0 -7
  66. package/dist/SidePaneTabs-I6DECE5R.css +0 -2780
  67. package/dist/SidePaneTabs-I6DECE5R.css.map +0 -7
  68. package/dist/SidePaneTabs-NXHBI2JB.js +0 -1354
  69. package/dist/SidePaneTabs-NXHBI2JB.js.map +0 -7
  70. package/dist/VBPicker-2CQ3IIO7.js +0 -322
  71. package/dist/VBPicker-2CQ3IIO7.js.map +0 -7
  72. package/dist/VBPicker-DCNYGO23.css +0 -2780
  73. package/dist/VBPicker-DCNYGO23.css.map +0 -7
  74. package/dist/WaitingView-NZIUOXBI.js +0 -10
  75. package/dist/WaitingView-NZIUOXBI.js.map +0 -7
  76. package/dist/WhiteboardLayout-4YLFM3EY.js +0 -96
  77. package/dist/WhiteboardLayout-4YLFM3EY.js.map +0 -7
  78. package/dist/WhiteboardLayout-JUOBDFKY.css +0 -2780
  79. package/dist/WhiteboardLayout-JUOBDFKY.css.map +0 -7
  80. package/dist/chunk-3C7IESSI.js +0 -254
  81. package/dist/chunk-3C7IESSI.js.map +0 -7
  82. package/dist/chunk-7FD3VT6Q.js +0 -114
  83. package/dist/chunk-7FD3VT6Q.js.map +0 -7
  84. package/dist/chunk-AHI4HCY3.js +0 -62
  85. package/dist/chunk-AHI4HCY3.js.map +0 -7
  86. package/dist/chunk-BGSYLCVD.js +0 -6337
  87. package/dist/chunk-BGSYLCVD.js.map +0 -7
  88. package/dist/chunk-DANANDDE.js +0 -418
  89. package/dist/chunk-DANANDDE.js.map +0 -7
  90. package/dist/chunk-ETRNLEWQ.js +0 -2658
  91. package/dist/chunk-ETRNLEWQ.js.map +0 -7
  92. package/dist/chunk-EWPHJFZJ.js +0 -487
  93. package/dist/chunk-EWPHJFZJ.js.map +0 -7
  94. package/dist/chunk-F63YJBI4.js +0 -98
  95. package/dist/chunk-F63YJBI4.js.map +0 -7
  96. package/dist/chunk-GLAJUP3O.js +0 -576
  97. package/dist/chunk-GLAJUP3O.js.map +0 -7
  98. package/dist/chunk-GOXRTCTY.js +0 -90
  99. package/dist/chunk-GOXRTCTY.js.map +0 -7
  100. package/dist/chunk-HMCBZI3A.js +0 -59
  101. package/dist/chunk-HMCBZI3A.js.map +0 -7
  102. package/dist/chunk-HVYTC3PX.js +0 -171
  103. package/dist/chunk-HVYTC3PX.js.map +0 -7
  104. package/dist/chunk-LJVP6AWF.js +0 -262
  105. package/dist/chunk-LJVP6AWF.js.map +0 -7
  106. package/dist/chunk-LXJGCRKM.js +0 -30
  107. package/dist/chunk-LXJGCRKM.js.map +0 -7
  108. package/dist/chunk-MG3UGW66.js +0 -16800
  109. package/dist/chunk-MG3UGW66.js.map +0 -7
  110. package/dist/chunk-MUKUP7JU.js +0 -161
  111. package/dist/chunk-MUKUP7JU.js.map +0 -7
  112. package/dist/chunk-OV6MVDCL.js +0 -41
  113. package/dist/chunk-OV6MVDCL.js.map +0 -7
  114. package/dist/chunk-P6NV2XO4.js +0 -178
  115. package/dist/chunk-P6NV2XO4.js.map +0 -7
  116. package/dist/chunk-REL3HBSD.js +0 -71
  117. package/dist/chunk-REL3HBSD.js.map +0 -7
  118. package/dist/chunk-U4SQBXPZ.js +0 -830
  119. package/dist/chunk-U4SQBXPZ.js.map +0 -7
  120. package/dist/chunk-YEL5ZTFU.js +0 -136
  121. package/dist/chunk-YEL5ZTFU.js.map +0 -7
@@ -1,418 +0,0 @@
1
- import {
2
- isScreenshareSupported,
3
- useRoomLayout,
4
- useRoomLayoutConferencingScreen,
5
- useSetAppDataByKey
6
- } from "./chunk-BGSYLCVD.js";
7
- import {
8
- APP_DATA,
9
- CHAT_SELECTOR,
10
- RTMP_RECORD_DEFAULT_RESOLUTION,
11
- __async,
12
- __spreadProps,
13
- __spreadValues,
14
- config,
15
- init_define_process_env,
16
- styled
17
- } from "./chunk-GLAJUP3O.js";
18
-
19
- // src/Dropdown/Dropdown.tsx
20
- init_define_process_env();
21
- import {
22
- CheckboxItem,
23
- Content,
24
- Group,
25
- Item,
26
- ItemIndicator,
27
- Label,
28
- Portal,
29
- Root,
30
- Separator,
31
- Sub,
32
- SubContent,
33
- SubTrigger,
34
- Trigger
35
- } from "@radix-ui/react-dropdown-menu";
36
- var DropdownRoot = styled(Root, {});
37
- var DropdownTrigger = styled(Trigger, {
38
- cursor: "pointer",
39
- appearance: "none !important",
40
- '&[data-state="open"]': {
41
- backgroundColor: "$surface_bright"
42
- },
43
- "&:focus": {
44
- outline: "none"
45
- },
46
- "&:focus-visible": {
47
- boxShadow: "0 0 0 3px $colors$primary_default"
48
- }
49
- });
50
- var DropdownTriggerItem = styled(SubTrigger, {
51
- w: "100%",
52
- color: "$on_surface_high",
53
- p: "$8",
54
- display: "flex",
55
- alignItems: "center",
56
- "&:hover": {
57
- cursor: "pointer",
58
- bg: "$surface_brighter"
59
- },
60
- "&:focus-visible": {
61
- bg: "$surface_brighter",
62
- outline: "none"
63
- }
64
- });
65
- var DropdownItem = styled(Item, {
66
- color: "$on_surface_high",
67
- p: "$8",
68
- display: "flex",
69
- alignItems: "center",
70
- outline: "none",
71
- backgroundColor: "$surface_dim",
72
- "&:hover": {
73
- cursor: "pointer",
74
- bg: "$surface_bright"
75
- },
76
- "&:focus-visible": {
77
- bg: "$surface_bright"
78
- }
79
- });
80
- var DropdownItemSeparator = styled(Separator, {
81
- h: 1,
82
- backgroundColor: "$border_bright",
83
- m: "$4 $8"
84
- });
85
- var DropdownContent = styled(Content, {
86
- w: "$80",
87
- maxHeight: "$64",
88
- r: "$1",
89
- py: "$4",
90
- backgroundColor: "$surface_dim",
91
- overflowY: "auto",
92
- boxShadow: "0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)",
93
- zIndex: 20,
94
- fontFamily: "$sans"
95
- });
96
- var DropdownLabel = styled(Label, {
97
- display: "flex",
98
- alignItems: "center",
99
- h: "$12",
100
- w: "100%",
101
- p: "$8 $4"
102
- });
103
- var DropdownGroup = styled(Group, {});
104
- var DropdownSubMenu = styled(Sub, {});
105
- var DropdownSubMenuContent = styled(SubContent, {
106
- w: "$80",
107
- maxHeight: "$64",
108
- r: "$1",
109
- py: "$4",
110
- backgroundColor: "$surface_bright",
111
- overflowY: "auto",
112
- boxShadow: "0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)",
113
- zIndex: 20
114
- });
115
- var DropdownCheckboxItem = styled(CheckboxItem, {
116
- color: "$on_surface_high",
117
- p: "$8",
118
- display: "flex",
119
- alignItems: "center",
120
- outline: "none",
121
- "&:hover": {
122
- cursor: "pointer",
123
- bg: "$surface_brighter"
124
- },
125
- "&:focus-visible": {
126
- bg: "$surface_brighter"
127
- },
128
- gap: "$2"
129
- });
130
- var DropdownItemIndicator = styled(ItemIndicator, {
131
- w: "$10",
132
- display: "inline-flex",
133
- alignItems: "center",
134
- justifyContent: "center"
135
- });
136
- var Dropdown = {
137
- Root: DropdownRoot,
138
- Trigger: DropdownTrigger,
139
- TriggerItem: DropdownTriggerItem,
140
- Content: DropdownContent,
141
- Portal,
142
- SubMenu: DropdownSubMenu,
143
- SubMenuContent: DropdownSubMenuContent,
144
- Item: DropdownItem,
145
- Label: DropdownLabel,
146
- Group: DropdownGroup,
147
- ItemSeparator: DropdownItemSeparator,
148
- CheckboxItem: DropdownCheckboxItem,
149
- ItemIndicator: DropdownItemIndicator
150
- };
151
-
152
- // src/Prebuilt/components/Toast/ToastManager.js
153
- init_define_process_env();
154
- import { v4 } from "uuid";
155
- var ToastManager = {
156
- toasts: /* @__PURE__ */ new Map(),
157
- listeners: /* @__PURE__ */ new Map(),
158
- addToast(toast) {
159
- const id = toast.id ? toast.id : v4();
160
- this.toasts.set(id, __spreadProps(__spreadValues({}, toast), { id }));
161
- this.onChange();
162
- return id;
163
- },
164
- clearAllToast() {
165
- this.toasts.clear();
166
- this.onChange();
167
- },
168
- removeToast(id) {
169
- this.toasts.delete(id);
170
- this.onChange();
171
- },
172
- replaceToast(id, toast) {
173
- if (this.isActive(id)) {
174
- this.toasts.set(id, __spreadValues(__spreadValues({}, this.toasts.get(id)), toast));
175
- this.onChange();
176
- return id;
177
- } else {
178
- return this.addToast(toast);
179
- }
180
- },
181
- addListener(cb) {
182
- this.listeners.set(cb, cb);
183
- },
184
- removeListener(cb) {
185
- this.listeners.delete(cb);
186
- },
187
- isActive(id) {
188
- return this.toasts.has(id);
189
- },
190
- onChange() {
191
- const toasts = Array.from(this.toasts.values());
192
- this.listeners.forEach((listener) => listener(toasts));
193
- }
194
- };
195
-
196
- // src/Prebuilt/common/hooks.ts
197
- init_define_process_env();
198
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
199
- import { useMedia } from "react-use";
200
- import { JoinForm_JoinBtnType } from "@100mslive/types-prebuilt/elements/join_form";
201
- import {
202
- parsedUserAgent,
203
- selectAvailableRoleNames,
204
- selectIsAllowedToPublish,
205
- selectIsConnectedToRoom,
206
- selectLocalPeerRole,
207
- selectPeerCount,
208
- selectPeerMetadata,
209
- selectPeers,
210
- selectPeersByRoles,
211
- selectRecordingState,
212
- selectRemotePeers,
213
- selectRolesMap,
214
- useHMSActions,
215
- useHMSStore,
216
- useHMSVanillaStore
217
- } from "@100mslive/react-sdk";
218
- var useFilteredRoles = () => {
219
- var _a;
220
- const { elements } = useRoomLayoutConferencingScreen();
221
- return ((_a = elements == null ? void 0 : elements.chat) == null ? void 0 : _a.roles_whitelist) || [];
222
- };
223
- var useDefaultChatSelection = () => {
224
- var _a;
225
- const { elements } = useRoomLayoutConferencingScreen();
226
- const roles = useFilteredRoles();
227
- if ((_a = elements == null ? void 0 : elements.chat) == null ? void 0 : _a.public_chat_enabled) {
228
- return CHAT_SELECTOR.EVERYONE;
229
- }
230
- if (roles.length > 0) {
231
- return roles[0];
232
- }
233
- return "";
234
- };
235
- var useShowStreamingUI = () => {
236
- var _a, _b, _c;
237
- const layout = useRoomLayout();
238
- const { join_form } = ((_c = (_b = (_a = layout == null ? void 0 : layout.screens) == null ? void 0 : _a.preview) == null ? void 0 : _b.default) == null ? void 0 : _c.elements) || {};
239
- return (join_form == null ? void 0 : join_form.join_btn_type) === JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE;
240
- };
241
- var useParticipants = (params) => {
242
- var _a;
243
- const isConnected = useHMSStore(selectIsConnectedToRoom);
244
- const peerCount = useHMSStore(selectPeerCount);
245
- const availableRoles = useHMSStore(selectAvailableRoleNames);
246
- let participantList = useHMSStore(isConnected ? selectPeers : selectRemotePeers);
247
- const rolesWithParticipants = Array.from(new Set(participantList.map((peer) => peer.roleName)));
248
- const vanillaStore = useHMSVanillaStore();
249
- if ((_a = params == null ? void 0 : params.metadata) == null ? void 0 : _a.isHandRaised) {
250
- participantList = participantList.filter((peer) => {
251
- return vanillaStore.getState(selectPeerMetadata(peer.id)).isHandRaised;
252
- });
253
- }
254
- if ((params == null ? void 0 : params.role) && availableRoles.includes(params.role)) {
255
- participantList = participantList.filter((peer) => peer.roleName === params.role);
256
- }
257
- if (params == null ? void 0 : params.search) {
258
- const search = params.search;
259
- participantList = participantList.filter((peer) => peer.name.toLowerCase().includes(search));
260
- }
261
- return { participants: participantList, isConnected, peerCount, rolesWithParticipants };
262
- };
263
- var useIsLandscape = () => {
264
- const isMobile = parsedUserAgent.getDevice().type === "mobile";
265
- const isLandscape = useMedia(config.media.ls);
266
- return isMobile && isLandscape;
267
- };
268
- var useLandscapeHLSStream = () => {
269
- const isLandscape = useIsLandscape();
270
- const { screenType } = useRoomLayoutConferencingScreen();
271
- return isLandscape && screenType === "hls_live_streaming";
272
- };
273
- var useMobileHLSStream = () => {
274
- const isMobile = useMedia(config.media.md);
275
- const { screenType } = useRoomLayoutConferencingScreen();
276
- return isMobile && screenType === "hls_live_streaming";
277
- };
278
- var useKeyboardHandler = (isPaused, hlsPlayer) => {
279
- const handleKeyEvent = useCallback(
280
- (event) => __async(void 0, null, function* () {
281
- switch (event.key) {
282
- case " ":
283
- if (isPaused) {
284
- yield hlsPlayer == null ? void 0 : hlsPlayer.play();
285
- } else {
286
- hlsPlayer == null ? void 0 : hlsPlayer.pause();
287
- }
288
- break;
289
- case "ArrowRight":
290
- hlsPlayer == null ? void 0 : hlsPlayer.seekTo((hlsPlayer == null ? void 0 : hlsPlayer.getVideoElement().currentTime) + 10);
291
- break;
292
- case "ArrowLeft":
293
- hlsPlayer == null ? void 0 : hlsPlayer.seekTo((hlsPlayer == null ? void 0 : hlsPlayer.getVideoElement().currentTime) - 10);
294
- break;
295
- }
296
- }),
297
- [hlsPlayer, isPaused]
298
- );
299
- return handleKeyEvent;
300
- };
301
- var useRecordingHandler = () => {
302
- const hmsActions = useHMSActions();
303
- const recordingState = useHMSStore(selectRecordingState);
304
- const [isRecordingLoading, setIsRecordingLoading] = useState(false);
305
- const [recordingStarted, setRecordingState] = useSetAppDataByKey(APP_DATA.recordingStarted);
306
- useEffect(() => {
307
- if (recordingState.browser.error && recordingStarted) {
308
- setRecordingState(false);
309
- }
310
- }, [recordingStarted, recordingState.browser.error, setRecordingState]);
311
- const startRecording = useCallback(
312
- (resolution = null) => __async(void 0, null, function* () {
313
- try {
314
- setRecordingState(true);
315
- setIsRecordingLoading(true);
316
- yield hmsActions.startRTMPOrRecording({
317
- resolution: getResolution(resolution),
318
- record: true
319
- });
320
- } catch (error) {
321
- const err = error;
322
- if (err.message.includes("stream already running")) {
323
- ToastManager.addToast({
324
- title: "Recording already running",
325
- variant: "error"
326
- });
327
- } else {
328
- ToastManager.addToast({
329
- title: err.message,
330
- variant: "error"
331
- });
332
- }
333
- setRecordingState(false);
334
- }
335
- setIsRecordingLoading(false);
336
- }),
337
- [hmsActions, setRecordingState]
338
- );
339
- return {
340
- recordingStarted,
341
- startRecording,
342
- isRecordingLoading
343
- };
344
- };
345
- function getResolution(recordingResolution) {
346
- if (!recordingResolution) {
347
- return void 0;
348
- }
349
- const resolution = RTMP_RECORD_DEFAULT_RESOLUTION;
350
- if (recordingResolution.width) {
351
- resolution.width = recordingResolution.width;
352
- }
353
- if (recordingResolution.height) {
354
- resolution.height = recordingResolution.height;
355
- }
356
- return resolution;
357
- }
358
- function useWaitingRoomInfo() {
359
- const localPeerRole = useHMSStore(selectLocalPeerRole);
360
- const { video, audio, screen } = useHMSStore(selectIsAllowedToPublish);
361
- const isScreenShareAllowed = isScreenshareSupported();
362
- const roles = useHMSStore(selectRolesMap);
363
- const peersByRoles = useHMSStore(selectPeersByRoles((localPeerRole == null ? void 0 : localPeerRole.subscribeParams.subscribeToRoles) || []));
364
- const isNotAllowedToPublish = !(video || audio || screen && isScreenShareAllowed);
365
- const isScreenOnlyPublishParams = screen && !(video || audio);
366
- const hasSubscribedRolePublishing = useMemo(() => {
367
- return peersByRoles.some((peer) => {
368
- var _a;
369
- if (peer.roleName && roles[peer.roleName] && !peer.isLocal) {
370
- return !!((_a = roles[peer.roleName].publishParams) == null ? void 0 : _a.allowed.length);
371
- }
372
- return false;
373
- });
374
- }, [peersByRoles, roles]);
375
- return {
376
- isNotAllowedToPublish,
377
- isScreenOnlyPublishParams,
378
- hasSubscribedRolePublishing
379
- };
380
- }
381
-
382
- // src/Prebuilt/components/hooks/useDropdownList.ts
383
- init_define_process_env();
384
- import { useEffect as useEffect2 } from "react";
385
- var useDropdownList = ({ name, open }) => {
386
- const [dropdownList = [], setDropdownList] = useSetAppDataByKey(APP_DATA.dropdownList);
387
- useEffect2(() => {
388
- if (open) {
389
- if (!dropdownList.includes(name)) {
390
- setDropdownList([...dropdownList, name]);
391
- }
392
- } else {
393
- const index = dropdownList.indexOf(name);
394
- if (index >= 0) {
395
- const newDropdownList = [...dropdownList];
396
- newDropdownList.splice(index, 1);
397
- setDropdownList(newDropdownList);
398
- }
399
- }
400
- }, [open, name]);
401
- };
402
-
403
- export {
404
- Dropdown,
405
- ToastManager,
406
- useFilteredRoles,
407
- useDefaultChatSelection,
408
- useShowStreamingUI,
409
- useParticipants,
410
- useIsLandscape,
411
- useLandscapeHLSStream,
412
- useMobileHLSStream,
413
- useKeyboardHandler,
414
- useRecordingHandler,
415
- useWaitingRoomInfo,
416
- useDropdownList
417
- };
418
- //# sourceMappingURL=chunk-DANANDDE.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/Dropdown/Dropdown.tsx", "../src/Prebuilt/components/Toast/ToastManager.js", "../src/Prebuilt/common/hooks.ts", "../src/Prebuilt/components/hooks/useDropdownList.ts"],
4
- "sourcesContent": ["import {\n CheckboxItem,\n Content,\n Group,\n Item,\n ItemIndicator,\n Label,\n Portal,\n Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n Trigger,\n} from '@radix-ui/react-dropdown-menu';\nimport { styled } from '../Theme';\n\nconst DropdownRoot = styled(Root, {});\n\nconst DropdownTrigger = styled(Trigger, {\n cursor: 'pointer',\n appearance: 'none !important',\n '&[data-state=\"open\"]': {\n backgroundColor: '$surface_bright',\n },\n '&:focus': {\n outline: 'none',\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 3px $colors$primary_default',\n },\n});\n\nconst DropdownTriggerItem = styled(SubTrigger, {\n w: '100%',\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_brighter',\n },\n '&:focus-visible': {\n bg: '$surface_brighter',\n outline: 'none',\n },\n});\n\nconst DropdownItem = styled(Item, {\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n outline: 'none',\n backgroundColor: '$surface_dim',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_bright',\n },\n '&:focus-visible': {\n bg: '$surface_bright',\n },\n});\n\nconst DropdownItemSeparator = styled(Separator, {\n h: 1,\n backgroundColor: '$border_bright',\n m: '$4 $8',\n});\n\nconst DropdownContent = styled(Content, {\n w: '$80',\n maxHeight: '$64',\n r: '$1',\n py: '$4',\n backgroundColor: '$surface_dim',\n overflowY: 'auto',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n zIndex: 20,\n fontFamily: '$sans',\n});\n\nconst DropdownLabel = styled(Label, {\n display: 'flex',\n alignItems: 'center',\n h: '$12',\n w: '100%',\n p: '$8 $4',\n});\n\nconst DropdownGroup = styled(Group, {});\n\nconst DropdownSubMenu = styled(Sub, {});\n\nconst DropdownSubMenuContent = styled(SubContent, {\n w: '$80',\n maxHeight: '$64',\n r: '$1',\n py: '$4',\n backgroundColor: '$surface_bright',\n overflowY: 'auto',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n zIndex: 20,\n});\n\nconst DropdownCheckboxItem = styled(CheckboxItem, {\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n outline: 'none',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_brighter',\n },\n '&:focus-visible': {\n bg: '$surface_brighter',\n },\n gap: '$2',\n});\n\nconst DropdownItemIndicator = styled(ItemIndicator, {\n w: '$10',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nexport const Dropdown = {\n Root: DropdownRoot,\n Trigger: DropdownTrigger,\n TriggerItem: DropdownTriggerItem,\n Content: DropdownContent,\n Portal: Portal,\n SubMenu: DropdownSubMenu,\n SubMenuContent: DropdownSubMenuContent,\n Item: DropdownItem,\n Label: DropdownLabel,\n Group: DropdownGroup,\n ItemSeparator: DropdownItemSeparator,\n CheckboxItem: DropdownCheckboxItem,\n ItemIndicator: DropdownItemIndicator,\n};\n", "import { v4 } from 'uuid';\n\nexport const ToastManager = {\n toasts: new Map(),\n listeners: new Map(),\n addToast(toast) {\n const id = toast.id ? toast.id : v4();\n this.toasts.set(id, { ...toast, id });\n this.onChange();\n return id;\n },\n\n clearAllToast() {\n this.toasts.clear();\n this.onChange();\n },\n\n removeToast(id) {\n this.toasts.delete(id);\n this.onChange();\n },\n replaceToast(id, toast) {\n if (this.isActive(id)) {\n this.toasts.set(id, { ...this.toasts.get(id), ...toast });\n this.onChange();\n return id;\n } else {\n return this.addToast(toast);\n }\n },\n addListener(cb) {\n this.listeners.set(cb, cb);\n },\n removeListener(cb) {\n this.listeners.delete(cb);\n },\n isActive(id) {\n return this.toasts.has(id);\n },\n onChange() {\n const toasts = Array.from(this.toasts.values());\n this.listeners.forEach(listener => listener(toasts));\n },\n};\n", "import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { HMSHLSPlayer } from '@100mslive/hls-player';\nimport { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';\nimport {\n HMSPeer,\n HMSRecording,\n parsedUserAgent,\n selectAvailableRoleNames,\n selectIsAllowedToPublish,\n selectIsConnectedToRoom,\n selectLocalPeerRole,\n selectPeerCount,\n selectPeerMetadata,\n selectPeers,\n selectPeersByRoles,\n selectRecordingState,\n selectRemotePeers,\n selectRolesMap,\n useHMSActions,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\n// @ts-ignore: No implicit any\nimport { ToastManager } from '../components/Toast/ToastManager';\nimport { config } from '../../Theme';\nimport { useRoomLayout } from '../provider/roomLayoutProvider';\n// @ts-ignore\nimport { useSetAppDataByKey } from '../components/AppData/useUISettings';\nimport { useRoomLayoutConferencingScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore: No implicit any\nimport { isScreenshareSupported } from '../common/utils';\nimport { APP_DATA, CHAT_SELECTOR, RTMP_RECORD_DEFAULT_RESOLUTION } from './constants';\n/**\n * Hook to execute a callback when alone in room(after a certain 5d of time)\n * @param {number} thresholdMs The threshold(in ms) after which the callback is executed,\n * starting from the instant when alone in room.\n * note: the cb is not called when another peer joins during this period.\n */\nexport const useWhenAloneInRoom = (thresholdMs = 5 * 60 * 1000) => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const peerCount = useHMSStore(selectPeerCount);\n const [aloneForLong, setAloneForLong] = useState(false);\n const cbTimeout = useRef(null);\n const alone = isConnected && peerCount === 1;\n\n useEffect(() => {\n if (alone && !cbTimeout.current) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n cbTimeout.current = setTimeout(() => {\n setAloneForLong(true);\n }, thresholdMs);\n } else if (!alone) {\n cbTimeout.current && clearTimeout(cbTimeout.current);\n cbTimeout.current = null;\n setAloneForLong(false);\n }\n }, [alone, thresholdMs]);\n\n useEffect(() => {\n return () => {\n if (cbTimeout.current) {\n clearTimeout(cbTimeout.current);\n }\n };\n }, []);\n\n return { alone, aloneForLong };\n};\n\nexport const useFilteredRoles = () => {\n const { elements } = useRoomLayoutConferencingScreen();\n return elements?.chat?.roles_whitelist || [];\n};\n\nexport const useDefaultChatSelection = () => {\n const { elements } = useRoomLayoutConferencingScreen();\n const roles = useFilteredRoles();\n // default is everyone for public chat\n if (elements?.chat?.public_chat_enabled) {\n return CHAT_SELECTOR.EVERYONE;\n }\n // sending first role as default\n if (roles.length > 0) {\n return roles[0];\n }\n // sending empty\n return '';\n};\n\nexport const useShowStreamingUI = () => {\n const layout = useRoomLayout();\n const { join_form } = layout?.screens?.preview?.default?.elements || {};\n return join_form?.join_btn_type === JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE;\n};\n\n// The search results should not have role name matches\nexport const useParticipants = (params?: { metadata?: { isHandRaised?: boolean }; role?: string; search?: string }) => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const peerCount = useHMSStore(selectPeerCount);\n const availableRoles = useHMSStore(selectAvailableRoleNames);\n let participantList = useHMSStore(isConnected ? selectPeers : selectRemotePeers);\n const rolesWithParticipants = Array.from(new Set(participantList.map(peer => peer.roleName)));\n const vanillaStore = useHMSVanillaStore();\n if (params?.metadata?.isHandRaised) {\n participantList = participantList.filter(peer => {\n return vanillaStore.getState(selectPeerMetadata(peer.id)).isHandRaised;\n });\n }\n if (params?.role && availableRoles.includes(params.role)) {\n participantList = participantList.filter(peer => peer.roleName === params.role);\n }\n if (params?.search) {\n const search = params.search;\n // Removed peer.roleName?.toLowerCase().includes(search)\n participantList = participantList.filter(peer => peer.name.toLowerCase().includes(search));\n }\n return { participants: participantList, isConnected, peerCount, rolesWithParticipants };\n};\n\nexport const useIsLandscape = () => {\n const isMobile = parsedUserAgent.getDevice().type === 'mobile';\n const isLandscape = useMedia(config.media.ls);\n return isMobile && isLandscape;\n};\n\nexport const useLandscapeHLSStream = () => {\n const isLandscape = useIsLandscape();\n const { screenType } = useRoomLayoutConferencingScreen();\n return isLandscape && screenType === 'hls_live_streaming';\n};\n\nexport const useMobileHLSStream = () => {\n const isMobile = useMedia(config.media.md);\n const { screenType } = useRoomLayoutConferencingScreen();\n return isMobile && screenType === 'hls_live_streaming';\n};\n\nexport const useKeyboardHandler = (isPaused: boolean, hlsPlayer: HMSHLSPlayer) => {\n const handleKeyEvent = useCallback(\n async (event: KeyboardEvent) => {\n switch (event.key) {\n case ' ':\n if (isPaused) {\n await hlsPlayer?.play();\n } else {\n hlsPlayer?.pause();\n }\n break;\n case 'ArrowRight':\n hlsPlayer?.seekTo(hlsPlayer?.getVideoElement().currentTime + 10);\n break;\n case 'ArrowLeft':\n hlsPlayer?.seekTo(hlsPlayer?.getVideoElement().currentTime - 10);\n break;\n }\n },\n [hlsPlayer, isPaused],\n );\n\n return handleKeyEvent;\n};\nexport interface RTMPRecordingResolution {\n width: number;\n height: number;\n}\nexport const useRecordingHandler = () => {\n const hmsActions = useHMSActions();\n const recordingState: HMSRecording = useHMSStore(selectRecordingState);\n const [isRecordingLoading, setIsRecordingLoading] = useState(false);\n const [recordingStarted, setRecordingState] = useSetAppDataByKey(APP_DATA.recordingStarted);\n useEffect(() => {\n if (recordingState.browser.error && recordingStarted) {\n setRecordingState(false);\n }\n }, [recordingStarted, recordingState.browser.error, setRecordingState]);\n const startRecording = useCallback(\n async (resolution: RTMPRecordingResolution | null = null) => {\n try {\n setRecordingState(true);\n setIsRecordingLoading(true);\n await hmsActions.startRTMPOrRecording({\n resolution: getResolution(resolution),\n record: true,\n });\n } catch (error) {\n const err = error as Error;\n if (err.message.includes('stream already running')) {\n ToastManager.addToast({\n title: 'Recording already running',\n variant: 'error',\n });\n } else {\n ToastManager.addToast({\n title: err.message,\n variant: 'error',\n });\n }\n setRecordingState(false);\n }\n setIsRecordingLoading(false);\n },\n [hmsActions, setRecordingState],\n );\n return {\n recordingStarted,\n startRecording,\n isRecordingLoading,\n };\n};\n\nexport function getResolution(\n recordingResolution: RTMPRecordingResolution | null,\n): RTMPRecordingResolution | undefined {\n if (!recordingResolution) {\n return undefined;\n }\n const resolution: RTMPRecordingResolution = RTMP_RECORD_DEFAULT_RESOLUTION;\n if (recordingResolution.width) {\n resolution.width = recordingResolution.width;\n }\n if (recordingResolution.height) {\n resolution.height = recordingResolution.height;\n }\n return resolution;\n}\n\nexport interface WaitingRoomInfo {\n isNotAllowedToPublish: boolean;\n isScreenOnlyPublishParams: boolean;\n hasSubscribedRolePublishing: boolean;\n}\nexport function useWaitingRoomInfo(): WaitingRoomInfo {\n const localPeerRole = useHMSStore(selectLocalPeerRole);\n const { video, audio, screen } = useHMSStore(selectIsAllowedToPublish);\n const isScreenShareAllowed = isScreenshareSupported();\n const roles = useHMSStore(selectRolesMap);\n const peersByRoles = useHMSStore(selectPeersByRoles(localPeerRole?.subscribeParams.subscribeToRoles || []));\n // show no publish as screenshare in mweb is not possible\n const isNotAllowedToPublish = !(video || audio || (screen && isScreenShareAllowed));\n const isScreenOnlyPublishParams: boolean = screen && !(video || audio);\n const hasSubscribedRolePublishing: boolean = useMemo(() => {\n return peersByRoles.some((peer: HMSPeer) => {\n if (peer.roleName && roles[peer.roleName] && !peer.isLocal) {\n return !!roles[peer.roleName].publishParams?.allowed.length;\n }\n return false;\n });\n }, [peersByRoles, roles]);\n\n return {\n isNotAllowedToPublish,\n isScreenOnlyPublishParams,\n hasSubscribedRolePublishing,\n };\n}\n", "import { useEffect } from 'react';\n// @ts-ignore: No implicit Any\nimport { useSetAppDataByKey } from '../AppData/useUISettings';\nimport { APP_DATA } from '../../common/constants';\n\nexport const useDropdownList = ({ name, open }: { name: string; open: boolean }) => {\n const [dropdownList = [], setDropdownList] = useSetAppDataByKey(APP_DATA.dropdownList);\n\n useEffect(() => {\n if (open) {\n if (!dropdownList.includes(name)) {\n setDropdownList([...dropdownList, name]);\n }\n } else {\n const index = dropdownList.indexOf(name);\n if (index >= 0) {\n const newDropdownList = [...dropdownList];\n newDropdownList.splice(index, 1);\n setDropdownList(newDropdownList);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, name]);\n};\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,IAAM,eAAe,OAAO,MAAM,CAAC,CAAC;AAEpC,IAAM,kBAAkB,OAAO,SAAS;AAAA,EACtC,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,wBAAwB;AAAA,IACtB,iBAAiB;AAAA,EACnB;AAAA,EACA,WAAW;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,mBAAmB;AAAA,IACjB,WAAW;AAAA,EACb;AACF,CAAC;AAED,IAAM,sBAAsB,OAAO,YAAY;AAAA,EAC7C,GAAG;AAAA,EACH,OAAO;AAAA,EACP,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,mBAAmB;AAAA,IACjB,IAAI;AAAA,IACJ,SAAS;AAAA,EACX;AACF,CAAC;AAED,IAAM,eAAe,OAAO,MAAM;AAAA,EAChC,OAAO;AAAA,EACP,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,mBAAmB;AAAA,IACjB,IAAI;AAAA,EACN;AACF,CAAC;AAED,IAAM,wBAAwB,OAAO,WAAW;AAAA,EAC9C,GAAG;AAAA,EACH,iBAAiB;AAAA,EACjB,GAAG;AACL,CAAC;AAED,IAAM,kBAAkB,OAAO,SAAS;AAAA,EACtC,GAAG;AAAA,EACH,WAAW;AAAA,EACX,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,YAAY;AACd,CAAC;AAED,IAAM,gBAAgB,OAAO,OAAO;AAAA,EAClC,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL,CAAC;AAED,IAAM,gBAAgB,OAAO,OAAO,CAAC,CAAC;AAEtC,IAAM,kBAAkB,OAAO,KAAK,CAAC,CAAC;AAEtC,IAAM,yBAAyB,OAAO,YAAY;AAAA,EAChD,GAAG;AAAA,EACH,WAAW;AAAA,EACX,GAAG;AAAA,EACH,IAAI;AAAA,EACJ,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,WAAW;AAAA,EACX,QAAQ;AACV,CAAC;AAED,IAAM,uBAAuB,OAAO,cAAc;AAAA,EAChD,OAAO;AAAA,EACP,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,WAAW;AAAA,IACT,QAAQ;AAAA,IACR,IAAI;AAAA,EACN;AAAA,EACA,mBAAmB;AAAA,IACjB,IAAI;AAAA,EACN;AAAA,EACA,KAAK;AACP,CAAC;AAED,IAAM,wBAAwB,OAAO,eAAe;AAAA,EAClD,GAAG;AAAA,EACH,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,gBAAgB;AAClB,CAAC;AAEM,IAAM,WAAW;AAAA,EACtB,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,SAAS;AAAA,EACT;AAAA,EACA,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,eAAe;AAAA,EACf,cAAc;AAAA,EACd,eAAe;AACjB;;;AC/IA;AAAA,SAAS,UAAU;AAEZ,IAAM,eAAe;AAAA,EAC1B,QAAQ,oBAAI,IAAI;AAAA,EAChB,WAAW,oBAAI,IAAI;AAAA,EACnB,SAAS,OAAO;AACd,UAAM,KAAK,MAAM,KAAK,MAAM,KAAK,GAAG;AACpC,SAAK,OAAO,IAAI,IAAI,iCAAK,QAAL,EAAY,GAAG,EAAC;AACpC,SAAK,SAAS;AACd,WAAO;AAAA,EACT;AAAA,EAEA,gBAAgB;AACd,SAAK,OAAO,MAAM;AAClB,SAAK,SAAS;AAAA,EAChB;AAAA,EAEA,YAAY,IAAI;AACd,SAAK,OAAO,OAAO,EAAE;AACrB,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,aAAa,IAAI,OAAO;AACtB,QAAI,KAAK,SAAS,EAAE,GAAG;AACrB,WAAK,OAAO,IAAI,IAAI,kCAAK,KAAK,OAAO,IAAI,EAAE,IAAM,MAAO;AACxD,WAAK,SAAS;AACd,aAAO;AAAA,IACT,OAAO;AACL,aAAO,KAAK,SAAS,KAAK;AAAA,IAC5B;AAAA,EACF;AAAA,EACA,YAAY,IAAI;AACd,SAAK,UAAU,IAAI,IAAI,EAAE;AAAA,EAC3B;AAAA,EACA,eAAe,IAAI;AACjB,SAAK,UAAU,OAAO,EAAE;AAAA,EAC1B;AAAA,EACA,SAAS,IAAI;AACX,WAAO,KAAK,OAAO,IAAI,EAAE;AAAA,EAC3B;AAAA,EACA,WAAW;AACT,UAAM,SAAS,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC;AAC9C,SAAK,UAAU,QAAQ,cAAY,SAAS,MAAM,CAAC;AAAA,EACrD;AACF;;;AC3CA;AAAA,SAAS,aAAa,WAAW,SAAS,QAAQ,gBAAgB;AAClE,SAAS,gBAAgB;AAEzB,SAAS,4BAA4B;AACrC;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAiDA,IAAM,mBAAmB,MAAM;AAvEtC;AAwEE,QAAM,EAAE,SAAS,IAAI,gCAAgC;AACrD,WAAO,0CAAU,SAAV,mBAAgB,oBAAmB,CAAC;AAC7C;AAEO,IAAM,0BAA0B,MAAM;AA5E7C;AA6EE,QAAM,EAAE,SAAS,IAAI,gCAAgC;AACrD,QAAM,QAAQ,iBAAiB;AAE/B,OAAI,0CAAU,SAAV,mBAAgB,qBAAqB;AACvC,WAAO,cAAc;AAAA,EACvB;AAEA,MAAI,MAAM,SAAS,GAAG;AACpB,WAAO,MAAM,CAAC;AAAA,EAChB;AAEA,SAAO;AACT;AAEO,IAAM,qBAAqB,MAAM;AA3FxC;AA4FE,QAAM,SAAS,cAAc;AAC7B,QAAM,EAAE,UAAU,MAAI,kDAAQ,YAAR,mBAAiB,YAAjB,mBAA0B,YAA1B,mBAAmC,aAAY,CAAC;AACtE,UAAO,uCAAW,mBAAkB,qBAAqB;AAC3D;AAGO,IAAM,kBAAkB,CAAC,WAAuF;AAlGvH;AAmGE,QAAM,cAAc,YAAY,uBAAuB;AACvD,QAAM,YAAY,YAAY,eAAe;AAC7C,QAAM,iBAAiB,YAAY,wBAAwB;AAC3D,MAAI,kBAAkB,YAAY,cAAc,cAAc,iBAAiB;AAC/E,QAAM,wBAAwB,MAAM,KAAK,IAAI,IAAI,gBAAgB,IAAI,UAAQ,KAAK,QAAQ,CAAC,CAAC;AAC5F,QAAM,eAAe,mBAAmB;AACxC,OAAI,sCAAQ,aAAR,mBAAkB,cAAc;AAClC,sBAAkB,gBAAgB,OAAO,UAAQ;AAC/C,aAAO,aAAa,SAAS,mBAAmB,KAAK,EAAE,CAAC,EAAE;AAAA,IAC5D,CAAC;AAAA,EACH;AACA,OAAI,iCAAQ,SAAQ,eAAe,SAAS,OAAO,IAAI,GAAG;AACxD,sBAAkB,gBAAgB,OAAO,UAAQ,KAAK,aAAa,OAAO,IAAI;AAAA,EAChF;AACA,MAAI,iCAAQ,QAAQ;AAClB,UAAM,SAAS,OAAO;AAEtB,sBAAkB,gBAAgB,OAAO,UAAQ,KAAK,KAAK,YAAY,EAAE,SAAS,MAAM,CAAC;AAAA,EAC3F;AACA,SAAO,EAAE,cAAc,iBAAiB,aAAa,WAAW,sBAAsB;AACxF;AAEO,IAAM,iBAAiB,MAAM;AAClC,QAAM,WAAW,gBAAgB,UAAU,EAAE,SAAS;AACtD,QAAM,cAAc,SAAS,OAAO,MAAM,EAAE;AAC5C,SAAO,YAAY;AACrB;AAEO,IAAM,wBAAwB,MAAM;AACzC,QAAM,cAAc,eAAe;AACnC,QAAM,EAAE,WAAW,IAAI,gCAAgC;AACvD,SAAO,eAAe,eAAe;AACvC;AAEO,IAAM,qBAAqB,MAAM;AACtC,QAAM,WAAW,SAAS,OAAO,MAAM,EAAE;AACzC,QAAM,EAAE,WAAW,IAAI,gCAAgC;AACvD,SAAO,YAAY,eAAe;AACpC;AAEO,IAAM,qBAAqB,CAAC,UAAmB,cAA4B;AAChF,QAAM,iBAAiB;AAAA,IACrB,CAAO,UAAyB;AAC9B,cAAQ,MAAM,KAAK;AAAA,QACjB,KAAK;AACH,cAAI,UAAU;AACZ,kBAAM,uCAAW;AAAA,UACnB,OAAO;AACL,mDAAW;AAAA,UACb;AACA;AAAA,QACF,KAAK;AACH,iDAAW,QAAO,uCAAW,kBAAkB,eAAc;AAC7D;AAAA,QACF,KAAK;AACH,iDAAW,QAAO,uCAAW,kBAAkB,eAAc;AAC7D;AAAA,MACJ;AAAA,IACF;AAAA,IACA,CAAC,WAAW,QAAQ;AAAA,EACtB;AAEA,SAAO;AACT;AAKO,IAAM,sBAAsB,MAAM;AACvC,QAAM,aAAa,cAAc;AACjC,QAAM,iBAA+B,YAAY,oBAAoB;AACrE,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,KAAK;AAClE,QAAM,CAAC,kBAAkB,iBAAiB,IAAI,mBAAmB,SAAS,gBAAgB;AAC1F,YAAU,MAAM;AACd,QAAI,eAAe,QAAQ,SAAS,kBAAkB;AACpD,wBAAkB,KAAK;AAAA,IACzB;AAAA,EACF,GAAG,CAAC,kBAAkB,eAAe,QAAQ,OAAO,iBAAiB,CAAC;AACtE,QAAM,iBAAiB;AAAA,IACrB,CAAO,aAA6C,SAAS;AAC3D,UAAI;AACF,0BAAkB,IAAI;AACtB,8BAAsB,IAAI;AAC1B,cAAM,WAAW,qBAAqB;AAAA,UACpC,YAAY,cAAc,UAAU;AAAA,UACpC,QAAQ;AAAA,QACV,CAAC;AAAA,MACH,SAAS,OAAO;AACd,cAAM,MAAM;AACZ,YAAI,IAAI,QAAQ,SAAS,wBAAwB,GAAG;AAClD,uBAAa,SAAS;AAAA,YACpB,OAAO;AAAA,YACP,SAAS;AAAA,UACX,CAAC;AAAA,QACH,OAAO;AACL,uBAAa,SAAS;AAAA,YACpB,OAAO,IAAI;AAAA,YACX,SAAS;AAAA,UACX,CAAC;AAAA,QACH;AACA,0BAAkB,KAAK;AAAA,MACzB;AACA,4BAAsB,KAAK;AAAA,IAC7B;AAAA,IACA,CAAC,YAAY,iBAAiB;AAAA,EAChC;AACA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,cACd,qBACqC;AACrC,MAAI,CAAC,qBAAqB;AACxB,WAAO;AAAA,EACT;AACA,QAAM,aAAsC;AAC5C,MAAI,oBAAoB,OAAO;AAC7B,eAAW,QAAQ,oBAAoB;AAAA,EACzC;AACA,MAAI,oBAAoB,QAAQ;AAC9B,eAAW,SAAS,oBAAoB;AAAA,EAC1C;AACA,SAAO;AACT;AAOO,SAAS,qBAAsC;AACpD,QAAM,gBAAgB,YAAY,mBAAmB;AACrD,QAAM,EAAE,OAAO,OAAO,OAAO,IAAI,YAAY,wBAAwB;AACrE,QAAM,uBAAuB,uBAAuB;AACpD,QAAM,QAAQ,YAAY,cAAc;AACxC,QAAM,eAAe,YAAY,oBAAmB,+CAAe,gBAAgB,qBAAoB,CAAC,CAAC,CAAC;AAE1G,QAAM,wBAAwB,EAAE,SAAS,SAAU,UAAU;AAC7D,QAAM,4BAAqC,UAAU,EAAE,SAAS;AAChE,QAAM,8BAAuC,QAAQ,MAAM;AACzD,WAAO,aAAa,KAAK,CAAC,SAAkB;AAnPhD;AAoPM,UAAI,KAAK,YAAY,MAAM,KAAK,QAAQ,KAAK,CAAC,KAAK,SAAS;AAC1D,eAAO,CAAC,GAAC,WAAM,KAAK,QAAQ,EAAE,kBAArB,mBAAoC,QAAQ;AAAA,MACvD;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH,GAAG,CAAC,cAAc,KAAK,CAAC;AAExB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;;;AChQA;AAAA,SAAS,aAAAA,kBAAiB;AAKnB,IAAM,kBAAkB,CAAC,EAAE,MAAM,KAAK,MAAuC;AAClF,QAAM,CAAC,eAAe,CAAC,GAAG,eAAe,IAAI,mBAAmB,SAAS,YAAY;AAErF,EAAAC,WAAU,MAAM;AACd,QAAI,MAAM;AACR,UAAI,CAAC,aAAa,SAAS,IAAI,GAAG;AAChC,wBAAgB,CAAC,GAAG,cAAc,IAAI,CAAC;AAAA,MACzC;AAAA,IACF,OAAO;AACL,YAAM,QAAQ,aAAa,QAAQ,IAAI;AACvC,UAAI,SAAS,GAAG;AACd,cAAM,kBAAkB,CAAC,GAAG,YAAY;AACxC,wBAAgB,OAAO,OAAO,CAAC;AAC/B,wBAAgB,eAAe;AAAA,MACjC;AAAA,IACF;AAAA,EAEF,GAAG,CAAC,MAAM,IAAI,CAAC;AACjB;",
6
- "names": ["useEffect", "useEffect"]
7
- }