@esvndev/es-react-template-chat 0.0.86 → 0.0.88

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.
package/dist/index.mjs CHANGED
@@ -17,6 +17,7 @@ import { isNullOrUndefined as isNullOrUndefined$2 } from '@src/utility/hooks/isN
17
17
  import avatarDefault from '@core/assets/images/avatars/avatar-blank.png';
18
18
  import '@draft-js-plugins/mention/lib/plugin.css';
19
19
  import '@draft-js-plugins/emoji/lib/plugin.css';
20
+ import { useAppDispatch as useAppDispatch$1, useAppSelector as useAppSelector$1 } from '@store/configureStore';
20
21
  import { useLocation } from 'react-router-dom';
21
22
  import { useDispatch } from 'react-redux';
22
23
 
@@ -27367,6 +27368,16 @@ const encodeUUID = (uuid) => {
27367
27368
  return uuid;
27368
27369
  }
27369
27370
  };
27371
+ const isValidUrl = (string) => {
27372
+ try {
27373
+ // eslint-disable-next-line no-new
27374
+ new URL(string);
27375
+ return true;
27376
+ }
27377
+ catch (e) {
27378
+ return false;
27379
+ }
27380
+ };
27370
27381
  // ** Checks if the passed date is today
27371
27382
  const isToday = (value) => {
27372
27383
  const today = new Date();
@@ -27388,7 +27399,7 @@ const formatDateToMonthShort = (value, toTimeForCurrentDay = true) => {
27388
27399
  return new Intl.DateTimeFormat('vi-VN', formatting).format(new Date(value));
27389
27400
  };
27390
27401
 
27391
- const getToken = () => {
27402
+ const getToken$1 = () => {
27392
27403
  let accessToken = localStorage.getItem('access_token');
27393
27404
  if (!accessToken) {
27394
27405
  const userData = localStorage.getItem('userData');
@@ -27423,7 +27434,7 @@ const mapPinRecordToMessage = (record) => {
27423
27434
  }
27424
27435
  return record;
27425
27436
  };
27426
- const initialState = {
27437
+ const initialState$1 = {
27427
27438
  checkInit: true,
27428
27439
  chatRoomId: undefined,
27429
27440
  contactId: undefined,
@@ -27447,7 +27458,7 @@ const get_history = createAsyncThunk(CHAT.ACTION_TYPES.GET_HISTORY, async (param
27447
27458
  const response = await fetch(`${CHAT.URL_API.GET_HISTORY_API}?${queryString}`, {
27448
27459
  method: 'GET',
27449
27460
  headers: {
27450
- 'Authorization': `Bearer ${getToken()}`,
27461
+ 'Authorization': `Bearer ${getToken$1()}`,
27451
27462
  'Content-Type': 'application/json'
27452
27463
  }
27453
27464
  });
@@ -27467,7 +27478,7 @@ const get_message_by_group_cursor = createAsyncThunk(CHAT.ACTION_TYPES.GET_MESSA
27467
27478
  const response = await fetch(`${CHAT.URL_API.GET_MESSAGE_BY_GROUP_CURSOR_API}/${params.chatRoomId}?${queryString}`, {
27468
27479
  method: 'GET',
27469
27480
  headers: {
27470
- 'Authorization': `Bearer ${getToken()}`,
27481
+ 'Authorization': `Bearer ${getToken$1()}`,
27471
27482
  'Content-Type': 'application/json'
27472
27483
  }
27473
27484
  });
@@ -27487,7 +27498,7 @@ const get_history_active = createAsyncThunk(CHAT.ACTION_TYPES.GET_HISTORY_ACTIVE
27487
27498
  const response = await fetch(`${CHAT.URL_API.GET_HISTORY_API}?${queryString}`, {
27488
27499
  method: 'GET',
27489
27500
  headers: {
27490
- 'Authorization': `Bearer ${getToken()}`,
27501
+ 'Authorization': `Bearer ${getToken$1()}`,
27491
27502
  'Content-Type': 'application/json'
27492
27503
  }
27493
27504
  });
@@ -27507,7 +27518,7 @@ const get_info = createAsyncThunk(CHAT.ACTION_TYPES.GET_INFO, async (params, thu
27507
27518
  const response = await fetch(`${CHAT.URL_API.GET_INFO_API}?${queryString}`, {
27508
27519
  method: 'GET',
27509
27520
  headers: {
27510
- 'Authorization': `Bearer ${getToken()}`,
27521
+ 'Authorization': `Bearer ${getToken$1()}`,
27511
27522
  'Content-Type': 'application/json'
27512
27523
  }
27513
27524
  });
@@ -27526,7 +27537,7 @@ const groups = createAsyncThunk(CHAT.ACTION_TYPES.GROUP, async (params, thunkAPI
27526
27537
  const response = await fetch(CHAT.URL_API.GROUP_API, {
27527
27538
  method: 'POST',
27528
27539
  headers: {
27529
- 'Authorization': `Bearer ${getToken()}`,
27540
+ 'Authorization': `Bearer ${getToken$1()}`,
27530
27541
  'Content-Type': 'application/json'
27531
27542
  },
27532
27543
  body: JSON.stringify(params)
@@ -27546,7 +27557,7 @@ const addMemberGroup = createAsyncThunk(CHAT.ACTION_TYPES.MEMBER_GROUP, async (p
27546
27557
  const response = await fetch(CHAT.URL_API.ADD_MEMBER_GROUP, {
27547
27558
  method: 'POST',
27548
27559
  headers: {
27549
- 'Authorization': `Bearer ${getToken()}`,
27560
+ 'Authorization': `Bearer ${getToken$1()}`,
27550
27561
  'Content-Type': 'application/json'
27551
27562
  },
27552
27563
  body: JSON.stringify(params)
@@ -27566,7 +27577,7 @@ const sen_message = createAsyncThunk(CHAT.ACTION_TYPES.SEN_MESSAGE, async (param
27566
27577
  const response = await fetch(`${CHAT.URL_API.SEN_MESSAGE_API}/${params.id}`, {
27567
27578
  method: 'POST',
27568
27579
  headers: {
27569
- 'Authorization': `Bearer ${getToken()}`,
27580
+ 'Authorization': `Bearer ${getToken$1()}`,
27570
27581
  'Content-Type': 'application/json'
27571
27582
  },
27572
27583
  body: JSON.stringify({ ...params.formData, tickerDto: params.tickerDto })
@@ -27586,7 +27597,7 @@ const delete_message = createAsyncThunk(CHAT.ACTION_TYPES.DELETE_MESSAGE, async
27586
27597
  const response = await fetch(`${CHAT.URL_API.MESSAGE_API}/${params.chatRoomId}/delete-message/${params.id}`, {
27587
27598
  method: 'DELETE',
27588
27599
  headers: {
27589
- 'Authorization': `Bearer ${getToken()}`,
27600
+ 'Authorization': `Bearer ${getToken$1()}`,
27590
27601
  'Content-Type': 'application/json'
27591
27602
  }
27592
27603
  });
@@ -27605,7 +27616,7 @@ const recall_message = createAsyncThunk(CHAT.ACTION_TYPES.RECALL_MESSAGE, async
27605
27616
  const response = await fetch(`${CHAT.URL_API.MESSAGE_API}/${params.chatRoomId}/recall-message/${params.id}`, {
27606
27617
  method: 'PUT',
27607
27618
  headers: {
27608
- 'Authorization': `Bearer ${getToken()}`,
27619
+ 'Authorization': `Bearer ${getToken$1()}`,
27609
27620
  'Content-Type': 'application/json'
27610
27621
  },
27611
27622
  body: JSON.stringify({})
@@ -27625,7 +27636,7 @@ const update_group_avatar = createAsyncThunk(CHAT.ACTION_TYPES.UPDATE_GROUP_AVAT
27625
27636
  const response = await fetch(CHAT.URL_API.UPDATE_GROUP_AVATAR_API, {
27626
27637
  method: 'PUT',
27627
27638
  headers: {
27628
- 'Authorization': `Bearer ${getToken()}`,
27639
+ 'Authorization': `Bearer ${getToken$1()}`,
27629
27640
  'Content-Type': 'application/json'
27630
27641
  },
27631
27642
  body: JSON.stringify(params)
@@ -27646,7 +27657,7 @@ const get_message_by_group = createAsyncThunk(CHAT.ACTION_TYPES.GET_MESSAGE_BY_G
27646
27657
  const response = await fetch(`${CHAT.URL_API.GET_MESSAGE_BY_GROUP_API}/${params.chatRoomId}?${queryString}`, {
27647
27658
  method: 'GET',
27648
27659
  headers: {
27649
- 'Authorization': `Bearer ${getToken()}`,
27660
+ 'Authorization': `Bearer ${getToken$1()}`,
27650
27661
  'Content-Type': 'application/json'
27651
27662
  }
27652
27663
  });
@@ -27666,7 +27677,7 @@ const get_message_by_contact = createAsyncThunk(CHAT.ACTION_TYPES.GET_MESSAGE_BY
27666
27677
  const response = await fetch(`${CHAT.URL_API.GET_MESSAGE_BY_CONTACT_API}/${params.chatRoomId}?${queryString}`, {
27667
27678
  method: 'GET',
27668
27679
  headers: {
27669
- 'Authorization': `Bearer ${getToken()}`,
27680
+ 'Authorization': `Bearer ${getToken$1()}`,
27670
27681
  'Content-Type': 'application/json'
27671
27682
  }
27672
27683
  });
@@ -27685,7 +27696,7 @@ const contact_add = createAsyncThunk(CHAT.ACTION_TYPES.CONTACT_ADD, async (param
27685
27696
  const response = await fetch(CHAT.URL_API.CONTACT_ADD_API, {
27686
27697
  method: 'POST',
27687
27698
  headers: {
27688
- 'Authorization': `Bearer ${getToken()}`,
27699
+ 'Authorization': `Bearer ${getToken$1()}`,
27689
27700
  'Content-Type': 'application/json'
27690
27701
  },
27691
27702
  body: JSON.stringify(params)
@@ -27705,7 +27716,7 @@ const connectChatRoomMemberApi = createAsyncThunk(CHAT.ACTION_TYPES.CONNECT_CHAT
27705
27716
  const response = await fetch(CHAT.URL_API.CONNECT_CHAT_ROOM_MEMBER_API, {
27706
27717
  method: 'POST',
27707
27718
  headers: {
27708
- 'Authorization': `Bearer ${getToken()}`,
27719
+ 'Authorization': `Bearer ${getToken$1()}`,
27709
27720
  'Content-Type': 'application/json'
27710
27721
  },
27711
27722
  body: JSON.stringify(params)
@@ -27725,7 +27736,7 @@ const get_profile = createAsyncThunk(CHAT.ACTION_TYPES.GET_PROFILE, async (_, th
27725
27736
  const response = await fetch(CHAT.URL_API.GET_PROFILE, {
27726
27737
  method: 'GET',
27727
27738
  headers: {
27728
- 'Authorization': `Bearer ${getToken()}`,
27739
+ 'Authorization': `Bearer ${getToken$1()}`,
27729
27740
  'Content-Type': 'application/json'
27730
27741
  }
27731
27742
  });
@@ -27745,7 +27756,7 @@ const get_users = createAsyncThunk(CHAT.ACTION_TYPES.GET_USERS, async (params, t
27745
27756
  const response = await fetch(`${CHAT.URL_API.GET_USERS}?${queryString}`, {
27746
27757
  method: 'GET',
27747
27758
  headers: {
27748
- 'Authorization': `Bearer ${getToken()}`,
27759
+ 'Authorization': `Bearer ${getToken$1()}`,
27749
27760
  'Content-Type': 'application/json'
27750
27761
  }
27751
27762
  });
@@ -27765,7 +27776,7 @@ const get_contact = createAsyncThunk(CHAT.ACTION_TYPES.GET_CONTACT, async (param
27765
27776
  const response = await fetch(`${CHAT.URL_API.GET_CONTACT_API}?${queryString}`, {
27766
27777
  method: 'GET',
27767
27778
  headers: {
27768
- 'Authorization': `Bearer ${getToken()}`,
27779
+ 'Authorization': `Bearer ${getToken$1()}`,
27769
27780
  'Content-Type': 'application/json'
27770
27781
  }
27771
27782
  });
@@ -27784,7 +27795,7 @@ const update_chat_room_member = createAsyncThunk(CHAT.ACTION_TYPES.CHAT_ROOM_MEM
27784
27795
  const response = await fetch(`${CHAT.URL_API.CHAT_ROOM_MEMBER_API}/${params}`, {
27785
27796
  method: 'PUT',
27786
27797
  headers: {
27787
- 'Authorization': `Bearer ${getToken()}`,
27798
+ 'Authorization': `Bearer ${getToken$1()}`,
27788
27799
  'Content-Type': 'application/json'
27789
27800
  },
27790
27801
  body: JSON.stringify({})
@@ -27805,7 +27816,7 @@ const getPagingEmployeeApi = createAsyncThunk(CHAT.ACTION_TYPES.GET_PAGING_EMPLO
27805
27816
  const response = await fetch(`${CHAT.URL_API.GET_PAGING_EMPLOYEE_API}?${queryString}`, {
27806
27817
  method: 'GET',
27807
27818
  headers: {
27808
- 'Authorization': `Bearer ${getToken()}`,
27819
+ 'Authorization': `Bearer ${getToken$1()}`,
27809
27820
  'Content-Type': 'application/json'
27810
27821
  }
27811
27822
  });
@@ -27824,7 +27835,7 @@ const pinMessageChatRoomApi = createAsyncThunk(CHAT.ACTION_TYPES.PIN_MESSAGE_CHA
27824
27835
  const response = await fetch(`${CHAT.URL_API.PIN_MESSAGE_CHAT_ROOM_API}/${params.id}`, {
27825
27836
  method: 'POST',
27826
27837
  headers: {
27827
- 'Authorization': `Bearer ${getToken()}`,
27838
+ 'Authorization': `Bearer ${getToken$1()}`,
27828
27839
  'Content-Type': 'application/json'
27829
27840
  },
27830
27841
  body: JSON.stringify(params)
@@ -27844,7 +27855,7 @@ const getPinMessageChatRoomApi = createAsyncThunk(CHAT.ACTION_TYPES.GET_PIN_MESS
27844
27855
  const response = await fetch(`${CHAT.URL_API.GET_PIN_MESSAGE_CHAT_ROOM_API}/${params}`, {
27845
27856
  method: 'GET',
27846
27857
  headers: {
27847
- 'Authorization': `Bearer ${getToken()}`,
27858
+ 'Authorization': `Bearer ${getToken$1()}`,
27848
27859
  'Content-Type': 'application/json'
27849
27860
  }
27850
27861
  });
@@ -27863,7 +27874,7 @@ const deletePinMessageApi = createAsyncThunk(CHAT.ACTION_TYPES.DELETE_PIN_MESSAG
27863
27874
  const response = await fetch(`${CHAT.URL_API.PIN_MESSAGE_CHAT_ROOM_API}/${pinId}`, {
27864
27875
  method: 'DELETE',
27865
27876
  headers: {
27866
- 'Authorization': `Bearer ${getToken()}`,
27877
+ 'Authorization': `Bearer ${getToken$1()}`,
27867
27878
  'Content-Type': 'application/json'
27868
27879
  }
27869
27880
  });
@@ -27882,7 +27893,7 @@ const updateGroupTagApi = createAsyncThunk(CHAT.ACTION_TYPES.UPDATE_GROUP_TAG, a
27882
27893
  const response = await fetch(CHAT.URL_API.UPDATE_GROUP_TAG_API, {
27883
27894
  method: 'PUT',
27884
27895
  headers: {
27885
- 'Authorization': `Bearer ${getToken()}`,
27896
+ 'Authorization': `Bearer ${getToken$1()}`,
27886
27897
  'Content-Type': 'application/json'
27887
27898
  },
27888
27899
  body: JSON.stringify(params)
@@ -27902,7 +27913,7 @@ const createReminderApi = createAsyncThunk(CHAT.ACTION_TYPES.CREATE_REMINDER, as
27902
27913
  const response = await fetch(CHAT.URL_API.CREATE_REMINDER_API, {
27903
27914
  method: 'POST',
27904
27915
  headers: {
27905
- 'Authorization': `Bearer ${getToken()}`,
27916
+ 'Authorization': `Bearer ${getToken$1()}`,
27906
27917
  'Content-Type': 'application/json'
27907
27918
  },
27908
27919
  body: JSON.stringify(params)
@@ -27919,7 +27930,7 @@ const createReminderApi = createAsyncThunk(CHAT.ACTION_TYPES.CREATE_REMINDER, as
27919
27930
  });
27920
27931
  const appChatSlice = createSlice({
27921
27932
  name: 'appChat',
27922
- initialState,
27933
+ initialState: initialState$1,
27923
27934
  reducers: {
27924
27935
  selectChat(state, action) {
27925
27936
  state.chatRoomId = action.payload;
@@ -36612,6 +36623,86 @@ var SvgBecoxyApplication = function (_a) {
36612
36623
  React.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
36613
36624
  };
36614
36625
 
36626
+ var SvgBecoxyBusinessMan = function (_a) {
36627
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36628
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36629
+ title ? React.createElement("title", { id: titleId }, title) : null,
36630
+ React.createElement("path", { d: "M10.5 16.875H9.375v-.75A1.125 1.125 0 0 0 8.25 15h-1.5a1.125 1.125 0 0 0-1.125 1.125v.75H4.5A1.125 1.125 0 0 0 3.375 18v4.5A1.125 1.125 0 0 0 4.5 23.625h6a1.125 1.125 0 0 0 1.125-1.125V18a1.125 1.125 0 0 0-1.125-1.125Zm-4.125-.75a.375.375 0 0 1 .375-.375h1.5a.375.375 0 0 1 .375.375v.75h-2.25v-.75Zm4.5 6.375a.375.375 0 0 1-.375.375h-6a.375.375 0 0 1-.375-.375v-2.821l1.125.45v.308a.375.375 0 0 0 .75 0v-.187h3v.188a.375.375 0 0 0 .75 0v-.31l1.125-.45V22.5Zm0-3.629-1.125.45v-.009a.375.375 0 0 0-.75 0v.188H6v-.188a.375.375 0 0 0-.75 0v.01l-1.125-.45V18a.375.375 0 0 1 .375-.375h6a.375.375 0 0 1 .375.375v.871ZM17.759 4.168a2.25 2.25 0 1 0-3.268 0A3.377 3.377 0 0 0 11.626 7.5v5.625a1.5 1.5 0 0 0 1.5 1.5h.375v6.82a1.124 1.124 0 0 0-.75 1.055v.75a.375.375 0 0 0 .375.375h6a.375.375 0 0 0 .375-.375v-.75a1.125 1.125 0 0 0-.75-1.056v-6.819h.375a1.5 1.5 0 0 0 1.5-1.5V7.5a3.377 3.377 0 0 0-2.866-3.332Zm-1.634-3.043a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3Zm-3 12.75a.75.75 0 0 1-.75-.75H13.5v.75h-.375Zm2.625 9H13.5V22.5a.375.375 0 0 1 .375-.375h1.875v.75Zm.375-9.375a.375.375 0 0 0-.375.375v7.5h-1.5v-9.75H18v9.75h-1.5v-7.5a.375.375 0 0 0-.375-.375Zm2.625 9.375H16.5v-.75h1.875a.375.375 0 0 1 .375.375v.375Zm.375-9h-.375v-.75h1.125a.75.75 0 0 1-.75.75Zm.75-1.5H18.75V7.5a.375.375 0 1 0-.75 0v3.375h-3.75V7.5a.375.375 0 1 0-.75 0v4.875h-1.125V7.5A2.628 2.628 0 0 1 15 4.875h2.25A2.628 2.628 0 0 1 19.875 7.5v4.875Z", fill: props.color || "currentColor" })));
36631
+ };
36632
+
36633
+ var SvgBecoxyCar = function (_a) {
36634
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36635
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36636
+ title ? React.createElement("title", { id: titleId }, title) : null,
36637
+ React.createElement("path", { d: "M4.5 13A2.503 2.503 0 0 0 2 15.5C2 16.878 3.122 18 4.5 18S7 16.878 7 15.5 5.878 13 4.5 13Zm0 4c-.827 0-1.5-.673-1.5-1.5S3.673 14 4.5 14s1.5.673 1.5 1.5S5.327 17 4.5 17ZM19.5 13a2.503 2.503 0 0 0-2.5 2.5c0 1.378 1.122 2.5 2.5 2.5s2.5-1.122 2.5-2.5-1.122-2.5-2.5-2.5Zm0 4c-.827 0-1.5-.673-1.5-1.5s.673-1.5 1.5-1.5 1.5.673 1.5 1.5-.673 1.5-1.5 1.5Z", fill: props.color || "currentColor" }),
36638
+ React.createElement("path", { d: "M21 10h-.846c-.309 0-.612-.106-.854-.3l-3.94-3.152A2.514 2.514 0 0 0 13.798 6H6.57c-.838 0-1.615.416-2.08 1.113l-.851 1.278A1.369 1.369 0 0 1 2.5 9 2.503 2.503 0 0 0 0 11.5v2C0 14.878 1.122 16 2.5 16a.5.5 0 0 0 0-1c-.827 0-1.5-.673-1.5-1.5v-2c0-.827.673-1.5 1.5-1.5.794 0 1.53-.394 1.971-1.055l.851-1.277A1.499 1.499 0 0 1 6.57 7h7.228c.34 0 .672.117.938.329l3.94 3.15c.417.336.943.52 1.479.52H21c1.467 0 2 1.496 2 2.5 0 .986-.754 1.5-1.5 1.5a.5.5 0 0 0 0 1C22.925 16 24 14.926 24 13.5c0-1.697-1.051-3.5-3-3.5Z", fill: props.color || "currentColor" }),
36639
+ React.createElement("path", { d: "M17.5 15h-11a.5.5 0 0 0 0 1h11a.5.5 0 0 0 0-1ZM16.5 10H12V8.5a.5.5 0 0 0-1 0v2a.5.5 0 0 0 .5.5h5a.5.5 0 0 0 0-1ZM9.5 10H6.31l.64-1.276a.5.5 0 0 0-.896-.447l-1 2A.498.498 0 0 0 5.5 11h4a.5.5 0 0 0 0-1ZM13.5 12h-1a.5.5 0 0 0 0 1h1a.5.5 0 0 0 0-1Z", fill: props.color || "currentColor" })));
36640
+ };
36641
+
36642
+ var SvgBecoxyLateEarly = function (_a) {
36643
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36644
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36645
+ title ? React.createElement("title", { id: titleId }, title) : null,
36646
+ React.createElement("g", { clipPath: "url(#becoxy-late-early_svg__a)", fill: props.color || "currentColor" },
36647
+ React.createElement("path", { d: "M16.539 6.252c1.217 0 2.207-.99 2.207-2.207 0-1.218-.99-2.207-2.207-2.207-1.218 0-2.207.99-2.207 2.207 0 1.218.99 2.207 2.207 2.207Zm0-3.408c.66 0 1.2.54 1.2 1.201 0 .66-.54 1.201-1.2 1.201a1.2 1.2 0 1 1 0-2.402Z" }),
36648
+ React.createElement("path", { d: "M23.16 4.304a1.41 1.41 0 0 0-1.875.6v.003s0 .004-.003.004l-1.137 2.214-1.456-.366a2.015 2.015 0 0 0-.718-.05l-2.885.345h-.003a1.542 1.542 0 0 0-.772.319l-4.813 3.753h-.003c-.292.232-.477.56-.523.926-.048.369.053.735.285 1.026.278.356.694.544 1.113.544.295 0 .594-.094.842-.286l3.01-2.344.381 3.358v.006c.017.135.047.265.091.39l.01.04c.06.198.03.302-.114.61l-1.362 2.633c-.027.05-.077.08-.124.074l-2.73-.295h-.004a1.56 1.56 0 0 0-1.285.456c-.325.335-.48.792-.422 1.258.09.734.67 1.318 1.382 1.392h.003l3.381.369a2.303 2.303 0 0 0 2.274-1.224l1.604-3.096 2.663 1.734-.147 3.676v.02c0 .198.023.37.07.523.074.245.218.474.413.654.295.279.687.43 1.08.43.17 0 .338-.027.503-.087a1.62 1.62 0 0 0 1.03-1.154 1.29 1.29 0 0 0 .026-.201l.004-.03V22.5l.178-4.172a2.304 2.304 0 0 0-1.043-2.013l-2.043-1.328a.145.145 0 0 1-.057-.097l-.59-5.079.69.181h.004a1.98 1.98 0 0 0 2.257-1.026l1.429-2.794v-.004s0-.003.003-.003a1.404 1.404 0 0 0-.617-1.861ZM13.54 20.29l-3.381-.369h-.007c-.238-.023-.456-.255-.49-.517a.518.518 0 0 1 .145-.429.557.557 0 0 1 .463-.158l2.726.292a1.146 1.146 0 0 0 1.127-.614l1.366-2.643c0-.003 0-.003.003-.007 0-.003.003-.006.003-.01a.287.287 0 0 0 .017-.036l.946.617-1.647 3.186a1.29 1.29 0 0 1-1.27.688Zm6.796-11.274-.98-.255a.805.805 0 0 0-.996.865l.624 5.388c.04.339.225.637.507.822l2.042 1.328c.383.248.607.68.59 1.127l-.177 4.16-.004.02c-.003.033-.006.066-.01.083a.6.6 0 0 1-.382.416.566.566 0 0 1-.553-.127.482.482 0 0 1-.138-.215.8.8 0 0 1-.027-.225l.155-3.78a.813.813 0 0 0-.37-.708l-2.864-1.861a.52.52 0 0 0-.08-.067.781.781 0 0 0-.118-.064l-1.506-.98a.986.986 0 0 1-.44-.714l-.432-3.797a.77.77 0 0 0-.46-.617.76.76 0 0 0-.758.11l-3.354 2.617a.388.388 0 0 1-.547-.078.39.39 0 0 1 .07-.546l4.804-3.75a.56.56 0 0 1 .272-.115l2.884-.345a.978.978 0 0 1 .353.027l1.62.41c.006.002.017.002.023.006a.79.79 0 0 0 .872-.406c0-.003.004-.007.007-.01l1.208-2.355c.1-.188.345-.268.526-.174a.398.398 0 0 1 .171.52l-1.425 2.787a.963.963 0 0 1-1.107.503Z" }),
36649
+ React.createElement("path", { d: "M9.877 16.607a.425.425 0 0 0 .084-.09.99.99 0 0 0 .275-.587.974.974 0 0 0-.218-.725l-2.375-2.898a.986.986 0 0 0-1.389-.14l-1.952 1.596a.99.99 0 0 0-.359.67 1 1 0 0 0 .215.732l2.361 2.898a.99.99 0 0 0 .671.359c.037.003.07.006.108.006a.985.985 0 0 0 .624-.22l1.955-1.6ZM4.89 14.571c-.01-.013-.01-.033-.01-.04 0-.007.004-.027.02-.04l1.953-1.597c.02-.017.05-.01.067.01l2.368 2.891c0 .004.003.004.003.007.007.01.013.02.01.034 0 .013-.007.023-.017.033a.352.352 0 0 0-.07.07l-1.885 1.54c-.014.01-.034.01-.04.01a.055.055 0 0 1-.04-.02l-2.359-2.898Z" }),
36650
+ React.createElement("path", { d: "m7.013 15.96 1.21.318a.34.34 0 0 0 .413-.241.336.336 0 0 0-.238-.41l-1.214-.318a.192.192 0 0 1-.135-.17l-.09-1.393a.334.334 0 1 0-.668.044l.09 1.392a.853.853 0 0 0 .631.778ZM9.495 6.058a4.664 4.664 0 0 0-1.05-2.949l.235-.238.462.463a.471.471 0 0 0 .665 0 .468.468 0 0 0 0-.664L8.213 1.077a.468.468 0 0 0-.664 0 .468.468 0 0 0 0 .664l.466.466-.23.238A4.65 4.65 0 0 0 5.287 1.41v-.47h.86c.257 0 .469-.211.469-.47A.471.471 0 0 0 6.147 0h-2.66a.47.47 0 0 0-.47.47c0 .258.212.47.47.47h.859v.469A4.68 4.68 0 0 0 .153 6.058a4.678 4.678 0 0 0 4.672 4.672 4.678 4.678 0 0 0 4.67-4.672Zm-8.403 0a3.736 3.736 0 0 1 3.623-3.73.504.504 0 0 0 .104.013c.037 0 .07-.003.104-.013a3.71 3.71 0 0 1 2.472 1.03c.02.03.04.057.067.08a.41.41 0 0 0 .074.06 3.72 3.72 0 0 1 1.02 2.56 3.739 3.739 0 0 1-3.734 3.733 3.736 3.736 0 0 1-3.73-3.733Z" }),
36651
+ React.createElement("path", { d: "M5.235 6.065V3.626a.42.42 0 0 0-.839 0v2.439a.42.42 0 0 0 .839 0Z" })),
36652
+ React.createElement("defs", null,
36653
+ React.createElement("clipPath", { id: "becoxy-late-early_svg__a" },
36654
+ React.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
36655
+ };
36656
+
36657
+ var SvgBecoxyMoreTime = function (_a) {
36658
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36659
+ return (React.createElement("svg", __assign$1({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36660
+ title ? React.createElement("title", { id: titleId }, title) : null,
36661
+ React.createElement("path", { fill: "currentColor", d: "M10 8v6l4.7 2.9.8-1.2-4-2.4V8z" }),
36662
+ React.createElement("path", { fill: "currentColor", d: "M17.92 12A6.957 6.957 0 0 1 11 20c-3.9 0-7-3.1-7-7s3.1-7 7-7c.7 0 1.37.1 2 .29V4.23c-.64-.15-1.31-.23-2-.23-5 0-9 4-9 9s4 9 9 9a8.963 8.963 0 0 0 8.94-10h-2.02z" }),
36663
+ React.createElement("path", { fill: "currentColor", d: "M20 5V2h-2v3h-3v2h3v3h2V7h3V5z" })));
36664
+ };
36665
+
36666
+ var SvgBecoxySwitchShift = function (_a) {
36667
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36668
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36669
+ title ? React.createElement("title", { id: titleId }, title) : null,
36670
+ React.createElement("g", { clipPath: "url(#becoxy-switch-shift_svg__a)" },
36671
+ React.createElement("path", { d: "M14.459 2.852a.375.375 0 0 1 .427-.313 6.349 6.349 0 0 1 4.098 2.433 6.36 6.36 0 0 1 1.303 3.605l.537-.544a.375.375 0 0 1 .533.527l-1.211 1.228a.374.374 0 0 1-.53.003L18.387 8.58a.375.375 0 1 1 .527-.534l.625.617a5.613 5.613 0 0 0-1.152-3.235 5.602 5.602 0 0 0-3.616-2.148.375.375 0 0 1-.313-.428ZM9.228 20.72a5.602 5.602 0 0 1-3.616-2.147 5.613 5.613 0 0 1-1.152-3.236l.625.617a.375.375 0 0 0 .527-.533l-1.228-1.212a.375.375 0 0 0-.53.004L2.642 15.44a.375.375 0 1 0 .534.527l.537-.544a6.36 6.36 0 0 0 1.303 3.605 6.348 6.348 0 0 0 4.098 2.433.376.376 0 0 0 .427-.313.375.375 0 0 0-.313-.428Zm-2.604-7.612A6.491 6.491 0 0 1 .141 6.624 6.491 6.491 0 0 1 6.624.141a6.491 6.491 0 0 1 6.484 6.483 6.491 6.491 0 0 1-6.484 6.484Zm0-.75a5.74 5.74 0 0 0 5.734-5.734A5.74 5.74 0 0 0 6.624.891 5.74 5.74 0 0 0 .891 6.624a5.74 5.74 0 0 0 5.733 5.734Zm0-.319A5.42 5.42 0 0 1 1.21 6.624 5.42 5.42 0 0 1 6.624 1.21a5.42 5.42 0 0 1 5.415 5.414 5.42 5.42 0 0 1-5.415 5.415Zm-2.646-1.576a.375.375 0 0 1 .644.374c.5.239 1.05.39 1.627.437v-.263a.375.375 0 0 1 .75 0v.263a4.63 4.63 0 0 0 1.627-.437.375.375 0 0 1 .645-.374c.466-.322.87-.726 1.192-1.192a.375.375 0 0 1 .374-.645c.239-.5.39-1.048.437-1.627h-.263a.375.375 0 0 1 0-.75h.263a4.627 4.627 0 0 0-.437-1.627.374.374 0 0 1-.476-.155.375.375 0 0 1 .102-.49A4.704 4.704 0 0 0 9.27 2.786a.375.375 0 0 1-.644-.373A4.629 4.629 0 0 0 7 1.975v.262a.375.375 0 0 1-.75 0v-.262a4.63 4.63 0 0 0-1.627.437.375.375 0 0 1-.644.373c-.466.322-.87.727-1.193 1.193a.375.375 0 0 1-.373.644c-.239.5-.391 1.049-.437 1.627h.262a.375.375 0 0 1 0 .75h-.262c.046.579.198 1.127.436 1.627a.375.375 0 0 1 .374.645c.322.466.727.87 1.193 1.192Zm.115-2.377a.375.375 0 0 1 .137-.512l1.468-.848a.933.933 0 0 1 .551-.954V3.107a.375.375 0 0 1 .75 0v2.665a.933.933 0 0 1-.375 1.784.926.926 0 0 1-.55-.181l-1.469.848a.373.373 0 0 1-.512-.137Zm2.713-1.462a.182.182 0 1 0-.364 0 .182.182 0 0 0 .364 0ZM23.86 17.376a6.491 6.491 0 0 1-6.483 6.483 6.491 6.491 0 0 1-6.484-6.483 6.491 6.491 0 0 1 6.484-6.484 6.49 6.49 0 0 1 6.483 6.484Zm-6.483 5.733c.736 0 1.44-.14 2.088-.393v-1.86a.375.375 0 0 1 .75 0v1.5c.316-.18.613-.39.888-.626v-.974c0-1.04-.847-1.887-1.887-1.887h-.86l-.633 1.537a.375.375 0 0 1-.693 0l-.632-1.537h-.86c-1.041 0-1.888.846-1.888 1.887v.974c.275.235.573.445.889.626v-1.5a.375.375 0 0 1 .75 0v1.86a5.705 5.705 0 0 0 2.088.393Zm5.733-5.733a5.74 5.74 0 0 0-5.733-5.734 5.74 5.74 0 0 0-5.734 5.734c0 1.352.471 2.597 1.258 3.578v-.198a2.64 2.64 0 0 1 2.636-2.637h1.112c.152 0 .29.092.347.232l.38.926.381-.926a.375.375 0 0 1 .347-.232h1.112a2.64 2.64 0 0 1 2.637 2.637v.199a5.707 5.707 0 0 0 1.257-3.58Zm-3.424-1.818c0 1.36-1.036 2.465-2.31 2.465-1.273 0-2.308-1.106-2.308-2.465 0-1.359 1.035-2.465 2.309-2.465 1.273 0 2.309 1.106 2.309 2.465Zm-.75 0c0-.945-.7-1.715-1.56-1.715-.859 0-1.558.77-1.558 1.715 0 .946.699 1.715 1.559 1.715s1.559-.77 1.559-1.715Z", fill: props.color || "currentColor" })),
36672
+ React.createElement("defs", null,
36673
+ React.createElement("clipPath", { id: "becoxy-switch-shift_svg__a" },
36674
+ React.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
36675
+ };
36676
+
36677
+ var SvgBecoxyTimeExplanation = function (_a) {
36678
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36679
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36680
+ title ? React.createElement("title", { id: titleId }, title) : null,
36681
+ React.createElement("g", { clipPath: "url(#becoxy-time-explanation_svg__a)", fill: props.color || "currentColor" },
36682
+ React.createElement("path", { d: "M13.115 22.523a.264.264 0 0 1-.267-.267v-6.635c0-.149.117-.266.267-.266.149 0 .266.117.266.266v6.635c0 .15-.122.267-.266.267ZM15.381 22.523a.264.264 0 0 1-.266-.267v-6.635c0-.149.117-.266.266-.266.15 0 .267.117.267.266v6.635c0 .15-.117.267-.267.267ZM17.653 22.523a.264.264 0 0 1-.266-.267v-6.635c0-.149.117-.266.266-.266.15 0 .267.117.267.266v6.635c0 .15-.123.267-.267.267ZM19.92 22.523a.264.264 0 0 1-.267-.267v-6.635c0-.149.118-.266.267-.266.15 0 .267.117.267.266v6.635c0 .15-.118.267-.267.267Z" }),
36683
+ React.createElement("path", { d: "M22.635 23.67h-12.24a1.154 1.154 0 0 1-1.152-1.153v-8.293c0-.635.517-1.152 1.152-1.152h1.648c.149 0 .266.117.266.267 0 .149-.117.266-.266.266h-1.648a.62.62 0 0 0-.619.619v8.293a.62.62 0 0 0 .619.619h12.24a.62.62 0 0 0 .618-.619v-8.293a.62.62 0 0 0-.618-.619h-1.648a.264.264 0 0 1-.267-.266c0-.15.117-.267.267-.267h1.648c.634 0 1.152.517 1.152 1.152v8.293c0 .635-.518 1.152-1.152 1.152ZM19.7 13.604h-2.544a.264.264 0 0 1-.266-.266c0-.15.117-.267.266-.267h2.544c.15 0 .267.117.267.267 0 .149-.117.266-.267.266Zm-3.824 0h-2.544a.264.264 0 0 1-.266-.266c0-.15.117-.267.266-.267h2.544a.267.267 0 0 1 0 .533Z" }),
36684
+ React.createElement("path", { d: "M22.336 22.523H10.699a.264.264 0 0 1-.267-.267v-6.635c0-.149.117-.266.267-.266H22.34c.15 0 .267.117.267.266v6.635a.272.272 0 0 1-.272.267Zm-11.37-.534h11.109v-6.101h-11.11v6.101ZM12.688 14.95a.906.906 0 0 1-.907-.907v-1.414a.906.906 0 1 1 1.814 0v1.414a.906.906 0 0 1-.907.906Zm0-2.694a.371.371 0 0 0-.373.373v1.414c0 .208.165.373.373.373a.371.371 0 0 0 .373-.373v-1.414a.371.371 0 0 0-.373-.373ZM16.517 14.95a.906.906 0 0 1-.906-.907v-1.414a.906.906 0 1 1 1.813 0v1.414a.906.906 0 0 1-.907.906Zm0-2.694a.371.371 0 0 0-.373.373v1.414c0 .208.165.373.373.373a.371.371 0 0 0 .374-.373v-1.414a.371.371 0 0 0-.374-.373ZM20.347 14.95a.906.906 0 0 1-.907-.907v-1.414a.906.906 0 1 1 1.813 0v1.414a.906.906 0 0 1-.906.906Zm0-2.694a.371.371 0 0 0-.374.373v1.414c0 .208.166.373.374.373a.371.371 0 0 0 .373-.373v-1.414a.374.374 0 0 0-.373-.373ZM14.923 13.605a.264.264 0 0 1-.267-.266V4.81a.672.672 0 0 0-.667-.672h-2.453v1.488c0 .149-.117.266-.267.266a.264.264 0 0 1-.266-.266V4.16c0-.016 0-.032-.006-.048 0-.016-.005-.032-.005-.048a.632.632 0 0 0-.027-.117.254.254 0 0 1 .048-.23.27.27 0 0 1 .214-.106h2.762c.662 0 1.2.538 1.2 1.205v8.528a.263.263 0 0 1-.266.261Z" }),
36685
+ React.createElement("path", { d: "M10.64 23.67H1.413c-.661 0-1.2-.545-1.2-1.206V4.811c0-.662.539-1.206 1.2-1.206h2.763c.085 0 .16.038.213.107.048.064.07.15.048.23a.764.764 0 0 0-.021.117c-.005.016-.005.032-.005.048s-.006.032-.006.048V5.62c0 .15-.117.267-.266.267a.264.264 0 0 1-.267-.267V4.14H1.42a.668.668 0 0 0-.667.672v17.653c0 .368.299.667.667.667h9.221c.15 0 .267.117.267.266 0 .15-.118.272-.267.272ZM13.168 12.475a.264.264 0 0 1-.267-.267V5.893H11.27a.264.264 0 0 1-.266-.266c0-.15.117-.267.266-.267h1.899c.15 0 .267.117.267.267v6.581a.267.267 0 0 1-.267.267Z" }),
36686
+ React.createElement("path", { d: "M9.515 21.915h-7.28a.264.264 0 0 1-.267-.267V5.627c0-.15.117-.267.267-.267h1.904c.149 0 .266.117.266.267 0 .149-.117.266-.266.266H2.5v15.488h7.014a.267.267 0 0 1 0 .533Z" }),
36687
+ React.createElement("path", { d: "M5.333 10.315H4.107a.62.62 0 0 1-.619-.619V8.288a.62.62 0 0 1 .619-.619h1.226a.62.62 0 0 1 .619.619v1.408a.62.62 0 0 1-.619.619ZM4.107 8.203a.084.084 0 0 0-.086.085v1.408c0 .048.038.085.086.085h1.226a.084.084 0 0 0 .086-.085V8.288a.084.084 0 0 0-.086-.085H4.107ZM5.333 14.96H4.107a.62.62 0 0 1-.619-.619v-1.408a.62.62 0 0 1 .619-.618h1.226a.62.62 0 0 1 .619.618v1.408a.62.62 0 0 1-.619.619Zm-1.226-2.112a.084.084 0 0 0-.086.085v1.408c0 .048.038.086.086.086h1.226a.084.084 0 0 0 .086-.086v-1.408a.084.084 0 0 0-.086-.085H4.107ZM5.333 19.605H4.107a.62.62 0 0 1-.619-.618v-1.408a.62.62 0 0 1 .619-.619h1.226a.62.62 0 0 1 .619.619v1.408a.62.62 0 0 1-.619.618Zm-1.226-2.112a.084.084 0 0 0-.086.086v1.408c0 .048.038.085.086.085h1.226a.084.084 0 0 0 .086-.085v-1.408a.084.084 0 0 0-.086-.086H4.107ZM11.355 8.528H7.056a.264.264 0 0 1-.267-.267c0-.149.118-.266.267-.266h4.299c.15 0 .266.117.266.266 0 .15-.117.267-.266.267ZM9.925 9.99H7.061a.264.264 0 0 1-.266-.267c0-.15.117-.267.266-.267h2.864a.267.267 0 0 1 0 .533ZM8.48 13.173H7.061a.264.264 0 0 1-.266-.266c0-.15.117-.267.266-.267H8.48a.267.267 0 0 1 0 .533ZM8.005 14.635h-.949a.264.264 0 0 1-.267-.267c0-.15.118-.267.267-.267h.95c.149 0 .266.118.266.267 0 .15-.117.267-.267.267ZM8.48 17.819H7.061a.264.264 0 0 1-.266-.267c0-.15.117-.267.266-.267H8.48a.267.267 0 0 1 0 .533ZM8.005 19.28h-.949a.264.264 0 0 1-.267-.267c0-.149.118-.266.267-.266h.95c.149 0 .266.117.266.266 0 .15-.117.267-.267.267ZM11.27 6.427H4.132a.264.264 0 0 1-.266-.267V4.224c0-.923.746-1.67 1.669-1.67h.027v-.08c0-1.178.96-2.138 2.138-2.138 1.179 0 2.139.96 2.139 2.139v.08h.027c.922 0 1.669.746 1.669 1.669V6.16c0 .15-.123.267-.267.267ZM4.4 5.893h6.597V4.224c0-.63-.512-1.136-1.136-1.136h-.325a.264.264 0 0 1-.203-.096.292.292 0 0 1-.058-.219A1.607 1.607 0 0 0 7.696.87a1.607 1.607 0 0 0-1.579 1.904.25.25 0 0 1-.058.219.272.272 0 0 1-.203.096h-.325c-.63 0-1.136.512-1.136 1.136l.005 1.67Z" }),
36688
+ React.createElement("path", { d: "M7.701 3.621A1.154 1.154 0 0 1 6.55 2.47c0-.634.518-1.152 1.152-1.152.635 0 1.152.518 1.152 1.152 0 .635-.517 1.152-1.152 1.152Zm0-1.765a.62.62 0 0 0 0 1.237.624.624 0 0 0 .62-.624.615.615 0 0 0-.62-.613ZM16.384 19.488a.25.25 0 0 1-.187-.08l-.218-.219a.264.264 0 0 1 0-.378.264.264 0 0 1 .378 0l.032.032.379-.379a.264.264 0 0 1 .379 0 .264.264 0 0 1 0 .379l-.566.565a.293.293 0 0 1-.197.08ZM22.336 18.107H10.699a.264.264 0 0 1-.267-.267c0-.15.117-.267.267-.267H22.34c.15 0 .267.118.267.267 0 .15-.123.267-.272.267ZM22.336 20.304H10.699a.264.264 0 0 1-.267-.267c0-.149.117-.266.267-.266H22.34c.15 0 .267.117.267.266 0 .15-.123.267-.272.267Z" })),
36689
+ React.createElement("defs", null,
36690
+ React.createElement("clipPath", { id: "becoxy-time-explanation_svg__a" },
36691
+ React.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
36692
+ };
36693
+
36694
+ var SvgBecoxyWallet = function (_a) {
36695
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36696
+ return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36697
+ title ? React.createElement("title", { id: titleId }, title) : null,
36698
+ React.createElement("g", { clipPath: "url(#becoxy-wallet_svg__a)", fill: props.color || "currentColor" },
36699
+ React.createElement("path", { d: "M23.654 10.89 18.015.187a.358.358 0 0 0-.479-.148L2.186 8.129a.354.354 0 0 0-.063.042H.661a.354.354 0 0 0-.355.355v15.12c0 .195.159.354.355.354h15.293a.354.354 0 1 0 0-.709H1.014V8.88h19.68c.43 0 .78.35.78.78v4.181h-.809a.356.356 0 0 0 .006-.061v-.577a.354.354 0 1 0-.709 0v.577c0 .02.002.041.006.061h-1.163c-.613 0-1.11.498-1.11 1.11v2.269c0 .612.497 1.11 1.11 1.11h1.157v.3a.354.354 0 1 0 .709 0v-.3h.803v4.182c0 .43-.35.78-.78.78h-2.976a.354.354 0 0 0 0 .708h2.977a1.49 1.49 0 0 0 1.488-1.488V18.33h.402a.354.354 0 0 0 .354-.354v-3.78a.354.354 0 0 0-.354-.355h-.402v-1.776l1.323-.697a.358.358 0 0 0 .148-.479ZM4.248 8.17h-.622L17.553.832l2.221 4.215a.354.354 0 0 0-.302-.078l-.583.121-.626-1.187a.354.354 0 0 0-.478-.149c-.363.192-.779.23-1.17.109a1.525 1.525 0 0 1-.905-.751.358.358 0 0 0-.479-.148s-8.923 4.711-8.95 4.742c0 0-1.99.429-2.033.465ZM18.167 5.24l-9.46 1.963 6.566-3.46c.282.377.674.655 1.132.797.458.142.938.134 1.384-.018l.378.718Zm-3.196 2.931 1.302-.27c.035.093.077.183.124.27h-1.425Zm2.297 0a1.526 1.526 0 0 1-.4-.755.358.358 0 0 0-.42-.275l-4.78.992a.353.353 0 0 0-.102.038H7.53l11.74-2.436.506 2.436h-2.507Zm3.427 0h-.196L19.9 5.286l1.672 3.172a1.48 1.48 0 0 0-.877-.287Zm1.535 6.379v3.071h-3.425a.402.402 0 0 1-.402-.401v-2.268c0-.222.18-.402.402-.402h3.425Zm-.047-3.286V9.66l-.001-.044.68 1.29-.679.358Z" }),
36700
+ React.createElement("path", { d: "M2.52 21.785a.355.355 0 0 0-.702.065v.284c0 .195.159.354.354.354h.284a.354.354 0 0 0 .065-.703ZM2.172 14.578a.354.354 0 0 0-.354.355v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.355-.355ZM2.172 18.037a.354.354 0 0 0-.354.355v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.355-.355ZM2.172 16.308a.354.354 0 0 0-.354.354v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.355-.354ZM2.172 19.766a.354.354 0 0 0-.354.355v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.355-.355ZM2.172 11.12a.354.354 0 0 0-.354.354v.576a.354.354 0 0 0 .709 0v-.576a.354.354 0 0 0-.355-.354ZM2.172 12.849a.354.354 0 0 0-.354.354v.577a.354.354 0 1 0 .709 0v-.577a.354.354 0 0 0-.355-.354ZM2.456 9.683h-.284a.354.354 0 0 0-.354.354v.284a.354.354 0 0 0 .703.065.354.354 0 0 0-.065-.703ZM15.639 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM4.104 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM18.934 9.683h-.549a.354.354 0 0 0 0 .709h.55a.354.354 0 1 0 0-.709ZM17.287 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM9.047 9.683h-.549a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM12.343 9.683h-.55a.354.354 0 0 0 0 .709h.55a.354.354 0 1 0 0-.709ZM13.99 9.683h-.549a.354.354 0 0 0 0 .709h.55a.354.354 0 1 0 0-.709ZM10.695 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM7.4 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM5.752 9.683h-.55a.354.354 0 1 0 0 .709h.55a.354.354 0 0 0 0-.709ZM20.317 9.683h-.284a.354.354 0 0 0-.065.703.355.355 0 0 0 .703-.065v-.284a.354.354 0 0 0-.354-.354ZM20.317 19.43a.354.354 0 0 0-.355.354v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.354-.355ZM20.317 11.12a.354.354 0 0 0-.355.354v.576a.354.354 0 1 0 .709 0v-.576a.354.354 0 0 0-.354-.354ZM20.317 21.496a.354.354 0 0 0-.349.29.354.354 0 0 0 .065.702h.284a.354.354 0 0 0 .354-.354v-.284a.354.354 0 0 0-.354-.354ZM17.287 21.78h-.55a.354.354 0 1 0 0 .708h.55a.354.354 0 1 0 0-.709ZM13.99 21.78h-.549a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM7.4 21.78h-.55a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM12.343 21.78h-.55a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM10.695 21.78h-.55a.354.354 0 1 0 0 .708h.55a.354.354 0 1 0 0-.709ZM15.639 21.78h-.55a.354.354 0 1 0 0 .708h.55a.354.354 0 1 0 0-.709ZM4.104 21.78h-.55a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM5.752 21.78h-.55a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM18.934 21.78h-.549a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM9.047 21.78h-.549a.354.354 0 0 0 0 .708h.55a.354.354 0 1 0 0-.709ZM20.316 14.975a1.112 1.112 0 0 0 0 2.22 1.112 1.112 0 0 0 0-2.22Zm0 1.512a.402.402 0 1 1 .001-.804.402.402 0 0 1 0 .804ZM11.623 15.731h-.473a1.064 1.064 0 0 1 0-2.126h1.89a.354.354 0 1 0 0-.709h-1.063v-.59a.354.354 0 1 0-.709 0v.59h-.118c-.977 0-1.772.795-1.772 1.772s.795 1.772 1.772 1.772h.473a1.064 1.064 0 0 1 0 2.126h-1.89a.354.354 0 1 0 0 .709h1.535v.59a.354.354 0 1 0 .709 0v-.626a1.775 1.775 0 0 0 1.417-1.736c0-.977-.794-1.772-1.771-1.772Z" })),
36701
+ React.createElement("defs", null,
36702
+ React.createElement("clipPath", { id: "becoxy-wallet_svg__a" },
36703
+ React.createElement("path", { fill: "#fff", d: "M0 0h24v24H0z" })))));
36704
+ };
36705
+
36615
36706
  var SvgBecoxyWriting = function (_a) {
36616
36707
  var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36617
36708
  return (React.createElement("svg", __assign$1({ width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
@@ -36634,6 +36725,14 @@ var SvgCopy = function (_a) {
36634
36725
  React.createElement("path", { d: "M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" })));
36635
36726
  };
36636
36727
 
36728
+ var SvgCreditCard = function (_a) {
36729
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36730
+ return (React.createElement("svg", __assign$1({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: props.strokeWidth || 1.5, strokeLinecap: "round", strokeLinejoin: "round", className: "credit-card_svg__feather credit-card_svg__feather-credit-card", "aria-labelledby": titleId }, props),
36731
+ title ? React.createElement("title", { id: titleId }, title) : null,
36732
+ React.createElement("rect", { x: 1, y: 4, width: 22, height: 16, rx: 2, ry: 2 }),
36733
+ React.createElement("path", { d: "M1 10h22" })));
36734
+ };
36735
+
36637
36736
  var SvgEdit3 = function (_a) {
36638
36737
  var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36639
36738
  return (React.createElement("svg", __assign$1({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: props.strokeWidth || 1.5, strokeLinecap: "round", strokeLinejoin: "round", className: "edit-3_svg__feather edit-3_svg__feather-edit-3", "aria-labelledby": titleId }, props),
@@ -36682,6 +36781,13 @@ var SvgLink = function (_a) {
36682
36781
  React.createElement("path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" })));
36683
36782
  };
36684
36783
 
36784
+ var SvgListCheck = function (_a) {
36785
+ var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36786
+ return (React.createElement("svg", __assign$1({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, fill: "currentColor", className: "list-check_svg__bi list-check_svg__bi-list-check", viewBox: "0 0 16 16", strokeWidth: props.strokeWidth || 1.5, "aria-labelledby": titleId }, props),
36787
+ title ? React.createElement("title", { id: titleId }, title) : null,
36788
+ React.createElement("path", { fillRule: "evenodd", d: "M5 11.5a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h9a.5.5 0 0 1 0 1h-9a.5.5 0 0 1-.5-.5zM3.854 2.146a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 3.293l1.146-1.147a.5.5 0 0 1 .708 0zm0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 1 1 .708-.708L2 7.293l1.146-1.147a.5.5 0 0 1 .708 0zm0 4a.5.5 0 0 1 0 .708l-1.5 1.5a.5.5 0 0 1-.708 0l-.5-.5a.5.5 0 0 1 .708-.708l.146.147 1.146-1.147a.5.5 0 0 1 .708 0z" })));
36789
+ };
36790
+
36685
36791
  var SvgLogOut = function (_a) {
36686
36792
  var title = _a.title, titleId = _a.titleId, props = __rest(_a, ["title", "titleId"]);
36687
36793
  return (React.createElement("svg", __assign$1({ xmlns: "http://www.w3.org/2000/svg", width: props.fontSize || 24, height: props.fontSize || 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: props.strokeWidth || 1.5, strokeLinecap: "round", strokeLinejoin: "round", className: "log-out_svg__feather log-out_svg__feather-log-out", "aria-labelledby": titleId }, props),
@@ -69841,7 +69947,7 @@ const ModalGroupInfo = (props) => {
69841
69947
  const [openModalPreview, setOpenModalPreview] = useState(false);
69842
69948
  const [selectedMessage, setSelectedMessage] = useState(null);
69843
69949
  const uploading = (args) => {
69844
- args.currentRequest.setRequestHeader("Authorization", `Bearer ${getToken()}`);
69950
+ args.currentRequest.setRequestHeader("Authorization", `Bearer ${getToken$1()}`);
69845
69951
  };
69846
69952
  const uploadFailure = () => {
69847
69953
  notificationError(t('UploadFail'));
@@ -71794,43 +71900,153 @@ const UserProfileSidebar = (props) => {
71794
71900
  return (jsxs("div", { className: classnames('user-profile-sidebar', { show: userSidebarRight === true }), children: [jsxs("header", { className: 'user-profile-header', children: [jsx("span", { className: 'close-icon', onClick: handleUserSidebarRight, children: jsx(SvgX, { fontSize: 14 }) }), jsxs("div", { className: 'header-profile-sidebar', children: [jsx(AvatarDefault, { className: 'box-shadow-1 avatar-border', size: 'xl', status: user.status === 1 ? 'online' : 'offline', img: userAvatar, imgHeight: '70', imgWidth: '70', color: 'light-secondary' }), jsx("h4", { className: 'chat-user-name', children: user.name }), jsx("span", { className: 'user-post', children: user.code })] })] }), jsx(PerfectScrollbar, { className: 'user-profile-sidebar-area', options: { wheelPropagation: false }, children: jsxs("div", { className: 'personal-info', children: [jsx("h6", { className: 'section-label mb-1 mt-3', children: t('Personal Information') }), jsxs("ul", { className: 'list-unstyled', children: [jsxs("li", { className: 'mb-1', children: [jsx(SvgMail, { className: 'me-75', fontSize: 17 }), jsx("span", { className: 'align-middle', children: user?.email })] }), jsxs("li", { className: 'mb-1', children: [jsx(SvgPhoneCall, { className: 'me-50', fontSize: 17 }), jsx("span", { className: 'align-middle', children: user?.phone })] })] })] }) })] }));
71795
71901
  };
71796
71902
 
71903
+ const initialState = {
71904
+ dataUploadFile: [],
71905
+ status: false
71906
+ };
71907
+ // Helper function to get token
71908
+ const getToken = () => {
71909
+ let accessToken = localStorage.getItem('access_token');
71910
+ if (!accessToken) {
71911
+ const userData = localStorage.getItem('userData');
71912
+ if (userData) {
71913
+ accessToken = JSON.parse(userData).id_token;
71914
+ }
71915
+ }
71916
+ return accessToken;
71917
+ };
71918
+ const baseUrl = process.env.REACT_APP_BASE_URL;
71919
+ const uploadFileApi = createAsyncThunk(UPLOADFILE.ACTION_TYPES.UPLOAD_FILE, async (params, thunkAPI) => {
71920
+ try {
71921
+ const token = getToken();
71922
+ const response = await fetch(`${baseUrl}/api/file/upload`, {
71923
+ method: 'POST',
71924
+ headers: {
71925
+ 'Authorization': `Bearer ${token}`
71926
+ },
71927
+ body: params
71928
+ });
71929
+ if (!response.ok) {
71930
+ const errorData = await response.json().catch(() => ({}));
71931
+ throw new Error(errorData.message || `HTTP error! status: ${response.status}`);
71932
+ }
71933
+ return await response.json();
71934
+ }
71935
+ catch (error) {
71936
+ return thunkAPI.rejectWithValue({ error: error.message || error });
71937
+ }
71938
+ });
71939
+ const uploadImageApi = createAsyncThunk(UPLOADFILE.ACTION_TYPES.UPLOAD_IMAGE, async (params, thunkAPI) => {
71940
+ try {
71941
+ const token = getToken();
71942
+ const response = await fetch(`${baseUrl}/api/image/upload`, {
71943
+ method: 'POST',
71944
+ headers: {
71945
+ 'Authorization': `Bearer ${token}`
71946
+ },
71947
+ body: params
71948
+ });
71949
+ if (!response.ok) {
71950
+ const errorData = await response.json().catch(() => ({}));
71951
+ throw new Error(errorData.message || `HTTP error! status: ${response.status}`);
71952
+ }
71953
+ return await response.json();
71954
+ }
71955
+ catch (error) {
71956
+ return thunkAPI.rejectWithValue({ error: error.message || error });
71957
+ }
71958
+ });
71959
+ const uploadMultiFileApi = createAsyncThunk(UPLOADFILE.ACTION_TYPES.UPLOAD_FILE_MULTI, async (params, thunkAPI) => {
71960
+ try {
71961
+ const token = getToken();
71962
+ const response = await fetch(`${baseUrl}/api/file/upload-mutil`, {
71963
+ method: 'POST',
71964
+ headers: {
71965
+ 'Authorization': `Bearer ${token}`
71966
+ },
71967
+ body: params
71968
+ });
71969
+ if (!response.ok) {
71970
+ const errorData = await response.json().catch(() => ({}));
71971
+ throw new Error(errorData.message || `HTTP error! status: ${response.status}`);
71972
+ }
71973
+ return await response.json();
71974
+ }
71975
+ catch (error) {
71976
+ return thunkAPI.rejectWithValue({ error: error.message || error });
71977
+ }
71978
+ });
71979
+ const uploadFileSlice = createSlice({
71980
+ name: 'uploadFile',
71981
+ initialState,
71982
+ reducers: {
71983
+ handleAddUploadFile: (state, action) => {
71984
+ state.dataUploadFile.push(action.payload);
71985
+ }
71986
+ },
71987
+ extraReducers: builder => {
71988
+ builder.addCase(uploadImageApi.pending, (state) => {
71989
+ console.log(state);
71990
+ });
71991
+ }
71992
+ });
71993
+ const { handleAddUploadFile } = uploadFileSlice.actions;
71994
+
71995
+ const useUploadFile = () => {
71996
+ const dispatch = useAppDispatch$1();
71997
+ const { dataUploadFile, status } = useAppSelector$1((state) => state.uploadFile);
71998
+ const uploadFileApi$1 = (params) => {
71999
+ return dispatch(uploadFileApi(params));
72000
+ };
72001
+ const uploadImageApi$1 = (params) => {
72002
+ return dispatch(uploadImageApi(params));
72003
+ };
72004
+ const uploadMultiFileApi$1 = (params) => {
72005
+ return dispatch(uploadMultiFileApi(params));
72006
+ };
72007
+ const handleAddUploadFile$1 = (arr) => { return dispatch(handleAddUploadFile(arr)); };
72008
+ return {
72009
+ uploadFileApi: uploadFileApi$1,
72010
+ uploadImageApi: uploadImageApi$1,
72011
+ uploadMultiFileApi: uploadMultiFileApi$1,
72012
+ dataUploadFile,
72013
+ status,
72014
+ handleAddUploadFile: handleAddUploadFile$1
72015
+ };
72016
+ };
72017
+
71797
72018
  const DateHeader = memo(({ label }) => (jsx("div", { className: "d-flex justify-content-center", children: jsx("div", { style: {
71798
72019
  backgroundColor: "rgba(0,0,0,0.2)",
71799
72020
  padding: "2px 15px",
71800
72021
  borderRadius: "6px"
71801
72022
  }, children: jsx("p", { className: "m-0", style: { textAlign: "center", color: "#fff" }, children: label }) }) })));
71802
72023
  DateHeader.displayName = 'DateHeader';
72024
+ const ADMINISTRATIVE_ITEMS = [
72025
+ { type: 'administrative', label: 'Đơn xin nghỉ', adminType: 'leaveApplication', Icon: SvgBecoxyApplication },
72026
+ { type: 'administrative', label: 'Đăng ký đi muộn về sớm', adminType: 'lateEarly', Icon: SvgBecoxyLateEarly },
72027
+ { type: 'administrative', label: 'Đăng ký xe', adminType: 'registerCars', Icon: SvgBecoxyCar },
72028
+ { type: 'administrative', label: 'Đăng ký công tác', adminType: 'mission', Icon: SvgBecoxyBusinessMan },
72029
+ { type: 'administrative', label: 'Đăng ký làm thêm', adminType: 'overtime', Icon: SvgBecoxyMoreTime },
72030
+ { type: 'administrative', label: 'Đăng ký tạm ứng', adminType: 'advancePays', Icon: SvgBecoxyWallet },
72031
+ { type: 'administrative', label: 'Đề nghị thanh toán', adminType: 'pay', Icon: SvgCreditCard },
72032
+ { type: 'administrative', label: 'Đề nghị đổi ca', adminType: 'shiftChange', Icon: SvgBecoxySwitchShift },
72033
+ { type: 'administrative', label: 'Giải trình chấm công', adminType: 'attendanceExplanation', Icon: SvgBecoxyTimeExplanation }
72034
+ ];
71803
72035
  const ChatLog = (props) => {
71804
72036
  // ** Props & Store
71805
- // const clipboard = useClipboard()
71806
- // const [editor] = useLexicalComposerContext()
71807
- // const { t } = useTranslation()
71808
- // const { uploadMultiFileApi } = useUploadFile()
71809
- const {
71810
- //typeChat,
71811
- contactId, chatRoomId
71812
- //active,
71813
- //messageByGroup,
71814
- // pinnedMessages,
71815
- // setScroll,
71816
- // checkScroll,
71817
- // pinMessageChatRoom,
71818
- // deleteMessageApi,
71819
- // recallMessageApi,
71820
- // get_message_by_group_cursor_api,
71821
- // getPinMessageChatRoomApi,
71822
- // deletePinMessage,
71823
- // //updateGroupTagApi,
71824
- // createReminderApi,
71825
- // senMessageApi,
71826
- // typingUsers
71827
- } = useChat();
71828
- //const { connection } = useAppSelector((state: any) => state.hubNotification)
71829
- //const [dynamicMenuItems, setDynamicMenuItems] = useState<any[]>([])
72037
+ //const clipboard = useClipboard()
72038
+ useLexicalComposerContext();
72039
+ useTranslation();
72040
+ useUploadFile();
72041
+ const { typeChat, contactId, chatRoomId, active, messageByGroup, pinnedMessages, setScroll, checkScroll, pinMessageChatRoom, deleteMessageApi, recallMessageApi, get_message_by_group_cursor_api, getPinMessageChatRoomApi, deletePinMessage,
72042
+ //updateGroupTagApi,
72043
+ createReminderApi, senMessageApi, typingUsers } = useChat();
72044
+ useAppSelector((state) => state.hubNotification);
72045
+ const [dynamicMenuItems, setDynamicMenuItems] = useState([]);
71830
72046
  useEffect(() => {
71831
72047
  const fetchFormConfig = async () => {
71832
72048
  try {
71833
- const token = getToken();
72049
+ const token = getToken$1();
71834
72050
  const response = await fetch(`${BASE_URL}/api/formconfig`, {
71835
72051
  method: 'GET',
71836
72052
  headers: {
@@ -71858,106 +72074,76 @@ const ChatLog = (props) => {
71858
72074
  };
71859
72075
  fetchFormConfig();
71860
72076
  }, []);
71861
- // const menuItems = useMemo(() => [...ADMINISTRATIVE_ITEMS, ...dynamicMenuItems], [dynamicMenuItems])
72077
+ useMemo(() => [...ADMINISTRATIVE_ITEMS, ...dynamicMenuItems], [dynamicMenuItems]);
71862
72078
  // // Tách menu items cho Công việc (task + dynamic)
71863
- // const taskMenuItems = useMemo(() => [
71864
- // { type: 'task', label: 'Công việc', Icon: ListCheck },
71865
- // ...dynamicMenuItems
71866
- // ], [dynamicMenuItems])
72079
+ useMemo(() => [
72080
+ { type: 'task', label: 'Công việc', Icon: SvgListCheck },
72081
+ ...dynamicMenuItems
72082
+ ], [dynamicMenuItems]);
71867
72083
  // Menu items cho Hành chính (chỉ administrative)
71868
- // const administrativeMenuItems = useMemo(() => ADMINISTRATIVE_ITEMS, [])
71869
- // const isTypingRef = useRef(false)
71870
- // const typingTimeoutRef = useRef<any>(null)
71871
- // const footerRef: any = useRef(null)
71872
- // const toolbarRef: any = useRef(null)
71873
- // const inputContainer: any = useRef(null)
72084
+ useMemo(() => ADMINISTRATIVE_ITEMS, []);
72085
+ useRef(false);
72086
+ useRef(null);
72087
+ useRef(null);
72088
+ useRef(null);
72089
+ useRef(null);
71874
72090
  const containerChatRef = useRef(null);
71875
- // const groupChatUsers: any = dataHistory?.find((dt: any) => dt.id === active)
71876
- // //const dataInfoAvatar = dataInfo && dataInfo.avatar ? dataInfo.avatar : DEFAULT_AVATAR
71877
- // const [imgCopy, setImgCopy] = useState<any>([])
71878
- // const [isOpen, setIsOpen] = useState(false)
71879
- // const [openModalPreview, setOpenModalPreview] = useState(false)
71880
- // const [openModalShare, setOpenModalShare] = useState(false)
71881
- // const [openModalReminder, setOpenModalReminder] = useState(false)
71882
- // const [openModalDynamic, setOpenModalDynamic] = useState(false)
71883
- // const [typeDynamic, setTypeDynamic] = useState<string>('')
71884
- // const [shareItem, setShareItem] = useState<any>(null)
71885
- // const [currentMessage, setCurrentMessage] = useState<any>(null)
71886
- // const [replyMessage, setReplyMessage] = useState<any>(null)
71887
- // const [position, setPosition] = useState({ x: 0, y: 0 })
71888
- // const [listContextShow, setListContextShow] = useState<any>(undefined)
71889
- // const [listContextHide, setListContextHide] = useState<any>(undefined)
71890
- // const [selectedMessage, setSelectedMessage] = useState<any>(null)
71891
- // const [isMultiLine, setIsMultiLine] = useState<boolean>(false)
71892
- // const [isAtBottom, setIsAtBottom] = useState(true)
71893
- // const prevListLength = useRef(0)
71894
- // const [unreadCount, setUnreadCount] = useState(0)
71895
- // const [hasMore, setHasMore] = useState<boolean>(true)
71896
- // const [expandedMessages, setExpandedMessages] = useState<Set<string>>(new Set())
71897
- // const [clickedImageFile, setClickedImageFile] = useState<any>(null)
71898
- // const [isMultiSelectMode, setIsMultiSelectMode] = useState(false)
71899
- // const [selectedMessages, setSelectedMessages] = useState<Set<string>>(new Set())
71900
- // const MAX_IMAGES = 100
71901
- // const BASE_CONTEXT_ITEMS = [
71902
- // "reply", "share", "pin", "bookmark",
71903
- // "selectMultiMessage", "detail", "other", "recall", "delete"
71904
- // ]
71905
- // const CONTEXT_CONFIG: Record<string, { show: string[], hide: string[] }> = {
71906
- // selection: {
71907
- // show: ["copyRangeText", ...BASE_CONTEXT_ITEMS, "save"],
71908
- // hide: ["copyText", "save", "copyImage"]
71909
- // },
71910
- // image: {
71911
- // show: ["copyImage", ...BASE_CONTEXT_ITEMS, "save"],
71912
- // hide: ["copyText", "copyRangeText"]
71913
- // },
71914
- // file: {
71915
- // show: [...BASE_CONTEXT_ITEMS, "save"],
71916
- // hide: ["copyText", "copyRangeText", "copyImage"]
71917
- // },
71918
- // text: {
71919
- // show: ["copyText", ...BASE_CONTEXT_ITEMS],
71920
- // hide: ["copyRangeText", "save", "copyImage"]
71921
- // },
71922
- // voucher: {
71923
- // show: ["copyText", ...BASE_CONTEXT_ITEMS],
71924
- // hide: ["copyRangeText", "save", "copyImage"]
71925
- // },
71926
- // default: {
71927
- // show: ["copyText", ...BASE_CONTEXT_ITEMS],
71928
- // hide: ["copyRangeText", "save", "copyImage"]
71929
- // }
71930
- // }
71931
- // const [isPinnedCollapsed, setIsPinnedCollapsed] = useState(true)
71932
- // const scrollToBottom = () => {
71933
- // const messagesEndEle = document.getElementById('messagesEnd')
71934
- // messagesEndEle?.scrollIntoView({ block: 'end', behavior: "instant" })
71935
- // }
71936
- // // Load initial messages
71937
- // useEffect(() => {
71938
- // if (!checkScroll) {
71939
- // scrollToBottom()
71940
- // }
71941
- // }, [messageByGroup, checkScroll])
71942
- // const mentionItems = useMemo(() => {
71943
- // if (!groupChatUsers) { return [] }
71944
- // const users = Array.isArray(groupChatUsers.users) ? groupChatUsers.users : []
71945
- // const mappedUsers = users.map((user: any) => {
71946
- // const rawAvatar = user.avatar
71947
- // let avatar = DEFAULT_AVATAR
71948
- // if (rawAvatar) {
71949
- // avatar = isValidUrl(rawAvatar) ? rawAvatar : `${CDN_URL_VIEW}/${rawAvatar}`
71950
- // }
71951
- // return {
71952
- // ...user,
71953
- // avatar
71954
- // }
71955
- // })
71956
- // return [{ id: "all", name: "All" }, ...mappedUsers]
71957
- // }, [groupChatUsers])
71958
- // const toggleModalPreview = () => {
71959
- // setOpenModalPreview(!openModalPreview)
71960
- // }
72091
+ const { connectHub, dataInfo, dataProfile, handleUser, handleUserSidebarRight, handleSidebar, handleSidebarRight, userSidebarLeft, dataHistory, chatGetType, approveUpdateStatus, handleModalAdministrative, setDataItem, handleModalAddUserGroup, handleModalGroup, typeOpenModalAdd, setTypeOpenModalAdd, unpinMessage, getPinnedMessages } = props;
72092
+ const groupChatUsers = dataHistory?.find((dt) => dt.id === active);
72093
+ //const dataInfoAvatar = dataInfo && dataInfo.avatar ? dataInfo.avatar : DEFAULT_AVATAR
72094
+ useState([]);
72095
+ useState(false);
72096
+ useState(false);
72097
+ useState(false);
72098
+ useState(false);
72099
+ useState(false);
72100
+ useState('');
72101
+ useState(null);
72102
+ useState(null);
72103
+ useState(null);
72104
+ useState({ x: 0, y: 0 });
72105
+ useState(undefined);
72106
+ useState(undefined);
72107
+ useState(null);
72108
+ useState(false);
72109
+ useState(true);
72110
+ useRef(0);
72111
+ useState(0);
72112
+ useState(true);
72113
+ useState(new Set());
72114
+ useState(null);
72115
+ useState(false);
72116
+ useState(new Set());
72117
+ useState(true);
72118
+ const scrollToBottom = () => {
72119
+ const messagesEndEle = document.getElementById('messagesEnd');
72120
+ messagesEndEle?.scrollIntoView({ block: 'end', behavior: "instant" });
72121
+ };
72122
+ //từ đây
72123
+ // Load initial messages
72124
+ useEffect(() => {
72125
+ if (!checkScroll) {
72126
+ scrollToBottom();
72127
+ }
72128
+ }, [messageByGroup, checkScroll]);
72129
+ useMemo(() => {
72130
+ if (!groupChatUsers) {
72131
+ return [];
72132
+ }
72133
+ const users = Array.isArray(groupChatUsers.users) ? groupChatUsers.users : [];
72134
+ const mappedUsers = users.map((user) => {
72135
+ const rawAvatar = user.avatar;
72136
+ let avatar = DEFAULT_AVATAR;
72137
+ if (rawAvatar) {
72138
+ avatar = isValidUrl(rawAvatar) ? rawAvatar : `${CDN_URL_VIEW}/${rawAvatar}`;
72139
+ }
72140
+ return {
72141
+ ...user,
72142
+ avatar
72143
+ };
72144
+ });
72145
+ return [{ id: "all", name: "All" }, ...mappedUsers];
72146
+ }, [groupChatUsers]);
71961
72147
  // const handlePreview = useCallback((mes: any) => {
71962
72148
  // setSelectedMessage(mes)
71963
72149
  // setOpenModalPreview(true)