@bigbinary/neeto-commons-frontend 4.13.47 → 4.13.49
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/cjs/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.js +8 -5
- package/dist/cjs/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.js.map +1 -1
- package/dist/cjs/react-utils/HoneybadgerErrorBoundary/index.js +2 -2
- package/dist/cjs/react-utils/HoneybadgerErrorBoundary/utils.js +5 -0
- package/dist/cjs/react-utils/HoneybadgerErrorBoundary/utils.js.map +1 -1
- package/dist/cjs/react-utils/index.js +2 -2
- package/dist/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.js +9 -6
- package/dist/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.js.map +1 -1
- package/dist/react-utils/HoneybadgerErrorBoundary/index.js +2 -2
- package/dist/react-utils/HoneybadgerErrorBoundary/utils.js +5 -1
- package/dist/react-utils/HoneybadgerErrorBoundary/utils.js.map +1 -1
- package/dist/react-utils/index.js +2 -2
- package/package.json +1 -1
- package/react-utils.d.ts +19 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var defineProperty = require('../../defineProperty-lChFfVqi.js');
|
|
3
4
|
var react = require('@honeybadger-io/react');
|
|
4
5
|
var reactUtils_HoneybadgerErrorBoundary_constants = require('./constants.js');
|
|
5
6
|
var reactUtils_HoneybadgerErrorBoundary_FallbackComponent = require('./FallbackComponent.js');
|
|
6
7
|
var reactUtils_HoneybadgerErrorBoundary_utils = require('./utils.js');
|
|
7
8
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
require('../../defineProperty-lChFfVqi.js');
|
|
9
9
|
require('../../typeof-D4ZZ_FlZ.js');
|
|
10
10
|
require('react');
|
|
11
11
|
require('dompurify');
|
|
@@ -14,16 +14,19 @@ require('@bigbinary/neetoui/Typography');
|
|
|
14
14
|
require('ramda');
|
|
15
15
|
require('react-i18next');
|
|
16
16
|
|
|
17
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
18
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { defineProperty._defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
19
|
var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
18
20
|
var children = _ref.children,
|
|
19
21
|
_ref$ErrorComponent = _ref.ErrorComponent,
|
|
20
22
|
ErrorComponent = _ref$ErrorComponent === void 0 ? reactUtils_HoneybadgerErrorBoundary_FallbackComponent : _ref$ErrorComponent,
|
|
21
23
|
_ref$filterErrors = _ref.filterErrors,
|
|
22
|
-
filterErrors = _ref$filterErrors === void 0 ? undefined : _ref$filterErrors
|
|
24
|
+
filterErrors = _ref$filterErrors === void 0 ? undefined : _ref$filterErrors,
|
|
25
|
+
config = _ref.config;
|
|
23
26
|
react.Honeybadger.beforeNotify(function (notice) {
|
|
24
27
|
var _globalProps$user;
|
|
25
28
|
if (!notice) return false;
|
|
26
|
-
var isIgnorable = reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_ERRORS_REGEX.test(notice.message) || reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) || reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_STACKS_REGEX.test(notice.stack) || (filterErrors === null || filterErrors === void 0 ? void 0 : filterErrors(notice)) === false;
|
|
29
|
+
var isIgnorable = reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_ERRORS_REGEX.test(notice.message) || reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) || reactUtils_HoneybadgerErrorBoundary_constants.IGNORABLE_STACKS_REGEX.test(notice.stack) || reactUtils_HoneybadgerErrorBoundary_utils.isNeetoReplaySecurityError(notice) || (filterErrors === null || filterErrors === void 0 ? void 0 : filterErrors(notice)) === false;
|
|
27
30
|
if (isIgnorable) return false;
|
|
28
31
|
var context = {
|
|
29
32
|
errorClass: notice.name
|
|
@@ -39,7 +42,7 @@ var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
|
39
42
|
reactUtils_HoneybadgerErrorBoundary_utils.attachContext(notice, context);
|
|
40
43
|
return true;
|
|
41
44
|
});
|
|
42
|
-
var honeybadger = react.Honeybadger.configure({
|
|
45
|
+
var honeybadger = react.Honeybadger.configure(_objectSpread({
|
|
43
46
|
apiKey: globalProps.honeybadgerApiKey,
|
|
44
47
|
environment: globalProps.railsEnv,
|
|
45
48
|
revision: globalProps.honeybadgerRevision,
|
|
@@ -49,7 +52,7 @@ var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
|
49
52
|
breadcrumbsEnabled: true,
|
|
50
53
|
projectRoot: "webpack:///./",
|
|
51
54
|
enableUnhandledRejection: false
|
|
52
|
-
});
|
|
55
|
+
}, config));
|
|
53
56
|
return /*#__PURE__*/jsxRuntime.jsx(react.HoneybadgerErrorBoundary, {
|
|
54
57
|
ErrorComponent: ErrorComponent,
|
|
55
58
|
honeybadger: honeybadger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoneybadgerErrorBoundary.js","sources":["../../../../src/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.jsx"],"sourcesContent":["import {\n Honeybadger,\n HoneybadgerErrorBoundary as ErrorBoundary,\n} from \"@honeybadger-io/react\";\n\nimport {\n IGNORABLE_ERROR_NAMES_REGEX,\n IGNORABLE_ERRORS_REGEX,\n IGNORABLE_STACKS_REGEX,\n} from \"./constants\";\nimport FallbackComponent from \"./FallbackComponent\";\nimport {
|
|
1
|
+
{"version":3,"file":"HoneybadgerErrorBoundary.js","sources":["../../../../src/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.jsx"],"sourcesContent":["import {\n Honeybadger,\n HoneybadgerErrorBoundary as ErrorBoundary,\n} from \"@honeybadger-io/react\";\n\nimport {\n IGNORABLE_ERROR_NAMES_REGEX,\n IGNORABLE_ERRORS_REGEX,\n IGNORABLE_STACKS_REGEX,\n} from \"./constants\";\nimport FallbackComponent from \"./FallbackComponent\";\nimport {\n attachContext,\n getSessionReplayUrl,\n isNeetoReplaySecurityError,\n} from \"./utils\";\n\n/** @type {import(\"neetocommons/react-utils\").HoneybadgerErrorBoundary} */\nconst HoneybadgerErrorBoundary = ({\n children,\n ErrorComponent = FallbackComponent,\n filterErrors = undefined,\n config,\n}) => {\n Honeybadger.beforeNotify(notice => {\n if (!notice) return false;\n\n const isIgnorable =\n IGNORABLE_ERRORS_REGEX.test(notice.message) ||\n IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) ||\n IGNORABLE_STACKS_REGEX.test(notice.stack) ||\n isNeetoReplaySecurityError(notice) ||\n filterErrors?.(notice) === false;\n\n if (isIgnorable) return false;\n\n const context = { errorClass: notice.name };\n\n if (notice.name === \"ChunkLoadError\") {\n context.IGNORABLE_ERROR_NAMES_REGEX = IGNORABLE_ERROR_NAMES_REGEX;\n context.isChunkLoadError = IGNORABLE_ERROR_NAMES_REGEX.test(notice.name);\n }\n\n const user = globalProps.user?.email;\n if (user) context.user = user;\n\n const sessionReplay = getSessionReplayUrl();\n if (sessionReplay) context.sessionReplay = sessionReplay;\n\n attachContext(notice, context);\n\n return true;\n });\n\n const honeybadger = Honeybadger.configure({\n apiKey: globalProps.honeybadgerApiKey,\n environment: globalProps.railsEnv,\n revision: globalProps.honeybadgerRevision,\n developmentEnvironments: [\"development\", \"test\"],\n enableUncaught: true,\n async: true,\n breadcrumbsEnabled: true,\n projectRoot: \"webpack:///./\",\n enableUnhandledRejection: false,\n ...config,\n });\n\n return (\n <ErrorBoundary {...{ ErrorComponent, honeybadger }}>\n {children}\n </ErrorBoundary>\n );\n};\n\nexport default HoneybadgerErrorBoundary;\n"],"names":["HoneybadgerErrorBoundary","_ref","children","_ref$ErrorComponent","ErrorComponent","FallbackComponent","_ref$filterErrors","filterErrors","undefined","config","Honeybadger","beforeNotify","notice","_globalProps$user","isIgnorable","IGNORABLE_ERRORS_REGEX","test","message","IGNORABLE_ERROR_NAMES_REGEX","name","IGNORABLE_STACKS_REGEX","stack","isNeetoReplaySecurityError","context","errorClass","isChunkLoadError","user","globalProps","email","sessionReplay","getSessionReplayUrl","attachContext","honeybadger","configure","_objectSpread","apiKey","honeybadgerApiKey","environment","railsEnv","revision","honeybadgerRevision","developmentEnvironments","enableUncaught","async","breadcrumbsEnabled","projectRoot","enableUnhandledRejection","_jsx","ErrorBoundary"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,IAAMA,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAAC,IAAA,EAKxB;AAAA,EAAA,IAJJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAAC,mBAAA,GAAAF,IAAA,CACRG,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAGE,MAAAA,GAAAA,qDAAiB,GAAAF,mBAAA;IAAAG,iBAAA,GAAAL,IAAA,CAClCM,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAGE,MAAAA,GAAAA,SAAS,GAAAF,iBAAA;IACxBG,MAAM,GAAAR,IAAA,CAANQ,MAAM;AAENC,EAAAA,iBAAW,CAACC,YAAY,CAAC,UAAAC,MAAM,EAAI;AAAA,IAAA,IAAAC,iBAAA;AACjC,IAAA,IAAI,CAACD,MAAM,EAAE,OAAO,KAAK;IAEzB,IAAME,WAAW,GACfC,oEAAsB,CAACC,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,IAC3CC,yEAA2B,CAACF,IAAI,CAACJ,MAAM,CAACO,IAAI,CAAC,IAC7CC,oEAAsB,CAACJ,IAAI,CAACJ,MAAM,CAACS,KAAK,CAAC,IACzCC,oEAA0B,CAACV,MAAM,CAAC,IAClC,CAAAL,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAZA,MAAAA,GAAAA,MAAAA,GAAAA,YAAY,CAAGK,MAAM,CAAC,MAAK,KAAK;IAElC,IAAIE,WAAW,EAAE,OAAO,KAAK;AAE7B,IAAA,IAAMS,OAAO,GAAG;MAAEC,UAAU,EAAEZ,MAAM,CAACO;KAAM;AAE3C,IAAA,IAAIP,MAAM,CAACO,IAAI,KAAK,gBAAgB,EAAE;MACpCI,OAAO,CAACL,2BAA2B,GAAGA,yEAA2B;MACjEK,OAAO,CAACE,gBAAgB,GAAGP,yEAA2B,CAACF,IAAI,CAACJ,MAAM,CAACO,IAAI,CAAC;AAC1E;AAEA,IAAA,IAAMO,IAAI,GAAA,CAAAb,iBAAA,GAAGc,WAAW,CAACD,IAAI,MAAA,IAAA,IAAAb,iBAAA,KAAA,MAAA,GAAA,MAAA,GAAhBA,iBAAA,CAAkBe,KAAK;AACpC,IAAA,IAAIF,IAAI,EAAEH,OAAO,CAACG,IAAI,GAAGA,IAAI;AAE7B,IAAA,IAAMG,aAAa,GAAGC,6DAAmB,EAAE;AAC3C,IAAA,IAAID,aAAa,EAAEN,OAAO,CAACM,aAAa,GAAGA,aAAa;AAExDE,IAAAA,uDAAa,CAACnB,MAAM,EAAEW,OAAO,CAAC;AAE9B,IAAA,OAAO,IAAI;AACb,GAAC,CAAC;AAEF,EAAA,IAAMS,WAAW,GAAGtB,iBAAW,CAACuB,SAAS,CAAAC,aAAA,CAAA;IACvCC,MAAM,EAAER,WAAW,CAACS,iBAAiB;IACrCC,WAAW,EAAEV,WAAW,CAACW,QAAQ;IACjCC,QAAQ,EAAEZ,WAAW,CAACa,mBAAmB;AACzCC,IAAAA,uBAAuB,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;AAChDC,IAAAA,cAAc,EAAE,IAAI;AACpBC,IAAAA,KAAK,EAAE,IAAI;AACXC,IAAAA,kBAAkB,EAAE,IAAI;AACxBC,IAAAA,WAAW,EAAE,eAAe;AAC5BC,IAAAA,wBAAwB,EAAE;GACvBrC,EAAAA,MAAM,CACV,CAAC;EAEF,oBACEsC,cAAA,CAACC,8BAAa,EAAA;AAAO5C,IAAAA,cAAc,EAAdA,cAAc;AAAE4B,IAAAA,WAAW,EAAXA,WAAW;AAAA9B,IAAAA,QAAA,EAC7CA;AAAQ,GACI,CAAC;AAEpB;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var reactUtils_HoneybadgerErrorBoundary_HoneybadgerErrorBoundary = require('./HoneybadgerErrorBoundary.js');
|
|
4
|
+
require('../../defineProperty-lChFfVqi.js');
|
|
5
|
+
require('../../typeof-D4ZZ_FlZ.js');
|
|
4
6
|
require('@honeybadger-io/react');
|
|
5
7
|
require('./constants.js');
|
|
6
8
|
require('./FallbackComponent.js');
|
|
7
|
-
require('../../defineProperty-lChFfVqi.js');
|
|
8
|
-
require('../../typeof-D4ZZ_FlZ.js');
|
|
9
9
|
require('react');
|
|
10
10
|
require('dompurify');
|
|
11
11
|
require('@bigbinary/neetoui/Button');
|
|
@@ -8,7 +8,12 @@ var getSessionReplayUrl = function getSessionReplayUrl() {
|
|
|
8
8
|
var currentTimestamp = new Date().getTime();
|
|
9
9
|
return storage ? "".concat(JSON.parse(storage).url, "?goto=").concat(currentTimestamp) : "";
|
|
10
10
|
};
|
|
11
|
+
var isNeetoReplaySecurityError = function isNeetoReplaySecurityError(notice) {
|
|
12
|
+
var _notice$stack;
|
|
13
|
+
return notice.name === "SecurityError" && ((_notice$stack = notice.stack) === null || _notice$stack === void 0 ? void 0 : _notice$stack.includes("neeto-replay-widget"));
|
|
14
|
+
};
|
|
11
15
|
|
|
12
16
|
exports.attachContext = attachContext;
|
|
13
17
|
exports.getSessionReplayUrl = getSessionReplayUrl;
|
|
18
|
+
exports.isNeetoReplaySecurityError = isNeetoReplaySecurityError;
|
|
14
19
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/react-utils/HoneybadgerErrorBoundary/utils.js"],"sourcesContent":["export const attachContext = (notice, context) => {\n if (notice.context) Object.assign(notice.context, context);\n else notice.context = context;\n};\n\nexport const getSessionReplayUrl = () => {\n const storage = sessionStorage.getItem(\"neeto-replay-widget--session\");\n const currentTimestamp = new Date().getTime();\n\n return storage ? `${JSON.parse(storage).url}?goto=${currentTimestamp}` : \"\";\n};\n"],"names":["attachContext","notice","context","Object","assign","getSessionReplayUrl","storage","sessionStorage","getItem","currentTimestamp","Date","getTime","concat","JSON","parse","url"],"mappings":";;AAAO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,MAAM,EAAEC,OAAO,EAAK;EAChD,IAAID,MAAM,CAACC,OAAO,EAAEC,MAAM,CAACC,MAAM,CAACH,MAAM,CAACC,OAAO,EAAEA,OAAO,CAAC,CAAC,KACtDD,MAAM,CAACC,OAAO,GAAGA,OAAO;AAC/B;IAEaG,mBAAmB,GAAG,SAAtBA,mBAAmBA,GAAS;AACvC,EAAA,IAAMC,OAAO,GAAGC,cAAc,CAACC,OAAO,CAAC,8BAA8B,CAAC;EACtE,IAAMC,gBAAgB,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;AAE7C,EAAA,OAAOL,OAAO,GAAAM,EAAAA,CAAAA,MAAA,CAAMC,IAAI,CAACC,KAAK,CAACR,OAAO,CAAC,CAACS,GAAG,EAAA,QAAA,CAAA,CAAAH,MAAA,CAASH,gBAAgB,IAAK,EAAE;AAC7E
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/react-utils/HoneybadgerErrorBoundary/utils.js"],"sourcesContent":["export const attachContext = (notice, context) => {\n if (notice.context) Object.assign(notice.context, context);\n else notice.context = context;\n};\n\nexport const getSessionReplayUrl = () => {\n const storage = sessionStorage.getItem(\"neeto-replay-widget--session\");\n const currentTimestamp = new Date().getTime();\n\n return storage ? `${JSON.parse(storage).url}?goto=${currentTimestamp}` : \"\";\n};\n\nexport const isNeetoReplaySecurityError = notice =>\n notice.name === \"SecurityError\" &&\n notice.stack?.includes(\"neeto-replay-widget\");\n"],"names":["attachContext","notice","context","Object","assign","getSessionReplayUrl","storage","sessionStorage","getItem","currentTimestamp","Date","getTime","concat","JSON","parse","url","isNeetoReplaySecurityError","_notice$stack","name","stack","includes"],"mappings":";;AAAO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,MAAM,EAAEC,OAAO,EAAK;EAChD,IAAID,MAAM,CAACC,OAAO,EAAEC,MAAM,CAACC,MAAM,CAACH,MAAM,CAACC,OAAO,EAAEA,OAAO,CAAC,CAAC,KACtDD,MAAM,CAACC,OAAO,GAAGA,OAAO;AAC/B;IAEaG,mBAAmB,GAAG,SAAtBA,mBAAmBA,GAAS;AACvC,EAAA,IAAMC,OAAO,GAAGC,cAAc,CAACC,OAAO,CAAC,8BAA8B,CAAC;EACtE,IAAMC,gBAAgB,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;AAE7C,EAAA,OAAOL,OAAO,GAAAM,EAAAA,CAAAA,MAAA,CAAMC,IAAI,CAACC,KAAK,CAACR,OAAO,CAAC,CAACS,GAAG,EAAA,QAAA,CAAA,CAAAH,MAAA,CAASH,gBAAgB,IAAK,EAAE;AAC7E;IAEaO,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAGf,MAAM,EAAA;AAAA,EAAA,IAAAgB,aAAA;AAAA,EAAA,OAC9ChB,MAAM,CAACiB,IAAI,KAAK,eAAe,KAAA,CAAAD,aAAA,GAC/BhB,MAAM,CAACkB,KAAK,MAAA,IAAA,IAAAF,aAAA,KAAZA,MAAAA,GAAAA,MAAAA,GAAAA,aAAA,CAAcG,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AAAA;;;;;;"}
|
|
@@ -30,11 +30,11 @@ var reactUtils_withTitle_withTitle = require('./withTitle/withTitle.js');
|
|
|
30
30
|
var reactUtils_QueryClientProvider_QueryClientProvider = require('./QueryClientProvider/QueryClientProvider.js');
|
|
31
31
|
var reactUtils_QueryClientProvider_queryClient = require('./QueryClientProvider/queryClient.js');
|
|
32
32
|
var reactUtils_AppContainer_AppContainer = require('./AppContainer/AppContainer.js');
|
|
33
|
+
require('../defineProperty-lChFfVqi.js');
|
|
34
|
+
require('../typeof-D4ZZ_FlZ.js');
|
|
33
35
|
require('@honeybadger-io/react');
|
|
34
36
|
require('./HoneybadgerErrorBoundary/constants.js');
|
|
35
37
|
require('./HoneybadgerErrorBoundary/FallbackComponent.js');
|
|
36
|
-
require('../defineProperty-lChFfVqi.js');
|
|
37
|
-
require('../typeof-D4ZZ_FlZ.js');
|
|
38
38
|
require('react');
|
|
39
39
|
require('dompurify');
|
|
40
40
|
require('@bigbinary/neetoui/Button');
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { _ as _defineProperty } from '../../defineProperty-CrCYjjU3.js';
|
|
1
2
|
import { Honeybadger, HoneybadgerErrorBoundary as HoneybadgerErrorBoundary$1 } from '@honeybadger-io/react';
|
|
2
3
|
import { IGNORABLE_ERRORS_REGEX, IGNORABLE_ERROR_NAMES_REGEX, IGNORABLE_STACKS_REGEX } from './constants.js';
|
|
3
4
|
import FallbackComponent from './FallbackComponent.js';
|
|
4
|
-
import { getSessionReplayUrl, attachContext } from './utils.js';
|
|
5
|
+
import { isNeetoReplaySecurityError, getSessionReplayUrl, attachContext } from './utils.js';
|
|
5
6
|
import { jsx } from 'react/jsx-runtime';
|
|
6
|
-
import '../../defineProperty-CrCYjjU3.js';
|
|
7
7
|
import '../../typeof-D-UKOauR.js';
|
|
8
8
|
import 'react';
|
|
9
9
|
import 'dompurify';
|
|
@@ -12,16 +12,19 @@ import '@bigbinary/neetoui/Typography';
|
|
|
12
12
|
import 'ramda';
|
|
13
13
|
import 'react-i18next';
|
|
14
14
|
|
|
15
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
15
17
|
var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
16
18
|
var children = _ref.children,
|
|
17
19
|
_ref$ErrorComponent = _ref.ErrorComponent,
|
|
18
20
|
ErrorComponent = _ref$ErrorComponent === void 0 ? FallbackComponent : _ref$ErrorComponent,
|
|
19
21
|
_ref$filterErrors = _ref.filterErrors,
|
|
20
|
-
filterErrors = _ref$filterErrors === void 0 ? undefined : _ref$filterErrors
|
|
22
|
+
filterErrors = _ref$filterErrors === void 0 ? undefined : _ref$filterErrors,
|
|
23
|
+
config = _ref.config;
|
|
21
24
|
Honeybadger.beforeNotify(function (notice) {
|
|
22
25
|
var _globalProps$user;
|
|
23
26
|
if (!notice) return false;
|
|
24
|
-
var isIgnorable = IGNORABLE_ERRORS_REGEX.test(notice.message) || IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) || IGNORABLE_STACKS_REGEX.test(notice.stack) || (filterErrors === null || filterErrors === void 0 ? void 0 : filterErrors(notice)) === false;
|
|
27
|
+
var isIgnorable = IGNORABLE_ERRORS_REGEX.test(notice.message) || IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) || IGNORABLE_STACKS_REGEX.test(notice.stack) || isNeetoReplaySecurityError(notice) || (filterErrors === null || filterErrors === void 0 ? void 0 : filterErrors(notice)) === false;
|
|
25
28
|
if (isIgnorable) return false;
|
|
26
29
|
var context = {
|
|
27
30
|
errorClass: notice.name
|
|
@@ -37,7 +40,7 @@ var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
|
37
40
|
attachContext(notice, context);
|
|
38
41
|
return true;
|
|
39
42
|
});
|
|
40
|
-
var honeybadger = Honeybadger.configure({
|
|
43
|
+
var honeybadger = Honeybadger.configure(_objectSpread({
|
|
41
44
|
apiKey: globalProps.honeybadgerApiKey,
|
|
42
45
|
environment: globalProps.railsEnv,
|
|
43
46
|
revision: globalProps.honeybadgerRevision,
|
|
@@ -47,7 +50,7 @@ var HoneybadgerErrorBoundary = function HoneybadgerErrorBoundary(_ref) {
|
|
|
47
50
|
breadcrumbsEnabled: true,
|
|
48
51
|
projectRoot: "webpack:///./",
|
|
49
52
|
enableUnhandledRejection: false
|
|
50
|
-
});
|
|
53
|
+
}, config));
|
|
51
54
|
return /*#__PURE__*/jsx(HoneybadgerErrorBoundary$1, {
|
|
52
55
|
ErrorComponent: ErrorComponent,
|
|
53
56
|
honeybadger: honeybadger,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HoneybadgerErrorBoundary.js","sources":["../../../src/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.jsx"],"sourcesContent":["import {\n Honeybadger,\n HoneybadgerErrorBoundary as ErrorBoundary,\n} from \"@honeybadger-io/react\";\n\nimport {\n IGNORABLE_ERROR_NAMES_REGEX,\n IGNORABLE_ERRORS_REGEX,\n IGNORABLE_STACKS_REGEX,\n} from \"./constants\";\nimport FallbackComponent from \"./FallbackComponent\";\nimport {
|
|
1
|
+
{"version":3,"file":"HoneybadgerErrorBoundary.js","sources":["../../../src/react-utils/HoneybadgerErrorBoundary/HoneybadgerErrorBoundary.jsx"],"sourcesContent":["import {\n Honeybadger,\n HoneybadgerErrorBoundary as ErrorBoundary,\n} from \"@honeybadger-io/react\";\n\nimport {\n IGNORABLE_ERROR_NAMES_REGEX,\n IGNORABLE_ERRORS_REGEX,\n IGNORABLE_STACKS_REGEX,\n} from \"./constants\";\nimport FallbackComponent from \"./FallbackComponent\";\nimport {\n attachContext,\n getSessionReplayUrl,\n isNeetoReplaySecurityError,\n} from \"./utils\";\n\n/** @type {import(\"neetocommons/react-utils\").HoneybadgerErrorBoundary} */\nconst HoneybadgerErrorBoundary = ({\n children,\n ErrorComponent = FallbackComponent,\n filterErrors = undefined,\n config,\n}) => {\n Honeybadger.beforeNotify(notice => {\n if (!notice) return false;\n\n const isIgnorable =\n IGNORABLE_ERRORS_REGEX.test(notice.message) ||\n IGNORABLE_ERROR_NAMES_REGEX.test(notice.name) ||\n IGNORABLE_STACKS_REGEX.test(notice.stack) ||\n isNeetoReplaySecurityError(notice) ||\n filterErrors?.(notice) === false;\n\n if (isIgnorable) return false;\n\n const context = { errorClass: notice.name };\n\n if (notice.name === \"ChunkLoadError\") {\n context.IGNORABLE_ERROR_NAMES_REGEX = IGNORABLE_ERROR_NAMES_REGEX;\n context.isChunkLoadError = IGNORABLE_ERROR_NAMES_REGEX.test(notice.name);\n }\n\n const user = globalProps.user?.email;\n if (user) context.user = user;\n\n const sessionReplay = getSessionReplayUrl();\n if (sessionReplay) context.sessionReplay = sessionReplay;\n\n attachContext(notice, context);\n\n return true;\n });\n\n const honeybadger = Honeybadger.configure({\n apiKey: globalProps.honeybadgerApiKey,\n environment: globalProps.railsEnv,\n revision: globalProps.honeybadgerRevision,\n developmentEnvironments: [\"development\", \"test\"],\n enableUncaught: true,\n async: true,\n breadcrumbsEnabled: true,\n projectRoot: \"webpack:///./\",\n enableUnhandledRejection: false,\n ...config,\n });\n\n return (\n <ErrorBoundary {...{ ErrorComponent, honeybadger }}>\n {children}\n </ErrorBoundary>\n );\n};\n\nexport default HoneybadgerErrorBoundary;\n"],"names":["HoneybadgerErrorBoundary","_ref","children","_ref$ErrorComponent","ErrorComponent","FallbackComponent","_ref$filterErrors","filterErrors","undefined","config","Honeybadger","beforeNotify","notice","_globalProps$user","isIgnorable","IGNORABLE_ERRORS_REGEX","test","message","IGNORABLE_ERROR_NAMES_REGEX","name","IGNORABLE_STACKS_REGEX","stack","isNeetoReplaySecurityError","context","errorClass","isChunkLoadError","user","globalProps","email","sessionReplay","getSessionReplayUrl","attachContext","honeybadger","configure","_objectSpread","apiKey","honeybadgerApiKey","environment","railsEnv","revision","honeybadgerRevision","developmentEnvironments","enableUncaught","async","breadcrumbsEnabled","projectRoot","enableUnhandledRejection","_jsx","ErrorBoundary"],"mappings":";;;;;;;;;;;;;;;;AAkBA,IAAMA,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAAC,IAAA,EAKxB;AAAA,EAAA,IAJJC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IAAAC,mBAAA,GAAAF,IAAA,CACRG,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAGE,MAAAA,GAAAA,iBAAiB,GAAAF,mBAAA;IAAAG,iBAAA,GAAAL,IAAA,CAClCM,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAGE,MAAAA,GAAAA,SAAS,GAAAF,iBAAA;IACxBG,MAAM,GAAAR,IAAA,CAANQ,MAAM;AAENC,EAAAA,WAAW,CAACC,YAAY,CAAC,UAAAC,MAAM,EAAI;AAAA,IAAA,IAAAC,iBAAA;AACjC,IAAA,IAAI,CAACD,MAAM,EAAE,OAAO,KAAK;IAEzB,IAAME,WAAW,GACfC,sBAAsB,CAACC,IAAI,CAACJ,MAAM,CAACK,OAAO,CAAC,IAC3CC,2BAA2B,CAACF,IAAI,CAACJ,MAAM,CAACO,IAAI,CAAC,IAC7CC,sBAAsB,CAACJ,IAAI,CAACJ,MAAM,CAACS,KAAK,CAAC,IACzCC,0BAA0B,CAACV,MAAM,CAAC,IAClC,CAAAL,YAAY,KAAA,IAAA,IAAZA,YAAY,KAAZA,MAAAA,GAAAA,MAAAA,GAAAA,YAAY,CAAGK,MAAM,CAAC,MAAK,KAAK;IAElC,IAAIE,WAAW,EAAE,OAAO,KAAK;AAE7B,IAAA,IAAMS,OAAO,GAAG;MAAEC,UAAU,EAAEZ,MAAM,CAACO;KAAM;AAE3C,IAAA,IAAIP,MAAM,CAACO,IAAI,KAAK,gBAAgB,EAAE;MACpCI,OAAO,CAACL,2BAA2B,GAAGA,2BAA2B;MACjEK,OAAO,CAACE,gBAAgB,GAAGP,2BAA2B,CAACF,IAAI,CAACJ,MAAM,CAACO,IAAI,CAAC;AAC1E;AAEA,IAAA,IAAMO,IAAI,GAAA,CAAAb,iBAAA,GAAGc,WAAW,CAACD,IAAI,MAAA,IAAA,IAAAb,iBAAA,KAAA,MAAA,GAAA,MAAA,GAAhBA,iBAAA,CAAkBe,KAAK;AACpC,IAAA,IAAIF,IAAI,EAAEH,OAAO,CAACG,IAAI,GAAGA,IAAI;AAE7B,IAAA,IAAMG,aAAa,GAAGC,mBAAmB,EAAE;AAC3C,IAAA,IAAID,aAAa,EAAEN,OAAO,CAACM,aAAa,GAAGA,aAAa;AAExDE,IAAAA,aAAa,CAACnB,MAAM,EAAEW,OAAO,CAAC;AAE9B,IAAA,OAAO,IAAI;AACb,GAAC,CAAC;AAEF,EAAA,IAAMS,WAAW,GAAGtB,WAAW,CAACuB,SAAS,CAAAC,aAAA,CAAA;IACvCC,MAAM,EAAER,WAAW,CAACS,iBAAiB;IACrCC,WAAW,EAAEV,WAAW,CAACW,QAAQ;IACjCC,QAAQ,EAAEZ,WAAW,CAACa,mBAAmB;AACzCC,IAAAA,uBAAuB,EAAE,CAAC,aAAa,EAAE,MAAM,CAAC;AAChDC,IAAAA,cAAc,EAAE,IAAI;AACpBC,IAAAA,KAAK,EAAE,IAAI;AACXC,IAAAA,kBAAkB,EAAE,IAAI;AACxBC,IAAAA,WAAW,EAAE,eAAe;AAC5BC,IAAAA,wBAAwB,EAAE;GACvBrC,EAAAA,MAAM,CACV,CAAC;EAEF,oBACEsC,GAAA,CAACC,0BAAa,EAAA;AAAO5C,IAAAA,cAAc,EAAdA,cAAc;AAAE4B,IAAAA,WAAW,EAAXA,WAAW;AAAA9B,IAAAA,QAAA,EAC7CA;AAAQ,GACI,CAAC;AAEpB;;;;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export { default } from './HoneybadgerErrorBoundary.js';
|
|
2
|
+
import '../../defineProperty-CrCYjjU3.js';
|
|
3
|
+
import '../../typeof-D-UKOauR.js';
|
|
2
4
|
import '@honeybadger-io/react';
|
|
3
5
|
import './constants.js';
|
|
4
6
|
import './FallbackComponent.js';
|
|
5
|
-
import '../../defineProperty-CrCYjjU3.js';
|
|
6
|
-
import '../../typeof-D-UKOauR.js';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'dompurify';
|
|
9
9
|
import '@bigbinary/neetoui/Button';
|
|
@@ -6,6 +6,10 @@ var getSessionReplayUrl = function getSessionReplayUrl() {
|
|
|
6
6
|
var currentTimestamp = new Date().getTime();
|
|
7
7
|
return storage ? "".concat(JSON.parse(storage).url, "?goto=").concat(currentTimestamp) : "";
|
|
8
8
|
};
|
|
9
|
+
var isNeetoReplaySecurityError = function isNeetoReplaySecurityError(notice) {
|
|
10
|
+
var _notice$stack;
|
|
11
|
+
return notice.name === "SecurityError" && ((_notice$stack = notice.stack) === null || _notice$stack === void 0 ? void 0 : _notice$stack.includes("neeto-replay-widget"));
|
|
12
|
+
};
|
|
9
13
|
|
|
10
|
-
export { attachContext, getSessionReplayUrl };
|
|
14
|
+
export { attachContext, getSessionReplayUrl, isNeetoReplaySecurityError };
|
|
11
15
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/react-utils/HoneybadgerErrorBoundary/utils.js"],"sourcesContent":["export const attachContext = (notice, context) => {\n if (notice.context) Object.assign(notice.context, context);\n else notice.context = context;\n};\n\nexport const getSessionReplayUrl = () => {\n const storage = sessionStorage.getItem(\"neeto-replay-widget--session\");\n const currentTimestamp = new Date().getTime();\n\n return storage ? `${JSON.parse(storage).url}?goto=${currentTimestamp}` : \"\";\n};\n"],"names":["attachContext","notice","context","Object","assign","getSessionReplayUrl","storage","sessionStorage","getItem","currentTimestamp","Date","getTime","concat","JSON","parse","url"],"mappings":"AAAO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,MAAM,EAAEC,OAAO,EAAK;EAChD,IAAID,MAAM,CAACC,OAAO,EAAEC,MAAM,CAACC,MAAM,CAACH,MAAM,CAACC,OAAO,EAAEA,OAAO,CAAC,CAAC,KACtDD,MAAM,CAACC,OAAO,GAAGA,OAAO;AAC/B;IAEaG,mBAAmB,GAAG,SAAtBA,mBAAmBA,GAAS;AACvC,EAAA,IAAMC,OAAO,GAAGC,cAAc,CAACC,OAAO,CAAC,8BAA8B,CAAC;EACtE,IAAMC,gBAAgB,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;AAE7C,EAAA,OAAOL,OAAO,GAAAM,EAAAA,CAAAA,MAAA,CAAMC,IAAI,CAACC,KAAK,CAACR,OAAO,CAAC,CAACS,GAAG,EAAA,QAAA,CAAA,CAAAH,MAAA,CAASH,gBAAgB,IAAK,EAAE;AAC7E;;;;"}
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/react-utils/HoneybadgerErrorBoundary/utils.js"],"sourcesContent":["export const attachContext = (notice, context) => {\n if (notice.context) Object.assign(notice.context, context);\n else notice.context = context;\n};\n\nexport const getSessionReplayUrl = () => {\n const storage = sessionStorage.getItem(\"neeto-replay-widget--session\");\n const currentTimestamp = new Date().getTime();\n\n return storage ? `${JSON.parse(storage).url}?goto=${currentTimestamp}` : \"\";\n};\n\nexport const isNeetoReplaySecurityError = notice =>\n notice.name === \"SecurityError\" &&\n notice.stack?.includes(\"neeto-replay-widget\");\n"],"names":["attachContext","notice","context","Object","assign","getSessionReplayUrl","storage","sessionStorage","getItem","currentTimestamp","Date","getTime","concat","JSON","parse","url","isNeetoReplaySecurityError","_notice$stack","name","stack","includes"],"mappings":"AAAO,IAAMA,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,MAAM,EAAEC,OAAO,EAAK;EAChD,IAAID,MAAM,CAACC,OAAO,EAAEC,MAAM,CAACC,MAAM,CAACH,MAAM,CAACC,OAAO,EAAEA,OAAO,CAAC,CAAC,KACtDD,MAAM,CAACC,OAAO,GAAGA,OAAO;AAC/B;IAEaG,mBAAmB,GAAG,SAAtBA,mBAAmBA,GAAS;AACvC,EAAA,IAAMC,OAAO,GAAGC,cAAc,CAACC,OAAO,CAAC,8BAA8B,CAAC;EACtE,IAAMC,gBAAgB,GAAG,IAAIC,IAAI,EAAE,CAACC,OAAO,EAAE;AAE7C,EAAA,OAAOL,OAAO,GAAAM,EAAAA,CAAAA,MAAA,CAAMC,IAAI,CAACC,KAAK,CAACR,OAAO,CAAC,CAACS,GAAG,EAAA,QAAA,CAAA,CAAAH,MAAA,CAASH,gBAAgB,IAAK,EAAE;AAC7E;IAEaO,0BAA0B,GAAG,SAA7BA,0BAA0BA,CAAGf,MAAM,EAAA;AAAA,EAAA,IAAAgB,aAAA;AAAA,EAAA,OAC9ChB,MAAM,CAACiB,IAAI,KAAK,eAAe,KAAA,CAAAD,aAAA,GAC/BhB,MAAM,CAACkB,KAAK,MAAA,IAAA,IAAAF,aAAA,KAAZA,MAAAA,GAAAA,MAAAA,GAAAA,aAAA,CAAcG,QAAQ,CAAC,qBAAqB,CAAC,CAAA;AAAA;;;;"}
|
|
@@ -28,11 +28,11 @@ export { default as withTitle } from './withTitle/withTitle.js';
|
|
|
28
28
|
export { default as QueryClientProvider } from './QueryClientProvider/QueryClientProvider.js';
|
|
29
29
|
export { default as queryClient } from './QueryClientProvider/queryClient.js';
|
|
30
30
|
export { default as AppContainer } from './AppContainer/AppContainer.js';
|
|
31
|
+
import '../defineProperty-CrCYjjU3.js';
|
|
32
|
+
import '../typeof-D-UKOauR.js';
|
|
31
33
|
import '@honeybadger-io/react';
|
|
32
34
|
import './HoneybadgerErrorBoundary/constants.js';
|
|
33
35
|
import './HoneybadgerErrorBoundary/FallbackComponent.js';
|
|
34
|
-
import '../defineProperty-CrCYjjU3.js';
|
|
35
|
-
import '../typeof-D-UKOauR.js';
|
|
36
36
|
import 'react';
|
|
37
37
|
import 'dompurify';
|
|
38
38
|
import '@bigbinary/neetoui/Button';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-commons-frontend",
|
|
3
|
-
"version": "4.13.
|
|
3
|
+
"version": "4.13.49",
|
|
4
4
|
"description": "A package encapsulating common code across neeto projects including initializers, utility functions, common components and hooks and so on.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-commons-frontend.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
package/react-utils.d.ts
CHANGED
|
@@ -9,10 +9,12 @@ import { DefaultNamespace } from "react-i18next/TransWithoutContext";
|
|
|
9
9
|
import { qsOptionsType, QueryParamsType } from "./utils";
|
|
10
10
|
import { QueryFilters } from "react-query/types/core/utils";
|
|
11
11
|
import BrowserSupport from "@bigbinary/neeto-molecules/types/BrowserSupport";
|
|
12
|
+
import { Config } from "@honeybadger-io/core/build/src/types";
|
|
12
13
|
type HoneybadgerErrorBoundaryPropsType = {
|
|
13
14
|
ErrorComponent?: ReactNode | ComponentType | ElementType;
|
|
14
15
|
filterErrors?: (error: Notice) => boolean;
|
|
15
16
|
children?: ReactNode;
|
|
17
|
+
config?: Partial<Config>;
|
|
16
18
|
};
|
|
17
19
|
type BrowserSupportPropsType = React.ComponentProps<typeof BrowserSupport>;
|
|
18
20
|
/**
|
|
@@ -58,6 +60,21 @@ type BrowserSupportPropsType = React.ComponentProps<typeof BrowserSupport>;
|
|
|
58
60
|
*
|
|
59
61
|
* false if not.
|
|
60
62
|
*
|
|
63
|
+
* config is an optional object that allows overriding preset configuration
|
|
64
|
+
*
|
|
65
|
+
* options for the apps that require it. For example, the code below disables
|
|
66
|
+
*
|
|
67
|
+
* Honeybadger event collection.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
*
|
|
71
|
+
* <HoneybadgerErrorBoundary
|
|
72
|
+
* ErrorComponent={ErrorComponent}
|
|
73
|
+
* config={{ breadcrumbsEnabled: false }}
|
|
74
|
+
* >
|
|
75
|
+
* <Main />
|
|
76
|
+
* </HoneybadgerErrorBoundary>
|
|
77
|
+
* @endexample
|
|
61
78
|
*/
|
|
62
79
|
export const HoneybadgerErrorBoundary: React.FC<HoneybadgerErrorBoundaryPropsType>;
|
|
63
80
|
/**
|
|
@@ -1706,7 +1723,7 @@ type QueryKeyOrFilters = QueryKey | QueryFilters;
|
|
|
1706
1723
|
*/
|
|
1707
1724
|
export function useMutationWithInvalidation<TData = unknown, TError = unknown, TVariables = void, TContext = unknown>(mutationFn: MutationFunction<TData, TVariables>, options: {
|
|
1708
1725
|
keysToInvalidate: Array<QueryKeyOrFilters | ((data: TData, variables: TVariables, context: TContext | undefined) => QueryKeyOrFilters)>;
|
|
1709
|
-
} & Omit<UseMutationOptions<TData, TError, TVariables, TContext>,
|
|
1726
|
+
} & Omit<UseMutationOptions<TData, TError, TVariables, TContext>, "mutationFn">): UseMutationResult<TData, TError, TVariables, TContext>;
|
|
1710
1727
|
/**
|
|
1711
1728
|
*
|
|
1712
1729
|
* The useQueryParams hook can be used to retrieve the query parameters whenever
|
|
@@ -1735,7 +1752,7 @@ export function useMutationWithInvalidation<TData = unknown, TError = unknown, T
|
|
|
1735
1752
|
* @endexample
|
|
1736
1753
|
*/
|
|
1737
1754
|
export function useQueryParams(options?: qsOptionsType): QueryParamsType;
|
|
1738
|
-
type BreakpointKeys =
|
|
1755
|
+
type BreakpointKeys = "mobile" | "tablet" | "desktop" | "largeDesktop";
|
|
1739
1756
|
type Breakpoints = { [key in BreakpointKeys]: boolean };
|
|
1740
1757
|
/**
|
|
1741
1758
|
*
|