@contember/react-devbar 2.1.0-alpha.36 → 2.1.0-alpha.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/development/index.cjs +17 -0
  2. package/dist/development/index.cjs.map +1 -0
  3. package/dist/development/index.js +17 -0
  4. package/dist/development/index.js.map +1 -0
  5. package/dist/development/src/DevErrorManager.cjs +110 -0
  6. package/dist/development/src/DevErrorManager.cjs.map +1 -0
  7. package/dist/development/src/DevErrorManager.js +110 -0
  8. package/dist/development/src/DevErrorManager.js.map +1 -0
  9. package/dist/development/src/errorHandling.cjs +55 -0
  10. package/dist/development/src/errorHandling.cjs.map +1 -0
  11. package/dist/development/src/errorHandling.js +55 -0
  12. package/dist/development/src/errorHandling.js.map +1 -0
  13. package/dist/development/src/hooks/useCopyErrorMarkdown.cjs +101 -0
  14. package/dist/development/src/hooks/useCopyErrorMarkdown.cjs.map +1 -0
  15. package/dist/development/src/hooks/useCopyErrorMarkdown.js +101 -0
  16. package/dist/development/src/hooks/useCopyErrorMarkdown.js.map +1 -0
  17. package/dist/development/src/hooks/useParsedStacktrace.cjs +67 -0
  18. package/dist/development/src/hooks/useParsedStacktrace.cjs.map +1 -0
  19. package/dist/development/src/hooks/useParsedStacktrace.js +45 -0
  20. package/dist/development/src/hooks/useParsedStacktrace.js.map +1 -0
  21. package/dist/development/src/ui/DevBar/DevBar.cjs +193 -0
  22. package/dist/development/src/ui/DevBar/DevBar.cjs.map +1 -0
  23. package/dist/development/src/ui/DevBar/DevBar.js +193 -0
  24. package/dist/development/src/ui/DevBar/DevBar.js.map +1 -0
  25. package/dist/development/src/ui/DevError/DevError.cjs +33 -0
  26. package/dist/development/src/ui/DevError/DevError.cjs.map +1 -0
  27. package/dist/development/src/ui/DevError/DevError.js +33 -0
  28. package/dist/development/src/ui/DevError/DevError.js.map +1 -0
  29. package/dist/development/src/ui/DevError/DevErrorBadge.cjs +21 -0
  30. package/dist/development/src/ui/DevError/DevErrorBadge.cjs.map +1 -0
  31. package/dist/development/src/ui/DevError/DevErrorBadge.js +21 -0
  32. package/dist/development/src/ui/DevError/DevErrorBadge.js.map +1 -0
  33. package/dist/development/src/ui/DevError/DevErrorCopy.cjs +36 -0
  34. package/dist/development/src/ui/DevError/DevErrorCopy.cjs.map +1 -0
  35. package/dist/development/src/ui/DevError/DevErrorCopy.js +36 -0
  36. package/dist/development/src/ui/DevError/DevErrorCopy.js.map +1 -0
  37. package/dist/development/src/ui/DevError/DevErrorInner.cjs +79 -0
  38. package/dist/development/src/ui/DevError/DevErrorInner.cjs.map +1 -0
  39. package/dist/development/src/ui/DevError/DevErrorInner.js +79 -0
  40. package/dist/development/src/ui/DevError/DevErrorInner.js.map +1 -0
  41. package/dist/development/src/ui/DevError/DevErrorList.cjs +119 -0
  42. package/dist/development/src/ui/DevError/DevErrorList.cjs.map +1 -0
  43. package/dist/development/src/ui/DevError/DevErrorList.js +119 -0
  44. package/dist/development/src/ui/DevError/DevErrorList.js.map +1 -0
  45. package/dist/development/src/ui/DevError/StackTrace.cjs +82 -0
  46. package/dist/development/src/ui/DevError/StackTrace.cjs.map +1 -0
  47. package/dist/development/src/ui/DevError/StackTrace.js +82 -0
  48. package/dist/development/src/ui/DevError/StackTrace.js.map +1 -0
  49. package/dist/production/index.cjs +17 -0
  50. package/dist/production/index.cjs.map +1 -0
  51. package/dist/production/index.js +17 -0
  52. package/dist/production/index.js.map +1 -0
  53. package/dist/production/src/errorHandling.cjs +39 -0
  54. package/dist/production/src/errorHandling.cjs.map +1 -0
  55. package/dist/production/src/errorHandling.js +39 -0
  56. package/dist/production/src/errorHandling.js.map +1 -0
  57. package/dist/production/src/hooks/useCopyErrorMarkdown.cjs +101 -0
  58. package/dist/production/src/hooks/useCopyErrorMarkdown.cjs.map +1 -0
  59. package/dist/production/src/hooks/useCopyErrorMarkdown.js +101 -0
  60. package/dist/production/src/hooks/useCopyErrorMarkdown.js.map +1 -0
  61. package/dist/production/src/hooks/useParsedStacktrace.cjs +67 -0
  62. package/dist/production/src/hooks/useParsedStacktrace.cjs.map +1 -0
  63. package/dist/production/src/hooks/useParsedStacktrace.js +45 -0
  64. package/dist/production/src/hooks/useParsedStacktrace.js.map +1 -0
  65. package/dist/production/src/ui/DevBar/DevBar.cjs +125 -0
  66. package/dist/production/src/ui/DevBar/DevBar.cjs.map +1 -0
  67. package/dist/production/src/ui/DevBar/DevBar.js +125 -0
  68. package/dist/production/src/ui/DevBar/DevBar.js.map +1 -0
  69. package/dist/production/src/ui/DevError/DevError.cjs +13 -0
  70. package/dist/production/src/ui/DevError/DevError.cjs.map +1 -0
  71. package/dist/production/src/ui/DevError/DevError.js +13 -0
  72. package/dist/production/src/ui/DevError/DevError.js.map +1 -0
  73. package/dist/production/src/ui/DevError/DevErrorBadge.cjs +13 -0
  74. package/dist/production/src/ui/DevError/DevErrorBadge.cjs.map +1 -0
  75. package/dist/production/src/ui/DevError/DevErrorBadge.js +13 -0
  76. package/dist/production/src/ui/DevError/DevErrorBadge.js.map +1 -0
  77. package/dist/production/src/ui/DevError/DevErrorCopy.cjs +28 -0
  78. package/dist/production/src/ui/DevError/DevErrorCopy.cjs.map +1 -0
  79. package/dist/production/src/ui/DevError/DevErrorCopy.js +28 -0
  80. package/dist/production/src/ui/DevError/DevErrorCopy.js.map +1 -0
  81. package/dist/production/src/ui/DevError/DevErrorInner.cjs +23 -0
  82. package/dist/production/src/ui/DevError/DevErrorInner.cjs.map +1 -0
  83. package/dist/production/src/ui/DevError/DevErrorInner.js +23 -0
  84. package/dist/production/src/ui/DevError/DevErrorInner.js.map +1 -0
  85. package/dist/production/src/ui/DevError/DevErrorList.cjs +51 -0
  86. package/dist/production/src/ui/DevError/DevErrorList.cjs.map +1 -0
  87. package/dist/production/src/ui/DevError/DevErrorList.js +51 -0
  88. package/dist/production/src/ui/DevError/DevErrorList.js.map +1 -0
  89. package/dist/production/src/ui/DevError/StackTrace.cjs +39 -0
  90. package/dist/production/src/ui/DevError/StackTrace.cjs.map +1 -0
  91. package/dist/production/src/ui/DevError/StackTrace.js +39 -0
  92. package/dist/production/src/ui/DevError/StackTrace.js.map +1 -0
  93. package/dist/types/DevErrorManager.d.ts +15 -0
  94. package/dist/types/DevErrorManager.d.ts.map +1 -0
  95. package/dist/types/errorHandling.d.ts +6 -0
  96. package/dist/types/errorHandling.d.ts.map +1 -0
  97. package/dist/types/hooks/useCopyErrorMarkdown.d.ts +12 -0
  98. package/dist/types/hooks/useCopyErrorMarkdown.d.ts.map +1 -0
  99. package/dist/types/hooks/useParsedStacktrace.d.ts +10 -0
  100. package/dist/types/hooks/useParsedStacktrace.d.ts.map +1 -0
  101. package/dist/types/index.d.ts +5 -0
  102. package/dist/types/index.d.ts.map +1 -0
  103. package/dist/types/tsconfig.tsbuildinfo +1 -0
  104. package/dist/types/ui/DevBar/DevBar.d.ts +13 -0
  105. package/dist/types/ui/DevBar/DevBar.d.ts.map +1 -0
  106. package/dist/types/ui/DevBar/index.d.ts +2 -0
  107. package/dist/types/ui/DevBar/index.d.ts.map +1 -0
  108. package/dist/types/ui/DevError/DevError.d.ts +6 -0
  109. package/dist/types/ui/DevError/DevError.d.ts.map +1 -0
  110. package/dist/types/ui/DevError/DevErrorBadge.d.ts +7 -0
  111. package/dist/types/ui/DevError/DevErrorBadge.d.ts.map +1 -0
  112. package/dist/types/ui/DevError/DevErrorCopy.d.ts +6 -0
  113. package/dist/types/ui/DevError/DevErrorCopy.d.ts.map +1 -0
  114. package/dist/types/ui/DevError/DevErrorInner.d.ts +7 -0
  115. package/dist/types/ui/DevError/DevErrorInner.d.ts.map +1 -0
  116. package/dist/types/ui/DevError/DevErrorList.d.ts +13 -0
  117. package/dist/types/ui/DevError/DevErrorList.d.ts.map +1 -0
  118. package/dist/types/ui/DevError/StackTrace.d.ts +5 -0
  119. package/dist/types/ui/DevError/StackTrace.d.ts.map +1 -0
  120. package/dist/types/ui/DevError/index.d.ts +5 -0
  121. package/dist/types/ui/DevError/index.d.ts.map +1 -0
  122. package/dist/types/ui/DevError/types.d.ts +15 -0
  123. package/dist/types/ui/DevError/types.d.ts.map +1 -0
  124. package/package.json +10 -10
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxDevRuntime = require("react/jsx-dev-runtime");
4
+ const className = (cls) => cls ? `cui-devError-${cls}` : "cui-devError";
5
+ const StackTrace = ({ stackTrace }) => {
6
+ return /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stack"), children: stackTrace.map((it, index) => /* @__PURE__ */ jsxDevRuntime.jsxDEV(StackFrame, { stackFrame: it }, index, false, {
7
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
8
+ lineNumber: 7,
9
+ columnNumber: 35
10
+ }, void 0)) }, void 0, false, {
11
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
12
+ lineNumber: 6,
13
+ columnNumber: 3
14
+ }, void 0);
15
+ };
16
+ const StackFrame = ({ stackFrame }) => {
17
+ const line = stackFrame.line;
18
+ return /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrame"), children: [
19
+ /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameHeader"), children: [
20
+ /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameSource"), children: [
21
+ stackFrame.filename,
22
+ ":",
23
+ line
24
+ ] }, void 0, true, {
25
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
26
+ lineNumber: 18,
27
+ columnNumber: 5
28
+ }, void 0),
29
+ stackFrame.callee && /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameCallee"), children: stackFrame.callee }, void 0, false, {
30
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
31
+ lineNumber: 21,
32
+ columnNumber: 27
33
+ }, void 0)
34
+ ] }, void 0, true, {
35
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
36
+ lineNumber: 17,
37
+ columnNumber: 4
38
+ }, void 0),
39
+ line !== void 0 && stackFrame.sourceCodeLines && /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameCode"), children: stackFrame.sourceCodeLines.map((it, index) => {
40
+ const lineNumber = index + 1;
41
+ if (lineNumber + 5 < line || lineNumber - 3 > line) {
42
+ return null;
43
+ }
44
+ return /* @__PURE__ */ jsxDevRuntime.jsxDEV(
45
+ "div",
46
+ {
47
+ className: `${className("stackFrameLine")} ${lineNumber === line && "is-active"}`,
48
+ children: [
49
+ /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameLineNumber"), children: lineNumber }, void 0, false, {
50
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
51
+ lineNumber: 35,
52
+ columnNumber: 9
53
+ }, void 0),
54
+ /* @__PURE__ */ jsxDevRuntime.jsxDEV("div", { className: className("stackFrameLineCode"), children: it }, void 0, false, {
55
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
56
+ lineNumber: 36,
57
+ columnNumber: 9
58
+ }, void 0)
59
+ ]
60
+ },
61
+ lineNumber,
62
+ true,
63
+ {
64
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
65
+ lineNumber: 31,
66
+ columnNumber: 8
67
+ },
68
+ void 0
69
+ );
70
+ }) }, void 0, false, {
71
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
72
+ lineNumber: 24,
73
+ columnNumber: 5
74
+ }, void 0)
75
+ ] }, void 0, true, {
76
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
77
+ lineNumber: 16,
78
+ columnNumber: 3
79
+ }, void 0);
80
+ };
81
+ exports.StackTrace = StackTrace;
82
+ //# sourceMappingURL=StackTrace.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackTrace.cjs","sources":["../../../../../../packages/react-devbar/src/ui/DevError/StackTrace.tsx"],"sourcesContent":["import { ParsedStackFrame, ParsedStackTrace } from './types'\n\nconst className = (cls?: string | null) => cls ? `cui-devError-${cls}` : 'cui-devError'\nexport const StackTrace = ({ stackTrace }: { stackTrace: ParsedStackTrace }) => {\n\treturn (\n\t\t<div className={className('stack')}>\n\t\t\t{stackTrace.map((it, index) => <StackFrame stackFrame={it} key={index} />)}\n\t\t</div>\n\t)\n}\n\nconst StackFrame = ({ stackFrame }: { stackFrame: ParsedStackFrame }) => {\n\tconst line = stackFrame.line\n\n\treturn (\n\t\t<div className={className('stackFrame')}>\n\t\t\t<div className={className('stackFrameHeader')}>\n\t\t\t\t<div className={className('stackFrameSource')}>\n\t\t\t\t\t{stackFrame.filename}:{line}\n\t\t\t\t</div>\n\t\t\t\t{stackFrame.callee && <div className={className('stackFrameCallee')}>{stackFrame.callee}</div>}\n\t\t\t</div>\n\t\t\t{line !== undefined && stackFrame.sourceCodeLines && (\n\t\t\t\t<div className={className('stackFrameCode')}>\n\t\t\t\t\t{stackFrame.sourceCodeLines.map((it, index) => {\n\t\t\t\t\t\tconst lineNumber = index + 1\n\t\t\t\t\t\tif (lineNumber + 5 < line || lineNumber - 3 > line) {\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={`${className('stackFrameLine')} ${lineNumber === line && 'is-active'}`}\n\t\t\t\t\t\t\t\tkey={lineNumber}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={className('stackFrameLineNumber')}>{lineNumber}</div>\n\t\t\t\t\t\t\t\t<div className={className('stackFrameLineCode')}>{it}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n"],"names":["jsxDEV","this"],"mappings":";;;AAEA,MAAM,YAAY,CAAC,QAAwB,MAAM,gBAAgB,GAAG,KAAK;AAClE,MAAM,aAAa,CAAC,EAAE,iBAAmD;AAC/E,SACCA,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,OAAO,GAC/B,UAAA,WAAW,IAAI,CAAC,IAAI,UAAUA,8BAAAA,OAAC,YAAA,EAAW,YAAY,MAAS,OAAjC,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAAwC,CAAE,KAD1E,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAEA;AAEF;AAEA,MAAM,aAAa,CAAC,EAAE,iBAAmD;AACxE,QAAM,OAAO,WAAW;AAExB,SACCD,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,YAAY,GACrC,UAAA;AAAA,IAAAA,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAC3C,UAAA;AAAA,MAAAA,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAC1C,UAAA;AAAA,QAAA,WAAW;AAAA,QAAS;AAAA,QAAE;AAAA,MAAA,EAAA,GADxB,QAAA,MAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAC,MAEA;AAAA,MACC,WAAW,UAAUD,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAAI,UAAA,WAAW,OAAA,GAA3D,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAC,MAAkE;AAAA,IAAA,EAAA,GAJzF,QAAA,MAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA,GAAAA,MAKA;AAAA,IACC,SAAS,UAAa,WAAW,wDAChC,OAAA,EAAI,WAAW,UAAU,gBAAgB,GACxC,UAAA,WAAW,gBAAgB,IAAI,CAAC,IAAI,UAAU;AAC9C,YAAM,aAAa,QAAQ;AAC3B,UAAI,aAAa,IAAI,QAAQ,aAAa,IAAI,MAAM;AACnD,eAAO;AAAA,MACR;AACA,aACCD,8BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACA,WAAW,GAAG,UAAU,gBAAgB,CAAC,IAAI,eAAe,QAAQ,WAAW;AAAA,UAG/E,UAAA;AAAA,YAAAA,8BAAAA,OAAC,OAAA,EAAI,WAAW,UAAU,sBAAsB,GAAI,UAAA,WAAA,GAApD,QAAA,OAAA;AAAA,cAAA,UAAA;AAAA,cAAA,YAAA;AAAA,cAAA,cAAA;AAAA,YAAA,GAAAC,MAA+D;AAAA,iDAC9D,OAAA,EAAI,WAAW,UAAU,oBAAoB,GAAI,UAAA,GAAA,GAAlD,QAAA,OAAA;AAAA,cAAA,UAAA;AAAA,cAAA,YAAA;AAAA,cAAA,cAAA;AAAA,YAAA,GAAAA,MAAqD;AAAA,UAAA;AAAA,QAAA;AAAA,QAHhD;AAAA,QAFN;AAAA,QAAA;AAAA,UAAA,UAAA;AAAA,UAAA,YAAA;AAAA,UAAA,cAAA;AAAA,QAAA;AAAA,QAAAA;AAAAA,MAAA;AAAA,IAQF,CAAC,EAAA,GAfF,QAAA,OAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA,GAAAA,MAgBA;AAAA,EAAA,EAAA,GAxBF,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MA0BA;AAEF;;"}
@@ -0,0 +1,82 @@
1
+ import { jsxDEV } from "react/jsx-dev-runtime";
2
+ const className = (cls) => cls ? `cui-devError-${cls}` : "cui-devError";
3
+ const StackTrace = ({ stackTrace }) => {
4
+ return /* @__PURE__ */ jsxDEV("div", { className: className("stack"), children: stackTrace.map((it, index) => /* @__PURE__ */ jsxDEV(StackFrame, { stackFrame: it }, index, false, {
5
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
6
+ lineNumber: 7,
7
+ columnNumber: 35
8
+ }, void 0)) }, void 0, false, {
9
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
10
+ lineNumber: 6,
11
+ columnNumber: 3
12
+ }, void 0);
13
+ };
14
+ const StackFrame = ({ stackFrame }) => {
15
+ const line = stackFrame.line;
16
+ return /* @__PURE__ */ jsxDEV("div", { className: className("stackFrame"), children: [
17
+ /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameHeader"), children: [
18
+ /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameSource"), children: [
19
+ stackFrame.filename,
20
+ ":",
21
+ line
22
+ ] }, void 0, true, {
23
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
24
+ lineNumber: 18,
25
+ columnNumber: 5
26
+ }, void 0),
27
+ stackFrame.callee && /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameCallee"), children: stackFrame.callee }, void 0, false, {
28
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
29
+ lineNumber: 21,
30
+ columnNumber: 27
31
+ }, void 0)
32
+ ] }, void 0, true, {
33
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
34
+ lineNumber: 17,
35
+ columnNumber: 4
36
+ }, void 0),
37
+ line !== void 0 && stackFrame.sourceCodeLines && /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameCode"), children: stackFrame.sourceCodeLines.map((it, index) => {
38
+ const lineNumber = index + 1;
39
+ if (lineNumber + 5 < line || lineNumber - 3 > line) {
40
+ return null;
41
+ }
42
+ return /* @__PURE__ */ jsxDEV(
43
+ "div",
44
+ {
45
+ className: `${className("stackFrameLine")} ${lineNumber === line && "is-active"}`,
46
+ children: [
47
+ /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameLineNumber"), children: lineNumber }, void 0, false, {
48
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
49
+ lineNumber: 35,
50
+ columnNumber: 9
51
+ }, void 0),
52
+ /* @__PURE__ */ jsxDEV("div", { className: className("stackFrameLineCode"), children: it }, void 0, false, {
53
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
54
+ lineNumber: 36,
55
+ columnNumber: 9
56
+ }, void 0)
57
+ ]
58
+ },
59
+ lineNumber,
60
+ true,
61
+ {
62
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
63
+ lineNumber: 31,
64
+ columnNumber: 8
65
+ },
66
+ void 0
67
+ );
68
+ }) }, void 0, false, {
69
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
70
+ lineNumber: 24,
71
+ columnNumber: 5
72
+ }, void 0)
73
+ ] }, void 0, true, {
74
+ fileName: "/home/runner/work/contember/contember/packages/react-devbar/src/ui/DevError/StackTrace.tsx",
75
+ lineNumber: 16,
76
+ columnNumber: 3
77
+ }, void 0);
78
+ };
79
+ export {
80
+ StackTrace
81
+ };
82
+ //# sourceMappingURL=StackTrace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StackTrace.js","sources":["../../../../../../packages/react-devbar/src/ui/DevError/StackTrace.tsx"],"sourcesContent":["import { ParsedStackFrame, ParsedStackTrace } from './types'\n\nconst className = (cls?: string | null) => cls ? `cui-devError-${cls}` : 'cui-devError'\nexport const StackTrace = ({ stackTrace }: { stackTrace: ParsedStackTrace }) => {\n\treturn (\n\t\t<div className={className('stack')}>\n\t\t\t{stackTrace.map((it, index) => <StackFrame stackFrame={it} key={index} />)}\n\t\t</div>\n\t)\n}\n\nconst StackFrame = ({ stackFrame }: { stackFrame: ParsedStackFrame }) => {\n\tconst line = stackFrame.line\n\n\treturn (\n\t\t<div className={className('stackFrame')}>\n\t\t\t<div className={className('stackFrameHeader')}>\n\t\t\t\t<div className={className('stackFrameSource')}>\n\t\t\t\t\t{stackFrame.filename}:{line}\n\t\t\t\t</div>\n\t\t\t\t{stackFrame.callee && <div className={className('stackFrameCallee')}>{stackFrame.callee}</div>}\n\t\t\t</div>\n\t\t\t{line !== undefined && stackFrame.sourceCodeLines && (\n\t\t\t\t<div className={className('stackFrameCode')}>\n\t\t\t\t\t{stackFrame.sourceCodeLines.map((it, index) => {\n\t\t\t\t\t\tconst lineNumber = index + 1\n\t\t\t\t\t\tif (lineNumber + 5 < line || lineNumber - 3 > line) {\n\t\t\t\t\t\t\treturn null\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclassName={`${className('stackFrameLine')} ${lineNumber === line && 'is-active'}`}\n\t\t\t\t\t\t\t\tkey={lineNumber}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<div className={className('stackFrameLineNumber')}>{lineNumber}</div>\n\t\t\t\t\t\t\t\t<div className={className('stackFrameLineCode')}>{it}</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)\n\t\t\t\t\t})}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n"],"names":["this"],"mappings":";AAEA,MAAM,YAAY,CAAC,QAAwB,MAAM,gBAAgB,GAAG,KAAK;AAClE,MAAM,aAAa,CAAC,EAAE,iBAAmD;AAC/E,SACC,uBAAC,OAAA,EAAI,WAAW,UAAU,OAAO,GAC/B,UAAA,WAAW,IAAI,CAAC,IAAI,UAAU,uBAAC,YAAA,EAAW,YAAY,MAAS,OAAjC,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAwC,CAAE,KAD1E,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAEA;AAEF;AAEA,MAAM,aAAa,CAAC,EAAE,iBAAmD;AACxE,QAAM,OAAO,WAAW;AAExB,SACC,uBAAC,OAAA,EAAI,WAAW,UAAU,YAAY,GACrC,UAAA;AAAA,IAAA,uBAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAC3C,UAAA;AAAA,MAAA,uBAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAC1C,UAAA;AAAA,QAAA,WAAW;AAAA,QAAS;AAAA,QAAE;AAAA,MAAA,EAAA,GADxB,QAAA,MAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAEA;AAAA,MACC,WAAW,UAAU,uBAAC,OAAA,EAAI,WAAW,UAAU,kBAAkB,GAAI,UAAA,WAAW,OAAA,GAA3D,QAAA,OAAA;AAAA,QAAA,UAAA;AAAA,QAAA,YAAA;AAAA,QAAA,cAAA;AAAA,MAAA,GAAAA,MAAkE;AAAA,IAAA,EAAA,GAJzF,QAAA,MAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA,GAAAA,MAKA;AAAA,IACC,SAAS,UAAa,WAAW,0CAChC,OAAA,EAAI,WAAW,UAAU,gBAAgB,GACxC,UAAA,WAAW,gBAAgB,IAAI,CAAC,IAAI,UAAU;AAC9C,YAAM,aAAa,QAAQ;AAC3B,UAAI,aAAa,IAAI,QAAQ,aAAa,IAAI,MAAM;AACnD,eAAO;AAAA,MACR;AACA,aACC;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,WAAW,GAAG,UAAU,gBAAgB,CAAC,IAAI,eAAe,QAAQ,WAAW;AAAA,UAG/E,UAAA;AAAA,YAAA,uBAAC,OAAA,EAAI,WAAW,UAAU,sBAAsB,GAAI,UAAA,WAAA,GAApD,QAAA,OAAA;AAAA,cAAA,UAAA;AAAA,cAAA,YAAA;AAAA,cAAA,cAAA;AAAA,YAAA,GAAAA,MAA+D;AAAA,mCAC9D,OAAA,EAAI,WAAW,UAAU,oBAAoB,GAAI,UAAA,GAAA,GAAlD,QAAA,OAAA;AAAA,cAAA,UAAA;AAAA,cAAA,YAAA;AAAA,cAAA,cAAA;AAAA,YAAA,GAAAA,MAAqD;AAAA,UAAA;AAAA,QAAA;AAAA,QAHhD;AAAA,QAFN;AAAA,QAAA;AAAA,UAAA,UAAA;AAAA,UAAA,YAAA;AAAA,UAAA,cAAA;AAAA,QAAA;AAAA,QAAAA;AAAAA,MAAA;AAAA,IAQF,CAAC,EAAA,GAfF,QAAA,OAAA;AAAA,MAAA,UAAA;AAAA,MAAA,YAAA;AAAA,MAAA,cAAA;AAAA,IAAA,GAAAA,MAgBA;AAAA,EAAA,EAAA,GAxBF,QAAA,MAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MA0BA;AAEF;"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const errorHandling = require("./src/errorHandling.cjs");
4
+ const useParsedStacktrace = require("./src/hooks/useParsedStacktrace.cjs");
5
+ const DevBar = require("./src/ui/DevBar/DevBar.cjs");
6
+ const DevError = require("./src/ui/DevError/DevError.cjs");
7
+ const DevErrorBadge = require("./src/ui/DevError/DevErrorBadge.cjs");
8
+ const DevErrorList = require("./src/ui/DevError/DevErrorList.cjs");
9
+ exports.createErrorHandler = errorHandling.createErrorHandler;
10
+ exports.parseStacktrace = useParsedStacktrace.parseStacktrace;
11
+ exports.useProcessedError = useParsedStacktrace.useProcessedError;
12
+ exports.DevBar = DevBar.DevBar;
13
+ exports.DevPanel = DevBar.DevPanel;
14
+ exports.DevError = DevError.DevError;
15
+ exports.DevErrorBadge = DevErrorBadge.DevErrorBadge;
16
+ exports.DevErrorList = DevErrorList.DevErrorList;
17
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ import { createErrorHandler } from "./src/errorHandling.js";
2
+ import { parseStacktrace, useProcessedError } from "./src/hooks/useParsedStacktrace.js";
3
+ import { DevBar, DevPanel } from "./src/ui/DevBar/DevBar.js";
4
+ import { DevError } from "./src/ui/DevError/DevError.js";
5
+ import { DevErrorBadge } from "./src/ui/DevError/DevErrorBadge.js";
6
+ import { DevErrorList } from "./src/ui/DevError/DevErrorList.js";
7
+ export {
8
+ DevBar,
9
+ DevError,
10
+ DevErrorBadge,
11
+ DevErrorList,
12
+ DevPanel,
13
+ createErrorHandler,
14
+ parseStacktrace,
15
+ useProcessedError
16
+ };
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ require("buffer");
5
+ const getErrorContainer = () => {
6
+ const errorElementId = "__contember__dev__error__container__element";
7
+ let errorContainer = document.getElementById(errorElementId);
8
+ if (!errorContainer) {
9
+ errorContainer = document.createElement("div");
10
+ errorContainer.id = errorElementId;
11
+ document.body.appendChild(errorContainer);
12
+ }
13
+ return errorContainer;
14
+ };
15
+ const prodErrorHandler = (renderer) => {
16
+ const renderError = () => {
17
+ renderer(getErrorContainer(), /* @__PURE__ */ jsxRuntime.jsx("h1", { children: "Fatal error" }), () => {
18
+ });
19
+ };
20
+ window.addEventListener("error", renderError);
21
+ window.addEventListener("unhandledrejection", renderError);
22
+ return async (cb) => {
23
+ try {
24
+ await cb((e) => {
25
+ console.warn(e);
26
+ });
27
+ } catch (e) {
28
+ console.error(e);
29
+ renderError();
30
+ }
31
+ };
32
+ };
33
+ const createErrorHandler = (renderer) => {
34
+ {
35
+ return prodErrorHandler(renderer);
36
+ }
37
+ };
38
+ exports.createErrorHandler = createErrorHandler;
39
+ //# sourceMappingURL=errorHandling.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandling.cjs","sources":["../../../../packages/react-devbar/src/errorHandling.tsx"],"sourcesContent":["import { 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\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\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\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":["jsx"],"mappings":";;;;AAMA,MAAM,oBAAoB,MAAM;AAC/B,QAAM,iBAAiB;AACvB,MAAI,iBAAiB,SAAS,eAAe,cAAc;AAE3D,MAAI,CAAC,gBAAgB;AACpB,qBAAiB,SAAS,cAAc,KAAK;AAC7C,mBAAe,KAAK;AACpB,aAAS,KAAK,YAAY,cAAc;AAAA,EACzC;AAEA,SAAO;AACR;AAoCA,MAAM,mBAAmB,CAAC,aAAyC;AAClE,QAAM,cAAc,MAAM;AACzB,aAAS,kBAAA,GAAqBA,+BAAC,MAAA,EAAG,UAAA,cAAA,CAAW,GAAO,MAAM;AAAA,IAAC,CAAC;AAAA,EAC7D;AAEA,SAAO,iBAAiB,SAAS,WAAW;AAC5C,SAAO,iBAAiB,sBAAsB,WAAW;AAEzD,SAAO,OAAM,OAAM;AAClB,QAAI;AACH,YAAM,GAAG,CAAA,MAAK;AACb,gBAAQ,KAAK,CAAC;AAAA,MACf,CAAC;AAAA,IACF,SAAS,GAAG;AACX,cAAQ,MAAM,CAAC;AACf,kBAAA;AAAA,IACD;AAAA,EACD;AACD;AAEO,MAAM,qBAAqB,CAAC,aAAiC;AAG5D;AACN,WAAO,iBAAiB,QAAQ;AAAA,EACjC;AACD;;"}
@@ -0,0 +1,39 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import "buffer";
3
+ const getErrorContainer = () => {
4
+ const errorElementId = "__contember__dev__error__container__element";
5
+ let errorContainer = document.getElementById(errorElementId);
6
+ if (!errorContainer) {
7
+ errorContainer = document.createElement("div");
8
+ errorContainer.id = errorElementId;
9
+ document.body.appendChild(errorContainer);
10
+ }
11
+ return errorContainer;
12
+ };
13
+ const prodErrorHandler = (renderer) => {
14
+ const renderError = () => {
15
+ renderer(getErrorContainer(), /* @__PURE__ */ jsx("h1", { children: "Fatal error" }), () => {
16
+ });
17
+ };
18
+ window.addEventListener("error", renderError);
19
+ window.addEventListener("unhandledrejection", renderError);
20
+ return async (cb) => {
21
+ try {
22
+ await cb((e) => {
23
+ console.warn(e);
24
+ });
25
+ } catch (e) {
26
+ console.error(e);
27
+ renderError();
28
+ }
29
+ };
30
+ };
31
+ const createErrorHandler = (renderer) => {
32
+ {
33
+ return prodErrorHandler(renderer);
34
+ }
35
+ };
36
+ export {
37
+ createErrorHandler
38
+ };
39
+ //# sourceMappingURL=errorHandling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorHandling.js","sources":["../../../../packages/react-devbar/src/errorHandling.tsx"],"sourcesContent":["import { 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\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\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\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":";;AAMA,MAAM,oBAAoB,MAAM;AAC/B,QAAM,iBAAiB;AACvB,MAAI,iBAAiB,SAAS,eAAe,cAAc;AAE3D,MAAI,CAAC,gBAAgB;AACpB,qBAAiB,SAAS,cAAc,KAAK;AAC7C,mBAAe,KAAK;AACpB,aAAS,KAAK,YAAY,cAAc;AAAA,EACzC;AAEA,SAAO;AACR;AAoCA,MAAM,mBAAmB,CAAC,aAAyC;AAClE,QAAM,cAAc,MAAM;AACzB,aAAS,kBAAA,GAAqB,oBAAC,MAAA,EAAG,UAAA,cAAA,CAAW,GAAO,MAAM;AAAA,IAAC,CAAC;AAAA,EAC7D;AAEA,SAAO,iBAAiB,SAAS,WAAW;AAC5C,SAAO,iBAAiB,sBAAsB,WAAW;AAEzD,SAAO,OAAM,OAAM;AAClB,QAAI;AACH,YAAM,GAAG,CAAA,MAAK;AACb,gBAAQ,KAAK,CAAC;AAAA,MACf,CAAC;AAAA,IACF,SAAS,GAAG;AACX,cAAQ,MAAM,CAAC;AACf,kBAAA;AAAA,IACD;AAAA,EACD;AACD;AAEO,MAAM,qBAAqB,CAAC,aAAiC;AAG5D;AACN,WAAO,iBAAiB,QAAQ;AAAA,EACjC;AACD;"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const React = require("react");
4
+ const convertStackTraceToMarkdown = (stackTrace, lines) => {
5
+ stackTrace.forEach((frame, index) => {
6
+ lines.push(`**Frame ${index + 1}:**`);
7
+ lines.push("");
8
+ lines.push(`- **File:** ${frame.filename}${frame.line ? `:${frame.line}` : ""}`);
9
+ if (frame.callee) {
10
+ lines.push(`- **Function:** ${frame.callee}`);
11
+ }
12
+ lines.push("");
13
+ if (frame.line !== void 0 && frame.sourceCodeLines) {
14
+ lines.push("**Source Code:**");
15
+ lines.push("");
16
+ lines.push("```typescript");
17
+ frame.sourceCodeLines.forEach((codeLine, lineIndex) => {
18
+ const lineNumber = lineIndex + 1;
19
+ if (frame.line && lineNumber + 5 >= frame.line && lineNumber - 3 <= frame.line) {
20
+ const isErrorLine = lineNumber === frame.line;
21
+ const marker = isErrorLine ? ">>> " : " ";
22
+ lines.push(`${marker}${lineNumber.toString().padStart(3)}: ${codeLine}`);
23
+ }
24
+ });
25
+ lines.push("```");
26
+ lines.push("");
27
+ }
28
+ lines.push("---");
29
+ lines.push("");
30
+ });
31
+ };
32
+ const convertErrorToMarkdownRecursive = (error, lines, level) => {
33
+ const errorObject = error.error instanceof Error ? error.error : void 0;
34
+ const prefix = "#".repeat(level + 1);
35
+ if (errorObject) {
36
+ lines.push(`${prefix} ${errorObject.name}`);
37
+ lines.push("");
38
+ if (errorObject.message) {
39
+ lines.push(`**Message:** ${errorObject.message}`);
40
+ lines.push("");
41
+ }
42
+ if ("details" in errorObject && errorObject.details) {
43
+ lines.push(`**Details:** ${errorObject.details}`);
44
+ lines.push("");
45
+ }
46
+ } else {
47
+ lines.push(`${prefix} Unknown Error`);
48
+ lines.push("");
49
+ }
50
+ if (error.parsedStackStrace) {
51
+ lines.push(`${"#".repeat(level + 2)} Stack Trace`);
52
+ lines.push("");
53
+ convertStackTraceToMarkdown(error.parsedStackStrace, lines);
54
+ } else if (errorObject?.stack) {
55
+ lines.push(`${"#".repeat(level + 2)} Stack Trace`);
56
+ lines.push("");
57
+ lines.push("```");
58
+ lines.push(errorObject.stack);
59
+ lines.push("```");
60
+ lines.push("");
61
+ }
62
+ if (error.cause) {
63
+ lines.push(`${"#".repeat(level + 2)} Caused By`);
64
+ lines.push("");
65
+ convertErrorToMarkdownRecursive(error.cause, lines, level + 1);
66
+ }
67
+ };
68
+ const convertErrorToMarkdown = (error, source) => {
69
+ const lines = [];
70
+ lines.push("# Contember Error Report");
71
+ lines.push("");
72
+ lines.push(`**Source:** ${source}`);
73
+ lines.push("");
74
+ convertErrorToMarkdownRecursive(error, lines, 1);
75
+ return lines.join("\n");
76
+ };
77
+ const useCopyErrorMarkdown = ({ currentError, currentErrorSource }) => {
78
+ const [copyStatus, setCopyStatus] = React.useState("idle");
79
+ React.useEffect(() => {
80
+ setCopyStatus("idle");
81
+ }, [currentError]);
82
+ const handleCopyMarkdown = async () => {
83
+ setCopyStatus("copying");
84
+ try {
85
+ const markdown = convertErrorToMarkdown(currentError, currentErrorSource);
86
+ await navigator.clipboard.writeText(markdown);
87
+ setCopyStatus("success");
88
+ } catch (err) {
89
+ console.error("Failed to copy markdown:", err);
90
+ setCopyStatus("error");
91
+ }
92
+ };
93
+ const isClipboardSupported = !!navigator?.clipboard;
94
+ return {
95
+ copyStatus,
96
+ handleCopyMarkdown,
97
+ isClipboardSupported
98
+ };
99
+ };
100
+ exports.useCopyErrorMarkdown = useCopyErrorMarkdown;
101
+ //# sourceMappingURL=useCopyErrorMarkdown.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyErrorMarkdown.cjs","sources":["../../../../../packages/react-devbar/src/hooks/useCopyErrorMarkdown.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport type { ParsedStackTrace, ProcessedError } from '../ui/DevError/types'\n\nconst convertStackTraceToMarkdown = (stackTrace: ParsedStackTrace, lines: string[]) => {\n\tstackTrace.forEach((frame, index) => {\n\t\tlines.push(`**Frame ${index + 1}:**`)\n\t\tlines.push('')\n\t\tlines.push(`- **File:** ${frame.filename}${frame.line ? `:${frame.line}` : ''}`)\n\n\t\tif (frame.callee) {\n\t\t\tlines.push(`- **Function:** ${frame.callee}`)\n\t\t}\n\n\t\tlines.push('')\n\n\t\tif (frame.line !== undefined && frame.sourceCodeLines) {\n\t\t\tlines.push('**Source Code:**')\n\t\t\tlines.push('')\n\t\t\tlines.push('```typescript')\n\n\t\t\tframe.sourceCodeLines.forEach((codeLine, lineIndex) => {\n\t\t\t\tconst lineNumber = lineIndex + 1\n\t\t\t\t// Show context around the error line (similar to the UI logic)\n\t\t\t\tif (frame.line && lineNumber + 5 >= frame.line && lineNumber - 3 <= frame.line) {\n\t\t\t\t\tconst isErrorLine = lineNumber === frame.line\n\t\t\t\t\tconst marker = isErrorLine ? '>>> ' : ' '\n\t\t\t\t\tlines.push(`${marker}${lineNumber.toString().padStart(3)}: ${codeLine}`)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlines.push('```')\n\t\t\tlines.push('')\n\t\t}\n\n\t\tlines.push('---')\n\t\tlines.push('')\n\t})\n}\n\nconst convertErrorToMarkdownRecursive = (error: ProcessedError, lines: string[], level: number) => {\n\tconst errorObject = error.error instanceof Error ? error.error : undefined\n\tconst prefix = '#'.repeat(level + 1)\n\n\tif (errorObject) {\n\t\tlines.push(`${prefix} ${errorObject.name}`)\n\t\tlines.push('')\n\n\t\tif (errorObject.message) {\n\t\t\tlines.push(`**Message:** ${errorObject.message}`)\n\t\t\tlines.push('')\n\t\t}\n\n\t\tif ('details' in errorObject && (errorObject as Error & { details?: unknown }).details) {\n\t\t\tlines.push(`**Details:** ${(errorObject as Error & { details: string }).details}`)\n\t\t\tlines.push('')\n\t\t}\n\t} else {\n\t\tlines.push(`${prefix} Unknown Error`)\n\t\tlines.push('')\n\t}\n\n\tif (error.parsedStackStrace) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Stack Trace`)\n\t\tlines.push('')\n\t\tconvertStackTraceToMarkdown(error.parsedStackStrace, lines)\n\t} else if (errorObject?.stack) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Stack Trace`)\n\t\tlines.push('')\n\t\tlines.push('```')\n\t\tlines.push(errorObject.stack)\n\t\tlines.push('```')\n\t\tlines.push('')\n\t}\n\n\tif (error.cause) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Caused By`)\n\t\tlines.push('')\n\t\tconvertErrorToMarkdownRecursive(error.cause, lines, level + 1)\n\t}\n}\n\nconst convertErrorToMarkdown = (error: ProcessedError, source: string): string => {\n\tconst lines: string[] = []\n\n\tlines.push('# Contember Error Report')\n\tlines.push('')\n\tlines.push(`**Source:** ${source}`)\n\tlines.push('')\n\n\tconvertErrorToMarkdownRecursive(error, lines, 1)\n\n\treturn lines.join('\\n')\n}\n\ntype CopyMarkdownProps = {\n\tcurrentError: ProcessedError\n\tcurrentErrorSource: string\n}\n\nexport const useCopyErrorMarkdown = ({ currentError, currentErrorSource }: CopyMarkdownProps) => {\n\tconst [copyStatus, setCopyStatus] = useState<'idle' | 'copying' | 'success' | 'error'>('idle')\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n\tuseEffect(() => {\n\t\tsetCopyStatus('idle')\n\t}, [currentError])\n\n\tconst handleCopyMarkdown = async () => {\n\t\tsetCopyStatus('copying')\n\t\ttry {\n\t\t\tconst markdown = convertErrorToMarkdown(currentError, currentErrorSource)\n\t\t\tawait navigator.clipboard.writeText(markdown)\n\t\t\tsetCopyStatus('success')\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy markdown:', err)\n\t\t\tsetCopyStatus('error')\n\t\t}\n\t}\n\n\tconst isClipboardSupported = !!navigator?.clipboard\n\n\treturn {\n\t\tcopyStatus,\n\t\thandleCopyMarkdown,\n\t\tisClipboardSupported,\n\t}\n}\n"],"names":["useState","useEffect"],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { useState, useEffect } from "react";
2
+ const convertStackTraceToMarkdown = (stackTrace, lines) => {
3
+ stackTrace.forEach((frame, index) => {
4
+ lines.push(`**Frame ${index + 1}:**`);
5
+ lines.push("");
6
+ lines.push(`- **File:** ${frame.filename}${frame.line ? `:${frame.line}` : ""}`);
7
+ if (frame.callee) {
8
+ lines.push(`- **Function:** ${frame.callee}`);
9
+ }
10
+ lines.push("");
11
+ if (frame.line !== void 0 && frame.sourceCodeLines) {
12
+ lines.push("**Source Code:**");
13
+ lines.push("");
14
+ lines.push("```typescript");
15
+ frame.sourceCodeLines.forEach((codeLine, lineIndex) => {
16
+ const lineNumber = lineIndex + 1;
17
+ if (frame.line && lineNumber + 5 >= frame.line && lineNumber - 3 <= frame.line) {
18
+ const isErrorLine = lineNumber === frame.line;
19
+ const marker = isErrorLine ? ">>> " : " ";
20
+ lines.push(`${marker}${lineNumber.toString().padStart(3)}: ${codeLine}`);
21
+ }
22
+ });
23
+ lines.push("```");
24
+ lines.push("");
25
+ }
26
+ lines.push("---");
27
+ lines.push("");
28
+ });
29
+ };
30
+ const convertErrorToMarkdownRecursive = (error, lines, level) => {
31
+ const errorObject = error.error instanceof Error ? error.error : void 0;
32
+ const prefix = "#".repeat(level + 1);
33
+ if (errorObject) {
34
+ lines.push(`${prefix} ${errorObject.name}`);
35
+ lines.push("");
36
+ if (errorObject.message) {
37
+ lines.push(`**Message:** ${errorObject.message}`);
38
+ lines.push("");
39
+ }
40
+ if ("details" in errorObject && errorObject.details) {
41
+ lines.push(`**Details:** ${errorObject.details}`);
42
+ lines.push("");
43
+ }
44
+ } else {
45
+ lines.push(`${prefix} Unknown Error`);
46
+ lines.push("");
47
+ }
48
+ if (error.parsedStackStrace) {
49
+ lines.push(`${"#".repeat(level + 2)} Stack Trace`);
50
+ lines.push("");
51
+ convertStackTraceToMarkdown(error.parsedStackStrace, lines);
52
+ } else if (errorObject?.stack) {
53
+ lines.push(`${"#".repeat(level + 2)} Stack Trace`);
54
+ lines.push("");
55
+ lines.push("```");
56
+ lines.push(errorObject.stack);
57
+ lines.push("```");
58
+ lines.push("");
59
+ }
60
+ if (error.cause) {
61
+ lines.push(`${"#".repeat(level + 2)} Caused By`);
62
+ lines.push("");
63
+ convertErrorToMarkdownRecursive(error.cause, lines, level + 1);
64
+ }
65
+ };
66
+ const convertErrorToMarkdown = (error, source) => {
67
+ const lines = [];
68
+ lines.push("# Contember Error Report");
69
+ lines.push("");
70
+ lines.push(`**Source:** ${source}`);
71
+ lines.push("");
72
+ convertErrorToMarkdownRecursive(error, lines, 1);
73
+ return lines.join("\n");
74
+ };
75
+ const useCopyErrorMarkdown = ({ currentError, currentErrorSource }) => {
76
+ const [copyStatus, setCopyStatus] = useState("idle");
77
+ useEffect(() => {
78
+ setCopyStatus("idle");
79
+ }, [currentError]);
80
+ const handleCopyMarkdown = async () => {
81
+ setCopyStatus("copying");
82
+ try {
83
+ const markdown = convertErrorToMarkdown(currentError, currentErrorSource);
84
+ await navigator.clipboard.writeText(markdown);
85
+ setCopyStatus("success");
86
+ } catch (err) {
87
+ console.error("Failed to copy markdown:", err);
88
+ setCopyStatus("error");
89
+ }
90
+ };
91
+ const isClipboardSupported = !!navigator?.clipboard;
92
+ return {
93
+ copyStatus,
94
+ handleCopyMarkdown,
95
+ isClipboardSupported
96
+ };
97
+ };
98
+ export {
99
+ useCopyErrorMarkdown
100
+ };
101
+ //# sourceMappingURL=useCopyErrorMarkdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCopyErrorMarkdown.js","sources":["../../../../../packages/react-devbar/src/hooks/useCopyErrorMarkdown.ts"],"sourcesContent":["import { useEffect, useState } from 'react'\nimport type { ParsedStackTrace, ProcessedError } from '../ui/DevError/types'\n\nconst convertStackTraceToMarkdown = (stackTrace: ParsedStackTrace, lines: string[]) => {\n\tstackTrace.forEach((frame, index) => {\n\t\tlines.push(`**Frame ${index + 1}:**`)\n\t\tlines.push('')\n\t\tlines.push(`- **File:** ${frame.filename}${frame.line ? `:${frame.line}` : ''}`)\n\n\t\tif (frame.callee) {\n\t\t\tlines.push(`- **Function:** ${frame.callee}`)\n\t\t}\n\n\t\tlines.push('')\n\n\t\tif (frame.line !== undefined && frame.sourceCodeLines) {\n\t\t\tlines.push('**Source Code:**')\n\t\t\tlines.push('')\n\t\t\tlines.push('```typescript')\n\n\t\t\tframe.sourceCodeLines.forEach((codeLine, lineIndex) => {\n\t\t\t\tconst lineNumber = lineIndex + 1\n\t\t\t\t// Show context around the error line (similar to the UI logic)\n\t\t\t\tif (frame.line && lineNumber + 5 >= frame.line && lineNumber - 3 <= frame.line) {\n\t\t\t\t\tconst isErrorLine = lineNumber === frame.line\n\t\t\t\t\tconst marker = isErrorLine ? '>>> ' : ' '\n\t\t\t\t\tlines.push(`${marker}${lineNumber.toString().padStart(3)}: ${codeLine}`)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tlines.push('```')\n\t\t\tlines.push('')\n\t\t}\n\n\t\tlines.push('---')\n\t\tlines.push('')\n\t})\n}\n\nconst convertErrorToMarkdownRecursive = (error: ProcessedError, lines: string[], level: number) => {\n\tconst errorObject = error.error instanceof Error ? error.error : undefined\n\tconst prefix = '#'.repeat(level + 1)\n\n\tif (errorObject) {\n\t\tlines.push(`${prefix} ${errorObject.name}`)\n\t\tlines.push('')\n\n\t\tif (errorObject.message) {\n\t\t\tlines.push(`**Message:** ${errorObject.message}`)\n\t\t\tlines.push('')\n\t\t}\n\n\t\tif ('details' in errorObject && (errorObject as Error & { details?: unknown }).details) {\n\t\t\tlines.push(`**Details:** ${(errorObject as Error & { details: string }).details}`)\n\t\t\tlines.push('')\n\t\t}\n\t} else {\n\t\tlines.push(`${prefix} Unknown Error`)\n\t\tlines.push('')\n\t}\n\n\tif (error.parsedStackStrace) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Stack Trace`)\n\t\tlines.push('')\n\t\tconvertStackTraceToMarkdown(error.parsedStackStrace, lines)\n\t} else if (errorObject?.stack) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Stack Trace`)\n\t\tlines.push('')\n\t\tlines.push('```')\n\t\tlines.push(errorObject.stack)\n\t\tlines.push('```')\n\t\tlines.push('')\n\t}\n\n\tif (error.cause) {\n\t\tlines.push(`${'#'.repeat(level + 2)} Caused By`)\n\t\tlines.push('')\n\t\tconvertErrorToMarkdownRecursive(error.cause, lines, level + 1)\n\t}\n}\n\nconst convertErrorToMarkdown = (error: ProcessedError, source: string): string => {\n\tconst lines: string[] = []\n\n\tlines.push('# Contember Error Report')\n\tlines.push('')\n\tlines.push(`**Source:** ${source}`)\n\tlines.push('')\n\n\tconvertErrorToMarkdownRecursive(error, lines, 1)\n\n\treturn lines.join('\\n')\n}\n\ntype CopyMarkdownProps = {\n\tcurrentError: ProcessedError\n\tcurrentErrorSource: string\n}\n\nexport const useCopyErrorMarkdown = ({ currentError, currentErrorSource }: CopyMarkdownProps) => {\n\tconst [copyStatus, setCopyStatus] = useState<'idle' | 'copying' | 'success' | 'error'>('idle')\n\n\t// biome-ignore lint/correctness/useExhaustiveDependencies: intentional\n\tuseEffect(() => {\n\t\tsetCopyStatus('idle')\n\t}, [currentError])\n\n\tconst handleCopyMarkdown = async () => {\n\t\tsetCopyStatus('copying')\n\t\ttry {\n\t\t\tconst markdown = convertErrorToMarkdown(currentError, currentErrorSource)\n\t\t\tawait navigator.clipboard.writeText(markdown)\n\t\t\tsetCopyStatus('success')\n\t\t} catch (err) {\n\t\t\tconsole.error('Failed to copy markdown:', err)\n\t\t\tsetCopyStatus('error')\n\t\t}\n\t}\n\n\tconst isClipboardSupported = !!navigator?.clipboard\n\n\treturn {\n\t\tcopyStatus,\n\t\thandleCopyMarkdown,\n\t\tisClipboardSupported,\n\t}\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
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
@@ -0,0 +1 @@
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":";;;;;;;;;;;;;;;;;;;;;;;;;AAGO,MAAM,kBAAkB,OAAO,MAAa;AAClD,MAAI;AACJ,MAAI;AACH,mBAAe,MAAM,OAAO,aAAa,GAAG;AAAA,EAC7C,QAAQ;AACP,WAAO;AAAA,EACR;AACA,UAAQ,MAAM,IAAI,YAAY,CAAC,EAAE,iBAAA,GAAoB,MAAM,IAAI,CAAA,QAAO;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;AAEO,MAAM,oBAAoB,CAAC,MAAiC;AAClE,QAAM,CAAC,OAAO,QAAQ,IAAIA,MAAAA,SAAyB,MAAM,mBAAmB,CAAC,CAAC;AAC9EC,QAAAA,UAAU,MAAM;AACf,aAAS,mBAAmB,CAAC,CAAC;AAC9B,QAAI,EAAE,aAAa,QAAQ;AAC1B;AAAA,IACD;AACA,UAAM,4BAA4B,OAAOC,OAA0C;AAClF,aAAO;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,MAAA;AAAA,IAEpI;AACC,KAAC,YAAY;AACb,eAAS,MAAM,0BAA0B,CAAC,CAAC;AAAA,IAC5C,GAAA;AAAA,EACD,GAAG,CAAC,CAAC,CAAC;AAEN,SAAO;AACR;;;"}