akeyless-client-commons 1.0.214 → 1.0.216
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/components/index.js +3 -1
- package/dist/components/index.mjs +3 -1
- package/dist/helpers/index.d.mts +5 -3
- package/dist/helpers/index.d.ts +5 -3
- package/dist/helpers/index.js +22 -12
- package/dist/helpers/index.mjs +8 -6
- package/dist/hooks/index.js +3 -1
- package/dist/hooks/index.mjs +3 -1
- package/package.json +1 -1
package/dist/components/index.js
CHANGED
|
@@ -1152,7 +1152,9 @@ var import_axios2 = __toESM(require("axios"));
|
|
|
1152
1152
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
1153
1153
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
1154
1154
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
1155
|
-
var
|
|
1155
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
1156
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
1157
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
1156
1158
|
// src/components/utils/Checkboxes.tsx
|
|
1157
1159
|
var import_react2 = require("react");
|
|
1158
1160
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -936,7 +936,9 @@ import axios2 from "axios";
|
|
|
936
936
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
937
937
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
938
938
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
939
|
-
var
|
|
939
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
940
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
941
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
940
942
|
// src/components/utils/Checkboxes.tsx
|
|
941
943
|
import { useEffect, useState } from "react";
|
|
942
944
|
import { jsx, jsxs } from "react/jsx-runtime";
|
package/dist/helpers/index.d.mts
CHANGED
|
@@ -168,7 +168,7 @@ declare const getAddressByGeo: ({ lat, lng }: {
|
|
|
168
168
|
lat: any;
|
|
169
169
|
lng: any;
|
|
170
170
|
}, currentLanguage: LanguageOptions) => Promise<any>;
|
|
171
|
-
declare const
|
|
171
|
+
declare const validateAndCast: <T extends unknown>(variable: any, condition: Boolean) => variable is T;
|
|
172
172
|
|
|
173
173
|
declare const textRegex: RegExp;
|
|
174
174
|
declare const numbersRegex: RegExp;
|
|
@@ -228,7 +228,9 @@ declare function sort_by_timestamp(a: Timestamp, b: Timestamp, reverse?: boolean
|
|
|
228
228
|
declare const baseDomain: string;
|
|
229
229
|
declare const devicesDomain: string;
|
|
230
230
|
declare const biDomain: string;
|
|
231
|
-
declare const
|
|
231
|
+
declare const notificationsDomain: string;
|
|
232
|
+
declare const callCenterGeoDomain: string;
|
|
233
|
+
declare const callCenterEventsDomain: string;
|
|
232
234
|
declare const akeylessOnlineDomain: string;
|
|
233
235
|
type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
234
236
|
type ServerName = "devices" | "bi" | "call-center-geo" | "call-center-events" | "notifications";
|
|
@@ -247,4 +249,4 @@ declare const initializeUserPermissions: ({ phoneNumber, email, firstTimeArray,
|
|
|
247
249
|
permissions: TObject<TObject<boolean>>;
|
|
248
250
|
}>;
|
|
249
251
|
|
|
250
|
-
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing,
|
|
252
|
+
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
|
package/dist/helpers/index.d.ts
CHANGED
|
@@ -168,7 +168,7 @@ declare const getAddressByGeo: ({ lat, lng }: {
|
|
|
168
168
|
lat: any;
|
|
169
169
|
lng: any;
|
|
170
170
|
}, currentLanguage: LanguageOptions) => Promise<any>;
|
|
171
|
-
declare const
|
|
171
|
+
declare const validateAndCast: <T extends unknown>(variable: any, condition: Boolean) => variable is T;
|
|
172
172
|
|
|
173
173
|
declare const textRegex: RegExp;
|
|
174
174
|
declare const numbersRegex: RegExp;
|
|
@@ -228,7 +228,9 @@ declare function sort_by_timestamp(a: Timestamp, b: Timestamp, reverse?: boolean
|
|
|
228
228
|
declare const baseDomain: string;
|
|
229
229
|
declare const devicesDomain: string;
|
|
230
230
|
declare const biDomain: string;
|
|
231
|
-
declare const
|
|
231
|
+
declare const notificationsDomain: string;
|
|
232
|
+
declare const callCenterGeoDomain: string;
|
|
233
|
+
declare const callCenterEventsDomain: string;
|
|
232
234
|
declare const akeylessOnlineDomain: string;
|
|
233
235
|
type Method = "GET" | "POST" | "PUT" | "DELETE";
|
|
234
236
|
type ServerName = "devices" | "bi" | "call-center-geo" | "call-center-events" | "notifications";
|
|
@@ -247,4 +249,4 @@ declare const initializeUserPermissions: ({ phoneNumber, email, firstTimeArray,
|
|
|
247
249
|
permissions: TObject<TObject<boolean>>;
|
|
248
250
|
}>;
|
|
249
251
|
|
|
250
|
-
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing,
|
|
252
|
+
export { type ValidationType, addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
|
package/dist/helpers/index.js
CHANGED
|
@@ -338,8 +338,11 @@ __export(index_exports, {
|
|
|
338
338
|
calculateBearing: function() {
|
|
339
339
|
return calculateBearing;
|
|
340
340
|
},
|
|
341
|
-
|
|
342
|
-
return
|
|
341
|
+
callCenterEventsDomain: function() {
|
|
342
|
+
return callCenterEventsDomain;
|
|
343
|
+
},
|
|
344
|
+
callCenterGeoDomain: function() {
|
|
345
|
+
return callCenterGeoDomain;
|
|
343
346
|
},
|
|
344
347
|
carsRegex: function() {
|
|
345
348
|
return carsRegex;
|
|
@@ -473,9 +476,6 @@ __export(index_exports, {
|
|
|
473
476
|
isNodeEnv: function() {
|
|
474
477
|
return isNodeEnv;
|
|
475
478
|
},
|
|
476
|
-
isValid: function() {
|
|
477
|
-
return isValid;
|
|
478
|
-
},
|
|
479
479
|
is_iccid: function() {
|
|
480
480
|
return is_iccid;
|
|
481
481
|
},
|
|
@@ -488,6 +488,9 @@ __export(index_exports, {
|
|
|
488
488
|
multiStringFormat: function() {
|
|
489
489
|
return multiStringFormat;
|
|
490
490
|
},
|
|
491
|
+
notificationsDomain: function() {
|
|
492
|
+
return notificationsDomain;
|
|
493
|
+
},
|
|
491
494
|
numbersOnlyRegex: function() {
|
|
492
495
|
return numbersOnlyRegex;
|
|
493
496
|
},
|
|
@@ -575,6 +578,9 @@ __export(index_exports, {
|
|
|
575
578
|
userNameFormat: function() {
|
|
576
579
|
return userNameFormat;
|
|
577
580
|
},
|
|
581
|
+
validateAndCast: function() {
|
|
582
|
+
return validateAndCast;
|
|
583
|
+
},
|
|
578
584
|
validateUserStatusAndPermissions: function() {
|
|
579
585
|
return validateUserStatusAndPermissions;
|
|
580
586
|
}
|
|
@@ -1943,7 +1949,7 @@ var getAddressByGeo = /*#__PURE__*/ function() {
|
|
|
1943
1949
|
return _ref.apply(this, arguments);
|
|
1944
1950
|
};
|
|
1945
1951
|
}();
|
|
1946
|
-
var
|
|
1952
|
+
var validateAndCast = function(variable, condition) {
|
|
1947
1953
|
return !!condition;
|
|
1948
1954
|
};
|
|
1949
1955
|
// src/helpers/forms.ts
|
|
@@ -2139,7 +2145,9 @@ var import_axios2 = __toESM(require("axios"));
|
|
|
2139
2145
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
2140
2146
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
2141
2147
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
2142
|
-
var
|
|
2148
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
2149
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
2150
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
2143
2151
|
var akeylessOnlineDomain = mode === "qa" ? "https://akeyless-online.xyz" : "https://akeyless-online.info";
|
|
2144
2152
|
var nxApiCall = /*#__PURE__*/ function() {
|
|
2145
2153
|
var _ref = _async_to_generator(function(serverName, method, url, data) {
|
|
@@ -2162,13 +2170,13 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
2162
2170
|
urlResult = "".concat(devicesDomain, "/").concat(url);
|
|
2163
2171
|
break;
|
|
2164
2172
|
case "notifications":
|
|
2165
|
-
urlResult = "".concat(
|
|
2173
|
+
urlResult = "".concat(notificationsDomain, "/").concat(url);
|
|
2166
2174
|
break;
|
|
2167
2175
|
case "call-center-events":
|
|
2168
|
-
urlResult = "".concat(
|
|
2176
|
+
urlResult = "".concat(callCenterEventsDomain, "/").concat(url);
|
|
2169
2177
|
break;
|
|
2170
2178
|
case "call-center-geo":
|
|
2171
|
-
urlResult = "".concat(
|
|
2179
|
+
urlResult = "".concat(callCenterGeoDomain, "/").concat(url);
|
|
2172
2180
|
break;
|
|
2173
2181
|
default:
|
|
2174
2182
|
break;
|
|
@@ -2232,7 +2240,8 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
2232
2240
|
baseDomain: baseDomain,
|
|
2233
2241
|
biDomain: biDomain,
|
|
2234
2242
|
calculateBearing: calculateBearing,
|
|
2235
|
-
|
|
2243
|
+
callCenterEventsDomain: callCenterEventsDomain,
|
|
2244
|
+
callCenterGeoDomain: callCenterGeoDomain,
|
|
2236
2245
|
carsRegex: carsRegex,
|
|
2237
2246
|
chartsRegex: chartsRegex,
|
|
2238
2247
|
checkUserPermissions: checkUserPermissions,
|
|
@@ -2277,11 +2286,11 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
2277
2286
|
isInternationalIsraelPhone: isInternationalIsraelPhone,
|
|
2278
2287
|
isLocal: isLocal,
|
|
2279
2288
|
isNodeEnv: isNodeEnv,
|
|
2280
|
-
isValid: isValid,
|
|
2281
2289
|
is_iccid: is_iccid,
|
|
2282
2290
|
local_israel_phone_format: local_israel_phone_format,
|
|
2283
2291
|
mode: mode,
|
|
2284
2292
|
multiStringFormat: multiStringFormat,
|
|
2293
|
+
notificationsDomain: notificationsDomain,
|
|
2285
2294
|
numbersOnlyRegex: numbersOnlyRegex,
|
|
2286
2295
|
numbersRegex: numbersRegex,
|
|
2287
2296
|
nxApiCall: nxApiCall,
|
|
@@ -2311,6 +2320,7 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
2311
2320
|
useStoreValues: useStoreValues,
|
|
2312
2321
|
useValidation: useValidation,
|
|
2313
2322
|
userNameFormat: userNameFormat,
|
|
2323
|
+
validateAndCast: validateAndCast,
|
|
2314
2324
|
validateUserStatusAndPermissions: validateUserStatusAndPermissions
|
|
2315
2325
|
});
|
|
2316
2326
|
//# sourceMappingURL=index.js.map
|
package/dist/helpers/index.mjs
CHANGED
|
@@ -1600,7 +1600,7 @@ var getAddressByGeo = /*#__PURE__*/ function() {
|
|
|
1600
1600
|
return _ref.apply(this, arguments);
|
|
1601
1601
|
};
|
|
1602
1602
|
}();
|
|
1603
|
-
var
|
|
1603
|
+
var validateAndCast = function(variable, condition) {
|
|
1604
1604
|
return !!condition;
|
|
1605
1605
|
};
|
|
1606
1606
|
// src/helpers/forms.ts
|
|
@@ -1796,7 +1796,9 @@ import axios2 from "axios";
|
|
|
1796
1796
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
1797
1797
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
1798
1798
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
1799
|
-
var
|
|
1799
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
1800
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
1801
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
1800
1802
|
var akeylessOnlineDomain = mode === "qa" ? "https://akeyless-online.xyz" : "https://akeyless-online.info";
|
|
1801
1803
|
var nxApiCall = /*#__PURE__*/ function() {
|
|
1802
1804
|
var _ref = _async_to_generator(function(serverName, method, url, data) {
|
|
@@ -1819,13 +1821,13 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
1819
1821
|
urlResult = "".concat(devicesDomain, "/").concat(url);
|
|
1820
1822
|
break;
|
|
1821
1823
|
case "notifications":
|
|
1822
|
-
urlResult = "".concat(
|
|
1824
|
+
urlResult = "".concat(notificationsDomain, "/").concat(url);
|
|
1823
1825
|
break;
|
|
1824
1826
|
case "call-center-events":
|
|
1825
|
-
urlResult = "".concat(
|
|
1827
|
+
urlResult = "".concat(callCenterEventsDomain, "/").concat(url);
|
|
1826
1828
|
break;
|
|
1827
1829
|
case "call-center-geo":
|
|
1828
|
-
urlResult = "".concat(
|
|
1830
|
+
urlResult = "".concat(callCenterGeoDomain, "/").concat(url);
|
|
1829
1831
|
break;
|
|
1830
1832
|
default:
|
|
1831
1833
|
break;
|
|
@@ -1876,5 +1878,5 @@ var nxApiCall = /*#__PURE__*/ function() {
|
|
|
1876
1878
|
return _ref.apply(this, arguments);
|
|
1877
1879
|
};
|
|
1878
1880
|
}();
|
|
1879
|
-
export { addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing,
|
|
1881
|
+
export { addAuditRecord, addLoginAudit, add_document, addressRegex, akeylessOnlineDomain, app, appCheck, auth, baseDomain, biDomain, calculateBearing, callCenterEventsDomain, callCenterGeoDomain, carsRegex, chartsRegex, checkUserPermissions, cleanNxSites, cn, collections, colorRegex, createSelectors, db, delete_document, devicesDomain, displayFormatPhoneNumber, emailRegex, extractAlertsData, extractBoardsData, extractCanbusData, extractCarsData, extractClientData, extractLocationData, extractSiteData, fire_base_TIME_TEMP, formatCarNumber, getAddressByGeo, getFixedNumber, getFormCheckboxValue, getFormElementValue, getLocationUrl, getUserByEmail, getUserByIdentifier, getUserByPhone, getUserCountryByIp, get_all_documents, get_document_by_id, get_international_phone_number, googleLoginProvider, handleChange, handleInvalid, handlePaste, initializeUserPermissions, international_israel_phone_format, isInternational, isInternationalIsraelPhone, isLocal, isNodeEnv, is_iccid, local_israel_phone_format, mode, multiStringFormat, notificationsDomain, numbersOnlyRegex, numbersRegex, nxApiCall, parseMultiSelectInput, parsePermissions, parseSnapshotAsArray, priceRegex, propsAreEqual, query_document, query_document_by_conditions, query_documents, query_documents_by_conditions, renderOnce, setFormElementValue, setState, set_document, simpleExtractData, snapshot, snapshotDocument, sort_by_timestamp, storage, textNumbersRegex, textRegex, timestamp_to_millis, timestamp_to_string, useLoginWithGoogle, useStoreValues, useValidation, userNameFormat, validateAndCast, validateUserStatusAndPermissions };
|
|
1880
1882
|
//# sourceMappingURL=index.mjs.map
|
package/dist/hooks/index.js
CHANGED
|
@@ -510,7 +510,9 @@ var import_axios2 = __toESM(require("axios"));
|
|
|
510
510
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
511
511
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
512
512
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
513
|
-
var
|
|
513
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
514
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
515
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
514
516
|
// src/hooks/react.ts
|
|
515
517
|
var import_lodash2 = require("lodash");
|
|
516
518
|
var import_react2 = require("react");
|
package/dist/hooks/index.mjs
CHANGED
|
@@ -422,7 +422,9 @@ import axios2 from "axios";
|
|
|
422
422
|
var baseDomain = mode === "qa" ? "https://nx-api.xyz/api" : "https://nx-api.info/api";
|
|
423
423
|
var devicesDomain = isLocal ? "http://localhost:9001/api/devices" : baseDomain + "/devices";
|
|
424
424
|
var biDomain = isLocal ? "http://localhost:9002/api/bi" : baseDomain + "/bi";
|
|
425
|
-
var
|
|
425
|
+
var notificationsDomain = isLocal ? "http://localhost:9006/api/notifications" : baseDomain + "/notifications";
|
|
426
|
+
var callCenterGeoDomain = isLocal ? "http://localhost:9007/api/call-center/geo" : baseDomain + "/call-center/geo";
|
|
427
|
+
var callCenterEventsDomain = isLocal ? "http://localhost:9008/api/call-center/events" : baseDomain + "/call-center/events";
|
|
426
428
|
// src/hooks/react.ts
|
|
427
429
|
import { isEqual as isEqual2 } from "lodash";
|
|
428
430
|
import { useEffect, useMemo, useRef } from "react";
|