@contember/react-devbar 2.1.0-alpha.3 → 2.1.0-alpha.35
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/package.json +11 -11
- package/src/errorHandling.tsx +1 -8
- package/src/hooks/useCopyErrorMarkdown.ts +127 -0
- package/src/hooks/useParsedStacktrace.ts +1 -1
- package/src/index.css +27 -0
- package/src/ui/DevBar/DevBar.tsx +9 -13
- package/src/ui/DevError/DevErrorBadge.tsx +0 -1
- package/src/ui/DevError/DevErrorCopy.tsx +30 -0
- package/src/ui/DevError/DevErrorInner.tsx +26 -26
- package/src/ui/DevError/DevErrorList.tsx +25 -19
- package/src/ui/DevError/StackTrace.tsx +1 -4
- package/dist/development/index.cjs +0 -17
- package/dist/development/index.cjs.map +0 -1
- package/dist/development/index.js +0 -17
- package/dist/development/index.js.map +0 -1
- package/dist/development/src/DevErrorManager.cjs +0 -110
- package/dist/development/src/DevErrorManager.cjs.map +0 -1
- package/dist/development/src/DevErrorManager.js +0 -110
- package/dist/development/src/DevErrorManager.js.map +0 -1
- package/dist/development/src/errorHandling.cjs +0 -75
- package/dist/development/src/errorHandling.cjs.map +0 -1
- package/dist/development/src/errorHandling.js +0 -58
- package/dist/development/src/errorHandling.js.map +0 -1
- package/dist/development/src/hooks/useParsedStacktrace.cjs +0 -67
- package/dist/development/src/hooks/useParsedStacktrace.cjs.map +0 -1
- package/dist/development/src/hooks/useParsedStacktrace.js +0 -45
- package/dist/development/src/hooks/useParsedStacktrace.js.map +0 -1
- package/dist/development/src/ui/DevBar/DevBar.cjs +0 -191
- package/dist/development/src/ui/DevBar/DevBar.cjs.map +0 -1
- package/dist/development/src/ui/DevBar/DevBar.js +0 -191
- package/dist/development/src/ui/DevBar/DevBar.js.map +0 -1
- package/dist/development/src/ui/DevError/DevError.cjs +0 -33
- package/dist/development/src/ui/DevError/DevError.cjs.map +0 -1
- package/dist/development/src/ui/DevError/DevError.js +0 -33
- package/dist/development/src/ui/DevError/DevError.js.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorBadge.cjs +0 -21
- package/dist/development/src/ui/DevError/DevErrorBadge.cjs.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorBadge.js +0 -21
- package/dist/development/src/ui/DevError/DevErrorBadge.js.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorInner.cjs +0 -79
- package/dist/development/src/ui/DevError/DevErrorInner.cjs.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorInner.js +0 -79
- package/dist/development/src/ui/DevError/DevErrorInner.js.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorList.cjs +0 -111
- package/dist/development/src/ui/DevError/DevErrorList.cjs.map +0 -1
- package/dist/development/src/ui/DevError/DevErrorList.js +0 -111
- package/dist/development/src/ui/DevError/DevErrorList.js.map +0 -1
- package/dist/development/src/ui/DevError/StackTrace.cjs +0 -82
- package/dist/development/src/ui/DevError/StackTrace.cjs.map +0 -1
- package/dist/development/src/ui/DevError/StackTrace.js +0 -82
- package/dist/development/src/ui/DevError/StackTrace.js.map +0 -1
- package/dist/production/index.cjs +0 -17
- package/dist/production/index.cjs.map +0 -1
- package/dist/production/index.js +0 -17
- package/dist/production/index.js.map +0 -1
- package/dist/production/src/errorHandling.cjs +0 -59
- package/dist/production/src/errorHandling.cjs.map +0 -1
- package/dist/production/src/errorHandling.js +0 -42
- package/dist/production/src/errorHandling.js.map +0 -1
- package/dist/production/src/hooks/useParsedStacktrace.cjs +0 -67
- package/dist/production/src/hooks/useParsedStacktrace.cjs.map +0 -1
- package/dist/production/src/hooks/useParsedStacktrace.js +0 -45
- package/dist/production/src/hooks/useParsedStacktrace.js.map +0 -1
- package/dist/production/src/ui/DevBar/DevBar.cjs +0 -123
- package/dist/production/src/ui/DevBar/DevBar.cjs.map +0 -1
- package/dist/production/src/ui/DevBar/DevBar.js +0 -123
- package/dist/production/src/ui/DevBar/DevBar.js.map +0 -1
- package/dist/production/src/ui/DevError/DevError.cjs +0 -13
- package/dist/production/src/ui/DevError/DevError.cjs.map +0 -1
- package/dist/production/src/ui/DevError/DevError.js +0 -13
- package/dist/production/src/ui/DevError/DevError.js.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorBadge.cjs +0 -13
- package/dist/production/src/ui/DevError/DevErrorBadge.cjs.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorBadge.js +0 -13
- package/dist/production/src/ui/DevError/DevErrorBadge.js.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorInner.cjs +0 -23
- package/dist/production/src/ui/DevError/DevErrorInner.cjs.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorInner.js +0 -23
- package/dist/production/src/ui/DevError/DevErrorInner.js.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorList.cjs +0 -47
- package/dist/production/src/ui/DevError/DevErrorList.cjs.map +0 -1
- package/dist/production/src/ui/DevError/DevErrorList.js +0 -47
- package/dist/production/src/ui/DevError/DevErrorList.js.map +0 -1
- package/dist/production/src/ui/DevError/StackTrace.cjs +0 -39
- package/dist/production/src/ui/DevError/StackTrace.cjs.map +0 -1
- package/dist/production/src/ui/DevError/StackTrace.js +0 -39
- package/dist/production/src/ui/DevError/StackTrace.js.map +0 -1
- package/dist/types/DevErrorManager.d.ts +0 -15
- package/dist/types/DevErrorManager.d.ts.map +0 -1
- package/dist/types/errorHandling.d.ts +0 -6
- package/dist/types/errorHandling.d.ts.map +0 -1
- package/dist/types/hooks/useParsedStacktrace.d.ts +0 -10
- package/dist/types/hooks/useParsedStacktrace.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -5
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/tsconfig.tsbuildinfo +0 -1
- package/dist/types/ui/DevBar/DevBar.d.ts +0 -13
- package/dist/types/ui/DevBar/DevBar.d.ts.map +0 -1
- package/dist/types/ui/DevBar/index.d.ts +0 -2
- package/dist/types/ui/DevBar/index.d.ts.map +0 -1
- package/dist/types/ui/DevError/DevError.d.ts +0 -6
- package/dist/types/ui/DevError/DevError.d.ts.map +0 -1
- package/dist/types/ui/DevError/DevErrorBadge.d.ts +0 -7
- package/dist/types/ui/DevError/DevErrorBadge.d.ts.map +0 -1
- package/dist/types/ui/DevError/DevErrorInner.d.ts +0 -7
- package/dist/types/ui/DevError/DevErrorInner.d.ts.map +0 -1
- package/dist/types/ui/DevError/DevErrorList.d.ts +0 -13
- package/dist/types/ui/DevError/DevErrorList.d.ts.map +0 -1
- package/dist/types/ui/DevError/StackTrace.d.ts +0 -5
- package/dist/types/ui/DevError/StackTrace.d.ts.map +0 -1
- package/dist/types/ui/DevError/index.d.ts +0 -5
- package/dist/types/ui/DevError/index.d.ts.map +0 -1
- package/dist/types/ui/DevError/types.d.ts +0 -15
- package/dist/types/ui/DevError/types.d.ts.map +0 -1
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
|
-
import { useState, useEffect } from "react";
|
|
3
|
-
import { useProcessedError } from "./hooks/useParsedStacktrace.js";
|
|
4
|
-
import { DevErrorBadge } from "./ui/DevError/DevErrorBadge.js";
|
|
5
|
-
import { DevErrorList } from "./ui/DevError/DevErrorList.js";
|
|
6
|
-
var __defProp = Object.defineProperty;
|
|
7
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
9
|
-
class ErrorBus {
|
|
10
|
-
constructor() {
|
|
11
|
-
__publicField(this, "queue", []);
|
|
12
|
-
__publicField(this, "listener", null);
|
|
13
|
-
}
|
|
14
|
-
async handleError(source, error) {
|
|
15
|
-
const boxedError = { error, source };
|
|
16
|
-
if (!this.listener) {
|
|
17
|
-
this.queue.push(boxedError);
|
|
18
|
-
} else {
|
|
19
|
-
this.listener(boxedError);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
register(listener) {
|
|
23
|
-
this.listener = listener;
|
|
24
|
-
this.queue.forEach(listener);
|
|
25
|
-
this.queue = [];
|
|
26
|
-
return () => {
|
|
27
|
-
this.listener = null;
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
const compareErrors = (a, b) => {
|
|
32
|
-
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null) {
|
|
33
|
-
return false;
|
|
34
|
-
}
|
|
35
|
-
if (!("stack" in a) || !("stack" in b) || !("message" in a) || !("message" in b)) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
if (a.message !== b.message) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
if (a.stack !== b.stack) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
return true;
|
|
45
|
-
};
|
|
46
|
-
function DevErrorManager(props) {
|
|
47
|
-
const [errors, setErrors] = useState([]);
|
|
48
|
-
const [errIndex, setErrorIndex] = useState(0);
|
|
49
|
-
const [open, setOpen] = useState(false);
|
|
50
|
-
useEffect(
|
|
51
|
-
() => {
|
|
52
|
-
return props.bus.register((err) => {
|
|
53
|
-
setTimeout(
|
|
54
|
-
() => {
|
|
55
|
-
setErrors((errors2) => {
|
|
56
|
-
return !errors2.find((it) => compareErrors(it.error, err.error)) ? [err, ...errors2] : errors2;
|
|
57
|
-
});
|
|
58
|
-
setOpen(true);
|
|
59
|
-
},
|
|
60
|
-
0
|
|
61
|
-
);
|
|
62
|
-
});
|
|
63
|
-
},
|
|
64
|
-
[props.bus]
|
|
65
|
-
);
|
|
66
|
-
const currentError = errors[errIndex];
|
|
67
|
-
const processedError = useProcessedError(currentError?.error);
|
|
68
|
-
useEffect(() => {
|
|
69
|
-
}, []);
|
|
70
|
-
if (!currentError) {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
const onPrevious = () => setErrorIndex((it) => Math.max(0, it - 1));
|
|
74
|
-
const onNext = () => setErrorIndex((it) => Math.min(errors.length - 1, it + 1));
|
|
75
|
-
const onClose = () => setOpen(false);
|
|
76
|
-
const onClear = () => setErrors([]);
|
|
77
|
-
if (!open) {
|
|
78
|
-
return /* @__PURE__ */ jsxDEV(DevErrorBadge, { errorCount: errors.length, onOpen: () => setOpen(true), onClear }, void 0, false, {
|
|
79
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/DevErrorManager.tsx",
|
|
80
|
-
lineNumber: 94,
|
|
81
|
-
columnNumber: 10
|
|
82
|
-
}, this);
|
|
83
|
-
}
|
|
84
|
-
return /* @__PURE__ */ jsxDEV(
|
|
85
|
-
DevErrorList,
|
|
86
|
-
{
|
|
87
|
-
currentError: processedError,
|
|
88
|
-
currentErrorSource: currentError.source,
|
|
89
|
-
currentErrorIndex: errIndex,
|
|
90
|
-
errorCount: errors.length,
|
|
91
|
-
onPrevious,
|
|
92
|
-
onNext,
|
|
93
|
-
onClose,
|
|
94
|
-
onClear
|
|
95
|
-
},
|
|
96
|
-
void 0,
|
|
97
|
-
false,
|
|
98
|
-
{
|
|
99
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/DevErrorManager.tsx",
|
|
100
|
-
lineNumber: 97,
|
|
101
|
-
columnNumber: 3
|
|
102
|
-
},
|
|
103
|
-
this
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
export {
|
|
107
|
-
DevErrorManager,
|
|
108
|
-
ErrorBus
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=DevErrorManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevErrorManager.js","sources":["../../../../packages/react-devbar/src/DevErrorManager.tsx"],"sourcesContent":["import { DevErrorBadge, DevErrorList, ErrorType } from './ui/DevError'\nimport { useEffect, useState } from 'react'\nimport { useProcessedError } from './hooks/useParsedStacktrace'\n\nexport class ErrorBus {\n\tprivate queue: { error: ErrorType; source: string }[] = []\n\tprivate listener: null | ((error: { error: ErrorType; source: string }) => void) = null\n\n\tasync handleError(source: string, error: ErrorType) {\n\t\tconst boxedError = { error, source }\n\n\t\tif (!this.listener) {\n\t\t\tthis.queue.push(boxedError)\n\t\t} else {\n\t\t\tthis.listener(boxedError)\n\t\t}\n\t}\n\n\tregister(listener: (error: { error: ErrorType; source: string }) => void): () => void {\n\t\tthis.listener = listener\n\t\tthis.queue.forEach(listener)\n\t\tthis.queue = []\n\t\treturn () => {\n\t\t\tthis.listener = null\n\t\t}\n\t}\n}\n\nexport interface DevErrorManagerProps {\n\tbus: ErrorBus\n}\n\nconst compareErrors = (a: ErrorType, b: ErrorType) => {\n\tif (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {\n\t\treturn false\n\t}\n\tif (!('stack' in a) || !('stack' in b) || !('message' in a) || !('message' in b)) {\n\t\treturn false\n\t}\n\tif (a.message !== b.message) {\n\t\treturn false\n\t}\n\tif (a.stack !== b.stack) {\n\t\treturn false\n\t}\n\treturn true\n}\n\nexport function DevErrorManager(props: DevErrorManagerProps) {\n\tconst [errors, setErrors] = useState<{ error: ErrorType; source: string }[]>([])\n\tconst [errIndex, setErrorIndex] = useState(0)\n\tconst [open, setOpen] = useState(false)\n\n\tuseEffect(\n\t\t() => {\n\t\t\treturn props.bus.register(err => {\n\t\t\t\tsetTimeout(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tsetErrors(errors => {\n\t\t\t\t\t\t\treturn !errors.find(it => compareErrors(it.error, err.error)) ? [err, ...errors] : errors\n\t\t\t\t\t\t})\n\t\t\t\t\t\tsetOpen(true)\n\t\t\t\t\t},\n\t\t\t\t\t0,\n\t\t\t\t)\n\t\t\t})\n\t\t},\n\t\t[props.bus],\n\t)\n\n\tconst currentError = errors[errIndex]\n\tconst processedError = useProcessedError(currentError?.error)\n\n\tuseEffect(() => {\n\t\tif (import.meta.hot) {\n\t\t\tconst cb = () => {\n\t\t\t\tsetOpen(false)\n\t\t\t}\n\t\t\timport.meta.hot.on('vite:afterUpdate', cb)\n\t\t\treturn () => {\n\t\t\t\timport.meta.hot?.off('vite:afterUpdate', cb)\n\t\t\t}\n\t\t}\n\t}, [])\n\n\tif (!currentError) {\n\t\treturn null\n\t}\n\tconst onPrevious = () => setErrorIndex(it => Math.max(0, it - 1))\n\tconst onNext = () => setErrorIndex(it => Math.min(errors.length - 1, it + 1))\n\tconst onClose = () => setOpen(false)\n\tconst onClear = () => setErrors([])\n\tif (!open) {\n\t\treturn <DevErrorBadge errorCount={errors.length} onOpen={() => setOpen(true)} onClear={onClear} />\n\t}\n\treturn (\n\t\t<DevErrorList\n\t\t\tcurrentError={processedError}\n\t\t\tcurrentErrorSource={currentError.source}\n\t\t\tcurrentErrorIndex={errIndex}\n\t\t\terrorCount={errors.length}\n\t\t\tonPrevious={onPrevious}\n\t\t\tonNext={onNext}\n\t\t\tonClose={onClose}\n\t\t\tonClear={onClear}\n\t\t/>\n\t)\n}\n"],"names":["errors"],"mappings":";;;;;;;;AAIO,MAAM,SAAS;AAAA,EAAf,cAAA;AACN,kBAAA,MAAQ,SAAgD,EAAC;AACzD,kBAAA,MAAQ,YAA2E,IAAA;AAAA,EAAA;AAAA,EAEnF,MAAM,YAAY,QAAgB,OAAkB;AAC7C,UAAA,aAAa,EAAE,OAAO,OAAO;AAE/B,QAAA,CAAC,KAAK,UAAU;AACd,WAAA,MAAM,KAAK,UAAU;AAAA,IAAA,OACpB;AACN,WAAK,SAAS,UAAU;AAAA,IAAA;AAAA,EACzB;AAAA,EAGD,SAAS,UAA6E;AACrF,SAAK,WAAW;AACX,SAAA,MAAM,QAAQ,QAAQ;AAC3B,SAAK,QAAQ,CAAC;AACd,WAAO,MAAM;AACZ,WAAK,WAAW;AAAA,IACjB;AAAA,EAAA;AAEF;AAMA,MAAM,gBAAgB,CAAC,GAAc,MAAiB;AACjD,MAAA,OAAO,MAAM,YAAY,OAAO,MAAM,YAAY,MAAM,QAAQ,MAAM,MAAM;AACxE,WAAA;AAAA,EAAA;AAEJ,MAAA,EAAE,WAAW,MAAM,EAAE,WAAW,MAAM,EAAE,aAAa,MAAM,EAAE,aAAa,IAAI;AAC1E,WAAA;AAAA,EAAA;AAEJ,MAAA,EAAE,YAAY,EAAE,SAAS;AACrB,WAAA;AAAA,EAAA;AAEJ,MAAA,EAAE,UAAU,EAAE,OAAO;AACjB,WAAA;AAAA,EAAA;AAED,SAAA;AACR;AAEO,SAAS,gBAAgB,OAA6B;AAC5D,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAiD,CAAA,CAAE;AAC/E,QAAM,CAAC,UAAU,aAAa,IAAI,SAAS,CAAC;AAC5C,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AAEtC;AAAA,IACC,MAAM;AACE,aAAA,MAAM,IAAI,SAAS,CAAO,QAAA;AAChC;AAAA,UACC,MAAM;AACL,sBAAU,CAAAA,YAAU;AACnB,qBAAO,CAACA,QAAO,KAAK,CAAA,OAAM,cAAc,GAAG,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,GAAGA,OAAM,IAAIA;AAAAA,YAAAA,CACnF;AACD,oBAAQ,IAAI;AAAA,UACb;AAAA,UACA;AAAA,QACD;AAAA,MAAA,CACA;AAAA,IACF;AAAA,IACA,CAAC,MAAM,GAAG;AAAA,EACX;AAEM,QAAA,eAAe,OAAO,QAAQ;AAC9B,QAAA,iBAAiB,kBAAkB,cAAc,KAAK;AAE5D,YAAU,MAAM;AAAA,EAUhB,GAAG,EAAE;AAEL,MAAI,CAAC,cAAc;AACX,WAAA;AAAA,EAAA;AAEF,QAAA,aAAa,MAAM,cAAc,CAAA,OAAM,KAAK,IAAI,GAAG,KAAK,CAAC,CAAC;AAC1D,QAAA,SAAS,MAAM,cAAc,CAAM,OAAA,KAAK,IAAI,OAAO,SAAS,GAAG,KAAK,CAAC,CAAC;AACtE,QAAA,UAAU,MAAM,QAAQ,KAAK;AACnC,QAAM,UAAU,MAAM,UAAU,EAAE;AAClC,MAAI,CAAC,MAAM;AACH,WAAC,uBAAA,eAAc,EAAA,YAAY,OAAO,QAAQ,QAAQ,MAAM,QAAQ,IAAI,GAAG,QAAvE,GAAA,QAAA,OAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,OAAyF,IAAA;AAAA,EAAA;AAGhG,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAc;AAAA,MACd,oBAAoB,aAAa;AAAA,MACjC,mBAAmB;AAAA,MACnB,YAAY,OAAO;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAAA,IARD;AAAA,IAAA;AAAA,IAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA;AAAA,IAAA;AAAA,EASA;AAEF;"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
|
-
const ReactDOM = require("react-dom");
|
|
5
|
-
const buffer = require("buffer");
|
|
6
|
-
const DevErrorManager = require("./DevErrorManager.cjs");
|
|
7
|
-
function _interopNamespaceDefault(e) {
|
|
8
|
-
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
9
|
-
if (e) {
|
|
10
|
-
for (const k in e) {
|
|
11
|
-
if (k !== "default") {
|
|
12
|
-
const d = Object.getOwnPropertyDescriptor(e, k);
|
|
13
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
14
|
-
enumerable: true,
|
|
15
|
-
get: () => e[k]
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
n.default = e;
|
|
21
|
-
return Object.freeze(n);
|
|
22
|
-
}
|
|
23
|
-
const ReactDOM__namespace = /* @__PURE__ */ _interopNamespaceDefault(ReactDOM);
|
|
24
|
-
const getErrorContainer = () => {
|
|
25
|
-
const errorElementId = "__contember__dev__error__container__element";
|
|
26
|
-
let errorContainer = document.getElementById(errorElementId);
|
|
27
|
-
if (errorContainer) {
|
|
28
|
-
ReactDOM__namespace.unmountComponentAtNode(errorContainer);
|
|
29
|
-
} else {
|
|
30
|
-
errorContainer = document.createElement("div");
|
|
31
|
-
errorContainer.id = errorElementId;
|
|
32
|
-
document.body.appendChild(errorContainer);
|
|
33
|
-
}
|
|
34
|
-
return errorContainer;
|
|
35
|
-
};
|
|
36
|
-
const devErrorHandler = (renderer) => {
|
|
37
|
-
const errorBus = new DevErrorManager.ErrorBus();
|
|
38
|
-
window.Buffer = buffer.Buffer;
|
|
39
|
-
window.addEventListener("error", (e) => {
|
|
40
|
-
if (e.message.startsWith("ResizeObserver")) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
errorBus.handleError("Unhandled error", e.error);
|
|
44
|
-
});
|
|
45
|
-
window.addEventListener("unhandledrejection", (e) => errorBus.handleError("Unhandled promise rejection", e.reason));
|
|
46
|
-
const origOnError = console.error;
|
|
47
|
-
console.error = (...args) => {
|
|
48
|
-
origOnError(...args);
|
|
49
|
-
for (const arg of args) {
|
|
50
|
-
if (arg instanceof Error) {
|
|
51
|
-
errorBus.handleError("Logged error", arg);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
renderer(getErrorContainer(), /* @__PURE__ */ jsxDevRuntime.jsxDEV(DevErrorManager.DevErrorManager, { bus: errorBus }, void 0, false, {
|
|
56
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/errorHandling.tsx",
|
|
57
|
-
lineNumber: 48,
|
|
58
|
-
columnNumber: 32
|
|
59
|
-
}, void 0), () => {
|
|
60
|
-
});
|
|
61
|
-
return async (cb) => {
|
|
62
|
-
try {
|
|
63
|
-
await cb((e) => errorBus.handleError("Recoverable React error", e));
|
|
64
|
-
} catch (e) {
|
|
65
|
-
errorBus.handleError("Entrypoint crash", e);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
};
|
|
69
|
-
const createErrorHandler = (renderer) => {
|
|
70
|
-
{
|
|
71
|
-
return devErrorHandler(renderer);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
exports.createErrorHandler = createErrorHandler;
|
|
75
|
-
//# sourceMappingURL=errorHandling.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandling.cjs","sources":["../../../../packages/react-devbar/src/errorHandling.tsx"],"sourcesContent":["import * as ReactDOM from 'react-dom'\nimport { Buffer } from 'buffer'\nimport { DevErrorManager, ErrorBus } from './DevErrorManager'\nimport { ReactElement } from 'react'\n\nexport type ErrorReactRenderer = (domElement: Element, reactElement: ReactElement, onRecoverableError: (e: any) => void) => void\n\nconst getErrorContainer = () => {\n\tconst errorElementId = '__contember__dev__error__container__element'\n\tlet errorContainer = document.getElementById(errorElementId)\n\n\tif (errorContainer) {\n\t\t// eslint-disable-next-line react/no-deprecated\n\t\tReactDOM.unmountComponentAtNode(errorContainer)\n\n\t} else {\n\t\terrorContainer = document.createElement('div')\n\t\terrorContainer.id = errorElementId\n\t\tdocument.body.appendChild(errorContainer)\n\t}\n\n\treturn errorContainer\n}\n\nconst devErrorHandler = (renderer: ErrorReactRenderer): TryRun => {\n\tconst errorBus = new ErrorBus()\n\n\t;(window as any).Buffer = Buffer\n\twindow.addEventListener('error', e => {\n\t\tif (e.message.startsWith('ResizeObserver')) {\n\t\t\t// Apparently, this can be ignored: https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n\t\t\treturn\n\t\t}\n\t\terrorBus.handleError('Unhandled error', e.error)\n\t})\n\n\twindow.addEventListener('unhandledrejection', e => errorBus.handleError('Unhandled promise rejection', e.reason))\n\n\tconst origOnError = console.error\n\tconsole.error = (...args) => {\n\t\torigOnError(...args)\n\t\tfor (const arg of args) {\n\t\t\tif (arg instanceof Error) {\n\t\t\t\terrorBus.handleError('Logged error', arg)\n\t\t\t}\n\t\t}\n\t}\n\trenderer(getErrorContainer(), <DevErrorManager bus={errorBus} />, () => {})\n\n\treturn async cb => {\n\t\ttry {\n\t\t\tawait cb(e => errorBus.handleError('Recoverable React error', e))\n\t\t} catch (e) {\n\t\t\terrorBus.handleError('Entrypoint crash', e)\n\t\t}\n\t}\n}\n\ntype TryRun = <T>(cb: (onRecoverableError: (e: any) => void) => T | Promise<T>) => void\nconst prodErrorHandler = (renderer: ErrorReactRenderer): TryRun => {\n\tconst renderError = () => {\n\t\trenderer(getErrorContainer(), <h1>Fatal error</h1>, () => {})\n\t}\n\n\twindow.addEventListener('error', renderError)\n\twindow.addEventListener('unhandledrejection', renderError)\n\n\treturn async cb => {\n\t\ttry {\n\t\t\tawait cb(e => {\n\t\t\t\tconsole.warn(e)\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\trenderError()\n\t\t}\n\t}\n}\n\n\nexport const createErrorHandler = (renderer: ErrorReactRenderer) => {\n\tif (import.meta.env.DEV) {\n\t\treturn devErrorHandler(renderer)\n\t} else {\n\t\treturn prodErrorHandler(renderer)\n\t}\n}\n"],"names":["ReactDOM","ErrorBus","Buffer","jsxDEV","DevErrorManager"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,MAAM,oBAAoB,MAAM;AAC/B,QAAM,iBAAiB;AACnB,MAAA,iBAAiB,SAAS,eAAe,cAAc;AAE3D,MAAI,gBAAgB;AAEnBA,wBAAS,uBAAuB,cAAc;AAAA,EAAA,OAExC;AACW,qBAAA,SAAS,cAAc,KAAK;AAC7C,mBAAe,KAAK;AACX,aAAA,KAAK,YAAY,cAAc;AAAA,EAAA;AAGlC,SAAA;AACR;AAEA,MAAM,kBAAkB,CAAC,aAAyC;AAC3D,QAAA,WAAW,IAAIC,yBAAS;AAE5B,SAAe,SAASC,OAAA;AACnB,SAAA,iBAAiB,SAAS,CAAK,MAAA;AACrC,QAAI,EAAE,QAAQ,WAAW,gBAAgB,GAAG;AAE3C;AAAA,IAAA;AAEQ,aAAA,YAAY,mBAAmB,EAAE,KAAK;AAAA,EAAA,CAC/C;AAEM,SAAA,iBAAiB,sBAAsB,CAAK,MAAA,SAAS,YAAY,+BAA+B,EAAE,MAAM,CAAC;AAEhH,QAAM,cAAc,QAAQ;AACpB,UAAA,QAAQ,IAAI,SAAS;AAC5B,gBAAY,GAAG,IAAI;AACnB,eAAW,OAAO,MAAM;AACvB,UAAI,eAAe,OAAO;AAChB,iBAAA,YAAY,gBAAgB,GAAG;AAAA,MAAA;AAAA,IACzC;AAAA,EAEF;AACS,WAAA,qBAAsBC,8BAAAA,OAAAC,gBAAA,iBAAA,EAAgB,KAAK,SAAtB,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAA,MAAgC,GAAI,MAAM;AAAA,EAAA,CAAE;AAE1E,SAAO,OAAM,OAAM;AACd,QAAA;AACH,YAAM,GAAG,CAAK,MAAA,SAAS,YAAY,2BAA2B,CAAC,CAAC;AAAA,aACxD,GAAG;AACF,eAAA,YAAY,oBAAoB,CAAC;AAAA,IAAA;AAAA,EAE5C;AACD;AAwBa,MAAA,qBAAqB,CAAC,aAAiC;AAC1C;AACxB,WAAO,gBAAgB,QAAQ;AAAA,EAAA;AAIjC;;"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
|
-
import * as ReactDOM from "react-dom";
|
|
3
|
-
import { Buffer } from "buffer";
|
|
4
|
-
import { ErrorBus, DevErrorManager } from "./DevErrorManager.js";
|
|
5
|
-
const getErrorContainer = () => {
|
|
6
|
-
const errorElementId = "__contember__dev__error__container__element";
|
|
7
|
-
let errorContainer = document.getElementById(errorElementId);
|
|
8
|
-
if (errorContainer) {
|
|
9
|
-
ReactDOM.unmountComponentAtNode(errorContainer);
|
|
10
|
-
} else {
|
|
11
|
-
errorContainer = document.createElement("div");
|
|
12
|
-
errorContainer.id = errorElementId;
|
|
13
|
-
document.body.appendChild(errorContainer);
|
|
14
|
-
}
|
|
15
|
-
return errorContainer;
|
|
16
|
-
};
|
|
17
|
-
const devErrorHandler = (renderer) => {
|
|
18
|
-
const errorBus = new ErrorBus();
|
|
19
|
-
window.Buffer = Buffer;
|
|
20
|
-
window.addEventListener("error", (e) => {
|
|
21
|
-
if (e.message.startsWith("ResizeObserver")) {
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
errorBus.handleError("Unhandled error", e.error);
|
|
25
|
-
});
|
|
26
|
-
window.addEventListener("unhandledrejection", (e) => errorBus.handleError("Unhandled promise rejection", e.reason));
|
|
27
|
-
const origOnError = console.error;
|
|
28
|
-
console.error = (...args) => {
|
|
29
|
-
origOnError(...args);
|
|
30
|
-
for (const arg of args) {
|
|
31
|
-
if (arg instanceof Error) {
|
|
32
|
-
errorBus.handleError("Logged error", arg);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
renderer(getErrorContainer(), /* @__PURE__ */ jsxDEV(DevErrorManager, { bus: errorBus }, void 0, false, {
|
|
37
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/errorHandling.tsx",
|
|
38
|
-
lineNumber: 48,
|
|
39
|
-
columnNumber: 32
|
|
40
|
-
}, void 0), () => {
|
|
41
|
-
});
|
|
42
|
-
return async (cb) => {
|
|
43
|
-
try {
|
|
44
|
-
await cb((e) => errorBus.handleError("Recoverable React error", e));
|
|
45
|
-
} catch (e) {
|
|
46
|
-
errorBus.handleError("Entrypoint crash", e);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
const createErrorHandler = (renderer) => {
|
|
51
|
-
{
|
|
52
|
-
return devErrorHandler(renderer);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
export {
|
|
56
|
-
createErrorHandler
|
|
57
|
-
};
|
|
58
|
-
//# sourceMappingURL=errorHandling.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errorHandling.js","sources":["../../../../packages/react-devbar/src/errorHandling.tsx"],"sourcesContent":["import * as ReactDOM from 'react-dom'\nimport { Buffer } from 'buffer'\nimport { DevErrorManager, ErrorBus } from './DevErrorManager'\nimport { ReactElement } from 'react'\n\nexport type ErrorReactRenderer = (domElement: Element, reactElement: ReactElement, onRecoverableError: (e: any) => void) => void\n\nconst getErrorContainer = () => {\n\tconst errorElementId = '__contember__dev__error__container__element'\n\tlet errorContainer = document.getElementById(errorElementId)\n\n\tif (errorContainer) {\n\t\t// eslint-disable-next-line react/no-deprecated\n\t\tReactDOM.unmountComponentAtNode(errorContainer)\n\n\t} else {\n\t\terrorContainer = document.createElement('div')\n\t\terrorContainer.id = errorElementId\n\t\tdocument.body.appendChild(errorContainer)\n\t}\n\n\treturn errorContainer\n}\n\nconst devErrorHandler = (renderer: ErrorReactRenderer): TryRun => {\n\tconst errorBus = new ErrorBus()\n\n\t;(window as any).Buffer = Buffer\n\twindow.addEventListener('error', e => {\n\t\tif (e.message.startsWith('ResizeObserver')) {\n\t\t\t// Apparently, this can be ignored: https://stackoverflow.com/questions/49384120/resizeobserver-loop-limit-exceeded\n\t\t\treturn\n\t\t}\n\t\terrorBus.handleError('Unhandled error', e.error)\n\t})\n\n\twindow.addEventListener('unhandledrejection', e => errorBus.handleError('Unhandled promise rejection', e.reason))\n\n\tconst origOnError = console.error\n\tconsole.error = (...args) => {\n\t\torigOnError(...args)\n\t\tfor (const arg of args) {\n\t\t\tif (arg instanceof Error) {\n\t\t\t\terrorBus.handleError('Logged error', arg)\n\t\t\t}\n\t\t}\n\t}\n\trenderer(getErrorContainer(), <DevErrorManager bus={errorBus} />, () => {})\n\n\treturn async cb => {\n\t\ttry {\n\t\t\tawait cb(e => errorBus.handleError('Recoverable React error', e))\n\t\t} catch (e) {\n\t\t\terrorBus.handleError('Entrypoint crash', e)\n\t\t}\n\t}\n}\n\ntype TryRun = <T>(cb: (onRecoverableError: (e: any) => void) => T | Promise<T>) => void\nconst prodErrorHandler = (renderer: ErrorReactRenderer): TryRun => {\n\tconst renderError = () => {\n\t\trenderer(getErrorContainer(), <h1>Fatal error</h1>, () => {})\n\t}\n\n\twindow.addEventListener('error', renderError)\n\twindow.addEventListener('unhandledrejection', renderError)\n\n\treturn async cb => {\n\t\ttry {\n\t\t\tawait cb(e => {\n\t\t\t\tconsole.warn(e)\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\trenderError()\n\t\t}\n\t}\n}\n\n\nexport const createErrorHandler = (renderer: ErrorReactRenderer) => {\n\tif (import.meta.env.DEV) {\n\t\treturn devErrorHandler(renderer)\n\t} else {\n\t\treturn prodErrorHandler(renderer)\n\t}\n}\n"],"names":[],"mappings":";;;;AAOA,MAAM,oBAAoB,MAAM;AAC/B,QAAM,iBAAiB;AACnB,MAAA,iBAAiB,SAAS,eAAe,cAAc;AAE3D,MAAI,gBAAgB;AAEnB,aAAS,uBAAuB,cAAc;AAAA,EAAA,OAExC;AACW,qBAAA,SAAS,cAAc,KAAK;AAC7C,mBAAe,KAAK;AACX,aAAA,KAAK,YAAY,cAAc;AAAA,EAAA;AAGlC,SAAA;AACR;AAEA,MAAM,kBAAkB,CAAC,aAAyC;AAC3D,QAAA,WAAW,IAAI,SAAS;AAE5B,SAAe,SAAS;AACnB,SAAA,iBAAiB,SAAS,CAAK,MAAA;AACrC,QAAI,EAAE,QAAQ,WAAW,gBAAgB,GAAG;AAE3C;AAAA,IAAA;AAEQ,aAAA,YAAY,mBAAmB,EAAE,KAAK;AAAA,EAAA,CAC/C;AAEM,SAAA,iBAAiB,sBAAsB,CAAK,MAAA,SAAS,YAAY,+BAA+B,EAAE,MAAM,CAAC;AAEhH,QAAM,cAAc,QAAQ;AACpB,UAAA,QAAQ,IAAI,SAAS;AAC5B,gBAAY,GAAG,IAAI;AACnB,eAAW,OAAO,MAAM;AACvB,UAAI,eAAe,OAAO;AAChB,iBAAA,YAAY,gBAAgB,GAAG;AAAA,MAAA;AAAA,IACzC;AAAA,EAEF;AACS,WAAA,qBAAsB,uBAAA,iBAAA,EAAgB,KAAK,SAAtB,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAA,MAAgC,GAAI,MAAM;AAAA,EAAA,CAAE;AAE1E,SAAO,OAAM,OAAM;AACd,QAAA;AACH,YAAM,GAAG,CAAK,MAAA,SAAS,YAAY,2BAA2B,CAAC,CAAC;AAAA,aACxD,GAAG;AACF,eAAA,YAAY,oBAAoB,CAAC;AAAA,IAAA;AAAA,EAE5C;AACD;AAwBa,MAAA,qBAAqB,CAAC,aAAiC;AAC1C;AACxB,WAAO,gBAAgB,QAAQ;AAAA,EAAA;AAIjC;"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __copyProps = (to, from, except, desc) => {
|
|
9
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
-
for (let key of __getOwnPropNames(from))
|
|
11
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
12
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
13
|
-
}
|
|
14
|
-
return to;
|
|
15
|
-
};
|
|
16
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
17
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
18
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
19
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
20
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
21
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
-
mod
|
|
23
|
-
));
|
|
24
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
25
|
-
const React = require("react");
|
|
26
|
-
const parseStacktrace = async (e) => {
|
|
27
|
-
let StackTracey;
|
|
28
|
-
try {
|
|
29
|
-
StackTracey = (await import("stacktracey")).default;
|
|
30
|
-
} catch {
|
|
31
|
-
return void 0;
|
|
32
|
-
}
|
|
33
|
-
return (await new StackTracey(e).withSourcesAsync()).items.map((it) => ({
|
|
34
|
-
filename: it.fileShort,
|
|
35
|
-
line: it.line,
|
|
36
|
-
callee: it.callee,
|
|
37
|
-
thirdParty: it.thirdParty,
|
|
38
|
-
sourceCodeLines: it.sourceFile?.lines
|
|
39
|
-
}));
|
|
40
|
-
};
|
|
41
|
-
const createInitialError = (e) => ({
|
|
42
|
-
error: e,
|
|
43
|
-
cause: e instanceof Error && "cause" in e && e.cause !== void 0 ? createInitialError(e.cause) : void 0
|
|
44
|
-
});
|
|
45
|
-
const useProcessedError = (e) => {
|
|
46
|
-
const [error, setError] = React.useState(() => createInitialError(e));
|
|
47
|
-
React.useEffect(() => {
|
|
48
|
-
setError(createInitialError(e));
|
|
49
|
-
if (!(e instanceof Error)) {
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const createErrorWithStackTrace = async (e2) => {
|
|
53
|
-
return {
|
|
54
|
-
error: e2,
|
|
55
|
-
parsedStackStrace: e2 instanceof Error ? await parseStacktrace(e2) : void 0,
|
|
56
|
-
cause: e2 instanceof Error && "cause" in e2 && e2.cause !== void 0 ? await createErrorWithStackTrace(e2.cause) : void 0
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
(async () => {
|
|
60
|
-
setError(await createErrorWithStackTrace(e));
|
|
61
|
-
})();
|
|
62
|
-
}, [e]);
|
|
63
|
-
return error;
|
|
64
|
-
};
|
|
65
|
-
exports.parseStacktrace = parseStacktrace;
|
|
66
|
-
exports.useProcessedError = useProcessedError;
|
|
67
|
-
//# sourceMappingURL=useParsedStacktrace.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useParsedStacktrace.cjs","sources":["../../../../../packages/react-devbar/src/hooks/useParsedStacktrace.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { ErrorType, ProcessedError } from '../ui/DevError'\n\nexport const parseStacktrace = async (e: Error) => {\n\tlet StackTracey\n\ttry {\n\t\tStackTracey = (await import('stacktracey')).default\n\t} catch {\n\t\treturn undefined\n\t}\n\treturn (await new StackTracey(e).withSourcesAsync()).items.map(it => ({\n\t\tfilename: it.fileShort,\n\t\tline: it.line,\n\t\tcallee: it.callee,\n\t\tthirdParty: it.thirdParty,\n\t\tsourceCodeLines: it.sourceFile?.lines,\n\t}))\n}\n\nconst createInitialError = (e: ErrorType): ProcessedError => ({\n\terror: e,\n\tcause: e instanceof Error && 'cause' in e && (e as any).cause !== undefined ? createInitialError((e as any).cause) : undefined,\n})\n\nexport const useProcessedError = (e: ErrorType): ProcessedError => {\n\tconst [error, setError] = useState<ProcessedError>(() => createInitialError(e))\n\tuseEffect(() => {\n\t\tsetError(createInitialError(e))\n\t\tif (!(e instanceof Error)) {\n\t\t\treturn\n\t\t}\n\t\tconst createErrorWithStackTrace = async (e: ErrorType): Promise<ProcessedError> => {\n\t\t\treturn {\n\t\t\t\terror: e,\n\t\t\t\tparsedStackStrace: e instanceof Error ? await parseStacktrace(e) : undefined,\n\t\t\t\tcause: e instanceof Error && 'cause' in e && (e as any).cause !== undefined ? await createErrorWithStackTrace((e as any).cause) : undefined,\n\t\t\t}\n\t\t}\n\t\t(async () => {\n\t\t\tsetError(await createErrorWithStackTrace(e))\n\t\t})()\n\t}, [e])\n\n\treturn error\n}\n"],"names":["useState","useEffect","e"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAGa,MAAA,kBAAkB,OAAO,MAAa;AAC9C,MAAA;AACA,MAAA;AACY,mBAAA,MAAM,OAAO,aAAa,GAAG;AAAA,EAAA,QACrC;AACA,WAAA;AAAA,EAAA;AAEA,UAAA,MAAM,IAAI,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAO,QAAA;AAAA,IACrE,UAAU,GAAG;AAAA,IACb,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,YAAY,GAAG;AAAA,IACf,iBAAiB,GAAG,YAAY;AAAA,EAAA,EAC/B;AACH;AAEA,MAAM,qBAAqB,CAAC,OAAkC;AAAA,EAC7D,OAAO;AAAA,EACP,OAAO,aAAa,SAAS,WAAW,KAAM,EAAU,UAAU,SAAY,mBAAoB,EAAU,KAAK,IAAI;AACtH;AAEa,MAAA,oBAAoB,CAAC,MAAiC;AAC5D,QAAA,CAAC,OAAO,QAAQ,IAAIA,eAAyB,MAAM,mBAAmB,CAAC,CAAC;AAC9EC,QAAAA,UAAU,MAAM;AACN,aAAA,mBAAmB,CAAC,CAAC;AAC1B,QAAA,EAAE,aAAa,QAAQ;AAC1B;AAAA,IAAA;AAEK,UAAA,4BAA4B,OAAOC,OAA0C;AAC3E,aAAA;AAAA,QACN,OAAOA;AAAAA,QACP,mBAAmBA,cAAa,QAAQ,MAAM,gBAAgBA,EAAC,IAAI;AAAA,QACnE,OAAOA,cAAa,SAAS,WAAWA,MAAMA,GAAU,UAAU,SAAY,MAAM,0BAA2BA,GAAU,KAAK,IAAI;AAAA,MACnI;AAAA,IACD;AACA,KAAC,YAAY;AACH,eAAA,MAAM,0BAA0B,CAAC,CAAC;AAAA,IAAA,GACzC;AAAA,EAAA,GACD,CAAC,CAAC,CAAC;AAEC,SAAA;AACR;;;"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from "react";
|
|
2
|
-
const parseStacktrace = async (e) => {
|
|
3
|
-
let StackTracey;
|
|
4
|
-
try {
|
|
5
|
-
StackTracey = (await import("stacktracey")).default;
|
|
6
|
-
} catch {
|
|
7
|
-
return void 0;
|
|
8
|
-
}
|
|
9
|
-
return (await new StackTracey(e).withSourcesAsync()).items.map((it) => ({
|
|
10
|
-
filename: it.fileShort,
|
|
11
|
-
line: it.line,
|
|
12
|
-
callee: it.callee,
|
|
13
|
-
thirdParty: it.thirdParty,
|
|
14
|
-
sourceCodeLines: it.sourceFile?.lines
|
|
15
|
-
}));
|
|
16
|
-
};
|
|
17
|
-
const createInitialError = (e) => ({
|
|
18
|
-
error: e,
|
|
19
|
-
cause: e instanceof Error && "cause" in e && e.cause !== void 0 ? createInitialError(e.cause) : void 0
|
|
20
|
-
});
|
|
21
|
-
const useProcessedError = (e) => {
|
|
22
|
-
const [error, setError] = useState(() => createInitialError(e));
|
|
23
|
-
useEffect(() => {
|
|
24
|
-
setError(createInitialError(e));
|
|
25
|
-
if (!(e instanceof Error)) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
const createErrorWithStackTrace = async (e2) => {
|
|
29
|
-
return {
|
|
30
|
-
error: e2,
|
|
31
|
-
parsedStackStrace: e2 instanceof Error ? await parseStacktrace(e2) : void 0,
|
|
32
|
-
cause: e2 instanceof Error && "cause" in e2 && e2.cause !== void 0 ? await createErrorWithStackTrace(e2.cause) : void 0
|
|
33
|
-
};
|
|
34
|
-
};
|
|
35
|
-
(async () => {
|
|
36
|
-
setError(await createErrorWithStackTrace(e));
|
|
37
|
-
})();
|
|
38
|
-
}, [e]);
|
|
39
|
-
return error;
|
|
40
|
-
};
|
|
41
|
-
export {
|
|
42
|
-
parseStacktrace,
|
|
43
|
-
useProcessedError
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=useParsedStacktrace.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useParsedStacktrace.js","sources":["../../../../../packages/react-devbar/src/hooks/useParsedStacktrace.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport { ErrorType, ProcessedError } from '../ui/DevError'\n\nexport const parseStacktrace = async (e: Error) => {\n\tlet StackTracey\n\ttry {\n\t\tStackTracey = (await import('stacktracey')).default\n\t} catch {\n\t\treturn undefined\n\t}\n\treturn (await new StackTracey(e).withSourcesAsync()).items.map(it => ({\n\t\tfilename: it.fileShort,\n\t\tline: it.line,\n\t\tcallee: it.callee,\n\t\tthirdParty: it.thirdParty,\n\t\tsourceCodeLines: it.sourceFile?.lines,\n\t}))\n}\n\nconst createInitialError = (e: ErrorType): ProcessedError => ({\n\terror: e,\n\tcause: e instanceof Error && 'cause' in e && (e as any).cause !== undefined ? createInitialError((e as any).cause) : undefined,\n})\n\nexport const useProcessedError = (e: ErrorType): ProcessedError => {\n\tconst [error, setError] = useState<ProcessedError>(() => createInitialError(e))\n\tuseEffect(() => {\n\t\tsetError(createInitialError(e))\n\t\tif (!(e instanceof Error)) {\n\t\t\treturn\n\t\t}\n\t\tconst createErrorWithStackTrace = async (e: ErrorType): Promise<ProcessedError> => {\n\t\t\treturn {\n\t\t\t\terror: e,\n\t\t\t\tparsedStackStrace: e instanceof Error ? await parseStacktrace(e) : undefined,\n\t\t\t\tcause: e instanceof Error && 'cause' in e && (e as any).cause !== undefined ? await createErrorWithStackTrace((e as any).cause) : undefined,\n\t\t\t}\n\t\t}\n\t\t(async () => {\n\t\t\tsetError(await createErrorWithStackTrace(e))\n\t\t})()\n\t}, [e])\n\n\treturn error\n}\n"],"names":["e"],"mappings":";AAGa,MAAA,kBAAkB,OAAO,MAAa;AAC9C,MAAA;AACA,MAAA;AACY,mBAAA,MAAM,OAAO,aAAa,GAAG;AAAA,EAAA,QACrC;AACA,WAAA;AAAA,EAAA;AAEA,UAAA,MAAM,IAAI,YAAY,CAAC,EAAE,iBAAiB,GAAG,MAAM,IAAI,CAAO,QAAA;AAAA,IACrE,UAAU,GAAG;AAAA,IACb,MAAM,GAAG;AAAA,IACT,QAAQ,GAAG;AAAA,IACX,YAAY,GAAG;AAAA,IACf,iBAAiB,GAAG,YAAY;AAAA,EAAA,EAC/B;AACH;AAEA,MAAM,qBAAqB,CAAC,OAAkC;AAAA,EAC7D,OAAO;AAAA,EACP,OAAO,aAAa,SAAS,WAAW,KAAM,EAAU,UAAU,SAAY,mBAAoB,EAAU,KAAK,IAAI;AACtH;AAEa,MAAA,oBAAoB,CAAC,MAAiC;AAC5D,QAAA,CAAC,OAAO,QAAQ,IAAI,SAAyB,MAAM,mBAAmB,CAAC,CAAC;AAC9E,YAAU,MAAM;AACN,aAAA,mBAAmB,CAAC,CAAC;AAC1B,QAAA,EAAE,aAAa,QAAQ;AAC1B;AAAA,IAAA;AAEK,UAAA,4BAA4B,OAAOA,OAA0C;AAC3E,aAAA;AAAA,QACN,OAAOA;AAAAA,QACP,mBAAmBA,cAAa,QAAQ,MAAM,gBAAgBA,EAAC,IAAI;AAAA,QACnE,OAAOA,cAAa,SAAS,WAAWA,MAAMA,GAAU,UAAU,SAAY,MAAM,0BAA2BA,GAAU,KAAK,IAAI;AAAA,MACnI;AAAA,IACD;AACA,KAAC,YAAY;AACH,eAAA,MAAM,0BAA0B,CAAC,CAAC;AAAA,IAAA,GACzC;AAAA,EAAA,GACD,CAAC,CAAC,CAAC;AAEC,SAAA;AACR;"}
|
|
@@ -1,191 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
|
-
const reactUtils = require("@contember/react-utils");
|
|
5
|
-
const utilities = require("@contember/utilities");
|
|
6
|
-
const React = require("react");
|
|
7
|
-
const className = (cls) => cls ? `cui-devBar-${cls}` : "cui-devBar";
|
|
8
|
-
const DevBar = ({
|
|
9
|
-
breakpoint = 768,
|
|
10
|
-
children
|
|
11
|
-
}) => {
|
|
12
|
-
const [expanded, setExpanded] = React.useState(false);
|
|
13
|
-
const isSmallScreen = reactUtils.useWindowSize().width < breakpoint;
|
|
14
|
-
const handleToggle = reactUtils.useReferentiallyStableCallback(() => {
|
|
15
|
-
setExpanded((expanded2) => !expanded2);
|
|
16
|
-
});
|
|
17
|
-
React.useEffect(() => {
|
|
18
|
-
function handleKeyDown(event) {
|
|
19
|
-
if (event.code === "KeyJ" && (event.ctrlKey || event.metaKey)) {
|
|
20
|
-
event.preventDefault();
|
|
21
|
-
event.stopPropagation();
|
|
22
|
-
handleToggle();
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
document.addEventListener("keydown", handleKeyDown);
|
|
26
|
-
return () => document.removeEventListener("keydown", handleKeyDown);
|
|
27
|
-
}, [expanded, handleToggle]);
|
|
28
|
-
const devBarContentRef = React.useRef(null);
|
|
29
|
-
reactUtils.useOnElementClickOutsideCallback(devBarContentRef, () => {
|
|
30
|
-
if (expanded) {
|
|
31
|
-
setExpanded(false);
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
const id = `dev-bar-panel${reactUtils.useId()}`;
|
|
35
|
-
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(
|
|
36
|
-
"section",
|
|
37
|
-
{
|
|
38
|
-
"data-transparent": "true",
|
|
39
|
-
"data-overrides-lucide-icons": "true",
|
|
40
|
-
"data-expanded": utilities.dataAttribute(expanded),
|
|
41
|
-
"data-small-screen": utilities.dataAttribute(isSmallScreen),
|
|
42
|
-
className: className(null),
|
|
43
|
-
children: /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { ref: devBarContentRef, className: className("content"), children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(
|
|
44
|
-
"div",
|
|
45
|
-
{
|
|
46
|
-
"data-expanded": true,
|
|
47
|
-
id,
|
|
48
|
-
role: "dialog",
|
|
49
|
-
style: { display: "contents" },
|
|
50
|
-
children: /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("panels"), children }, void 0, false, {
|
|
51
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
52
|
-
lineNumber: 64,
|
|
53
|
-
columnNumber: 6
|
|
54
|
-
}, void 0)
|
|
55
|
-
},
|
|
56
|
-
void 0,
|
|
57
|
-
false,
|
|
58
|
-
{
|
|
59
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
60
|
-
lineNumber: 58,
|
|
61
|
-
columnNumber: 5
|
|
62
|
-
},
|
|
63
|
-
void 0
|
|
64
|
-
) }, void 0, false, {
|
|
65
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
66
|
-
lineNumber: 57,
|
|
67
|
-
columnNumber: 4
|
|
68
|
-
}, void 0)
|
|
69
|
-
},
|
|
70
|
-
void 0,
|
|
71
|
-
false,
|
|
72
|
-
{
|
|
73
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
74
|
-
lineNumber: 50,
|
|
75
|
-
columnNumber: 3
|
|
76
|
-
},
|
|
77
|
-
void 0
|
|
78
|
-
);
|
|
79
|
-
};
|
|
80
|
-
const DevPanel = ({ heading, icon, children, preview }) => {
|
|
81
|
-
const id = `cui-devBar-panel-${reactUtils.useId()}`;
|
|
82
|
-
const dialogRef = React.useRef(null);
|
|
83
|
-
const triggerRef = React.useRef(null);
|
|
84
|
-
const handleOpen = React.useCallback(() => {
|
|
85
|
-
dialogRef.current?.showModal();
|
|
86
|
-
}, []);
|
|
87
|
-
const handleClose = React.useCallback(() => {
|
|
88
|
-
dialogRef.current?.close();
|
|
89
|
-
}, []);
|
|
90
|
-
React.useEffect(() => {
|
|
91
|
-
const dialog = dialogRef.current;
|
|
92
|
-
if (!dialog) return;
|
|
93
|
-
const handleClickOutside = (event) => {
|
|
94
|
-
const rect = dialog.getBoundingClientRect();
|
|
95
|
-
const isInDialog = rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;
|
|
96
|
-
if (!isInDialog) {
|
|
97
|
-
dialog.close();
|
|
98
|
-
}
|
|
99
|
-
};
|
|
100
|
-
dialog.addEventListener("click", handleClickOutside);
|
|
101
|
-
return () => dialog.removeEventListener("click", handleClickOutside);
|
|
102
|
-
}, []);
|
|
103
|
-
React.useEffect(() => {
|
|
104
|
-
const handleEscape = (event) => {
|
|
105
|
-
if (event.key === "Escape") {
|
|
106
|
-
handleClose();
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
document.addEventListener("keydown", handleEscape);
|
|
110
|
-
return () => document.removeEventListener("keydown", handleEscape);
|
|
111
|
-
}, [handleClose]);
|
|
112
|
-
return /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("trigger"), children: [
|
|
113
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV(
|
|
114
|
-
"button",
|
|
115
|
-
{
|
|
116
|
-
ref: triggerRef,
|
|
117
|
-
tabIndex: 0,
|
|
118
|
-
"aria-haspopup": "dialog",
|
|
119
|
-
"aria-controls": id,
|
|
120
|
-
className: className("trigger-label"),
|
|
121
|
-
onClick: handleOpen,
|
|
122
|
-
children: [
|
|
123
|
-
icon,
|
|
124
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV("span", { className: className("trigger-label-text"), children: preview ?? heading }, void 0, false, {
|
|
125
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
126
|
-
lineNumber: 137,
|
|
127
|
-
columnNumber: 5
|
|
128
|
-
}, void 0)
|
|
129
|
-
]
|
|
130
|
-
},
|
|
131
|
-
void 0,
|
|
132
|
-
true,
|
|
133
|
-
{
|
|
134
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
135
|
-
lineNumber: 128,
|
|
136
|
-
columnNumber: 4
|
|
137
|
-
},
|
|
138
|
-
void 0
|
|
139
|
-
),
|
|
140
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV("dialog", { ref: dialogRef, id, className: className("panel"), children: /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("panel-content"), children: [
|
|
141
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("panel-header"), children: [
|
|
142
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV("h2", { className: "h4", children: heading }, void 0, false, {
|
|
143
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
144
|
-
lineNumber: 145,
|
|
145
|
-
columnNumber: 7
|
|
146
|
-
}, void 0),
|
|
147
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV(
|
|
148
|
-
"button",
|
|
149
|
-
{
|
|
150
|
-
onClick: handleClose,
|
|
151
|
-
className: className("close-button"),
|
|
152
|
-
"aria-label": "Close",
|
|
153
|
-
children: "✕"
|
|
154
|
-
},
|
|
155
|
-
void 0,
|
|
156
|
-
false,
|
|
157
|
-
{
|
|
158
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
159
|
-
lineNumber: 146,
|
|
160
|
-
columnNumber: 7
|
|
161
|
-
},
|
|
162
|
-
void 0
|
|
163
|
-
)
|
|
164
|
-
] }, void 0, true, {
|
|
165
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
166
|
-
lineNumber: 144,
|
|
167
|
-
columnNumber: 6
|
|
168
|
-
}, void 0),
|
|
169
|
-
/* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("panel-body"), children }, void 0, false, {
|
|
170
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
171
|
-
lineNumber: 154,
|
|
172
|
-
columnNumber: 6
|
|
173
|
-
}, void 0)
|
|
174
|
-
] }, void 0, true, {
|
|
175
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
176
|
-
lineNumber: 143,
|
|
177
|
-
columnNumber: 5
|
|
178
|
-
}, void 0) }, void 0, false, {
|
|
179
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
180
|
-
lineNumber: 142,
|
|
181
|
-
columnNumber: 4
|
|
182
|
-
}, void 0)
|
|
183
|
-
] }, void 0, true, {
|
|
184
|
-
fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevBar/DevBar.tsx",
|
|
185
|
-
lineNumber: 127,
|
|
186
|
-
columnNumber: 3
|
|
187
|
-
}, void 0);
|
|
188
|
-
};
|
|
189
|
-
exports.DevBar = DevBar;
|
|
190
|
-
exports.DevPanel = DevPanel;
|
|
191
|
-
//# sourceMappingURL=DevBar.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevBar.cjs","sources":["../../../../../../packages/react-devbar/src/ui/DevBar/DevBar.tsx"],"sourcesContent":["import {\n\tuseId,\n\tuseOnElementClickOutsideCallback,\n\tuseReferentiallyStableCallback,\n\tuseWindowSize,\n} from '@contember/react-utils'\nimport { dataAttribute } from '@contember/utilities'\nimport { PropsWithChildren, ReactNode, useCallback, useEffect, useRef, useState } from 'react'\n\nconst className = (cls: string | null) => cls ? `cui-devBar-${cls}` : 'cui-devBar'\n\nexport const DevBar = ({\n\tbreakpoint = 768,\n\tchildren,\n}: PropsWithChildren<{\n\tbreakpoint?: number\n}>) => {\n\tconst [expanded, setExpanded] = useState(false)\n\tconst isSmallScreen = useWindowSize().width < breakpoint\n\n\tconst handleToggle = useReferentiallyStableCallback(() => {\n\t\tsetExpanded(expanded => !expanded)\n\t})\n\n\tuseEffect(() => {\n\t\tfunction handleKeyDown(event: KeyboardEvent) {\n\t\t\tif (event.code === 'KeyJ' && (event.ctrlKey || event.metaKey)) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tevent.stopPropagation()\n\n\t\t\t\thandleToggle()\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('keydown', handleKeyDown)\n\t\treturn () => document.removeEventListener('keydown', handleKeyDown)\n\t}, [expanded, handleToggle])\n\n\tconst devBarContentRef = useRef<HTMLDivElement>(null)\n\n\tuseOnElementClickOutsideCallback(devBarContentRef, () => {\n\t\tif (expanded) {\n\t\t\tsetExpanded(false)\n\t\t}\n\t})\n\n\tconst id = `dev-bar-panel${useId()}`\n\n\treturn (\n\t\t<section\n\t\t\tdata-transparent=\"true\"\n\t\t\tdata-overrides-lucide-icons=\"true\"\n\t\t\tdata-expanded={dataAttribute(expanded)}\n\t\t\tdata-small-screen={dataAttribute(isSmallScreen)}\n\t\t\tclassName={className(null)}\n\t\t>\n\t\t\t<div ref={devBarContentRef} className={className('content')}>\n\t\t\t\t<div\n\t\t\t\t\tdata-expanded={true}\n\t\t\t\t\tid={id}\n\t\t\t\t\trole=\"dialog\"\n\t\t\t\t\tstyle={{ display: 'contents' }}\n\t\t\t\t>\n\t\t\t\t\t<div className={className('panels')}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</section>\n\t)\n}\n\ninterface DevPanelProps {\n\ticon: ReactNode\n\theading: ReactNode\n\tchildren: ReactNode\n\tpreview?: ReactNode\n}\n\nexport const DevPanel = ({ heading, icon, children, preview }: DevPanelProps) => {\n\tconst id = `cui-devBar-panel-${useId()}`\n\tconst dialogRef = useRef<HTMLDialogElement>(null)\n\tconst triggerRef = useRef<HTMLButtonElement>(null)\n\n\tconst handleOpen = useCallback(() => {\n\t\tdialogRef.current?.showModal()\n\t}, [])\n\n\tconst handleClose = useCallback(() => {\n\t\tdialogRef.current?.close()\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst dialog = dialogRef.current\n\t\tif (!dialog) return\n\n\t\tconst handleClickOutside = (event: MouseEvent) => {\n\t\t\tconst rect = dialog.getBoundingClientRect()\n\t\t\tconst isInDialog = (\n\t\t\t\trect.top <= event.clientY &&\n\t\t\t\tevent.clientY <= rect.top + rect.height &&\n\t\t\t\trect.left <= event.clientX &&\n\t\t\t\tevent.clientX <= rect.left + rect.width\n\t\t\t)\n\n\t\t\tif (!isInDialog) {\n\t\t\t\tdialog.close()\n\t\t\t}\n\t\t}\n\n\t\tdialog.addEventListener('click', handleClickOutside)\n\t\treturn () => dialog.removeEventListener('click', handleClickOutside)\n\t}, [])\n\n\tuseEffect(() => {\n\t\tconst handleEscape = (event: KeyboardEvent) => {\n\t\t\tif (event.key === 'Escape') {\n\t\t\t\thandleClose()\n\t\t\t}\n\t\t}\n\n\t\tdocument.addEventListener('keydown', handleEscape)\n\t\treturn () => document.removeEventListener('keydown', handleEscape)\n\t}, [handleClose])\n\n\treturn (\n\t\t<div className={className('trigger')}>\n\t\t\t<button\n\t\t\t\tref={triggerRef}\n\t\t\t\ttabIndex={0}\n\t\t\t\taria-haspopup=\"dialog\"\n\t\t\t\taria-controls={id}\n\t\t\t\tclassName={className('trigger-label')}\n\t\t\t\tonClick={handleOpen}\n\t\t\t>\n\t\t\t\t{icon}\n\t\t\t\t<span className={className('trigger-label-text')}>\n\t\t\t\t\t{preview ?? heading}\n\t\t\t\t</span>\n\t\t\t</button>\n\n\t\t\t<dialog ref={dialogRef} id={id} className={className('panel')}>\n\t\t\t\t<div className={className('panel-content')}>\n\t\t\t\t\t<div className={className('panel-header')}>\n\t\t\t\t\t\t<h2 className=\"h4\">{heading}</h2>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonClick={handleClose}\n\t\t\t\t\t\t\tclassName={className('close-button')}\n\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t✕\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className={className('panel-body')}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</dialog>\n\t\t</div>\n\t)\n}\n"],"names":["useState","useWindowSize","useReferentiallyStableCallback","expanded","useEffect","useRef","useOnElementClickOutsideCallback","useId","jsxDEV","dataAttribute","this","useCallback"],"mappings":"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"}
|