-HrnV!)9H}CyN&J*A3@3(V={kmtrO`}S}%{njU81EU^
zz5mM>+b|})kh*C8=v?j1_(q03@%({ji?^-(^Z#MTl0#Q)pC6R7nH=8Zf5s|pYlYW~
okWGKHs}*9z?C%~s-ug1?Z_}2k3hVxet^Ryp>Sg7JI93J*0JG;@9RL6T
literal 0
HcmV?d00001
diff --git a/docs/reports/public/assets/report.css b/docs/reports/public/assets/report.css
index df9fc8a..ca5d523 100644
--- a/docs/reports/public/assets/report.css
+++ b/docs/reports/public/assets/report.css
@@ -1,3 +1,8 @@
+@font-face {
+ font-family: 'Berkeley Mono';
+ src: url('/assets/BerkeleyMono-Regular.woff2') format('woff2');
+}
+
* {
margin: 0;
padding: 0;
@@ -18,7 +23,7 @@ html {
body {
margin: 7% auto 0;
- max-width: 405px;
+ max-width: 410px;
min-height: 180px;
padding: 30px 0 15px;
}
@@ -42,19 +47,8 @@ a {
}
code {
- background: #f8f8f8;
- border: 1px solid #eee;
- border-radius: 2px;
- padding: 0 3px;
-}
-
-ol {
- margin: 11px 0 22px 22px;
-}
-
-li {
- margin: 3px 0;
- overflow-wrap: anywhere;
+ padding: 2px 5px;
+ background-color: #f2f2f2;
}
#logo {
@@ -83,16 +77,34 @@ li {
color: #777;
}
-.frames code {
- background: transparent;
- border: 0;
- padding: 0;
+.frames {
+ padding-inline: 0.7rem;
+ padding-block: 0.3rem;
+ color: #333;
+ background-color: #fcfcfc !important;
+ font-family: 'Berkeley Mono', monospace;
+ margin: 5px 0 11px;
+ max-height: 320px;
+ overflow: auto;
+ white-space: pre;
+}
+
+.frames > code {
+ all: unset;
+}
+
+.frame-index {
+ color: #999;
}
.url {
overflow-wrap: anywhere;
}
+.copy-url {
+ cursor: copy;
+}
+
.footer {
margin-top: 33px;
}
diff --git a/docs/reports/public/assets/report.js b/docs/reports/public/assets/report.js
new file mode 100644
index 0000000..f842e28
--- /dev/null
+++ b/docs/reports/public/assets/report.js
@@ -0,0 +1,26 @@
+function copyText(text) {
+ if (!navigator.clipboard || !window.isSecureContext) {
+ return Promise.reject(new Error('Clipboard API is unavailable'));
+ }
+ return navigator.clipboard.writeText(text);
+}
+
+document.addEventListener('click', event => {
+ const link = event.target.closest('[data-copy-url]');
+
+ if (!link) return;
+ event.preventDefault();
+
+ const url = link.getAttribute('data-copy-url');
+ if (!url) return;
+
+ copyText(url)
+ .then(() => {
+ const original = link.textContent;
+ link.textContent = 'Copied URL to clipboard.';
+ window.setTimeout(() => {
+ link.textContent = original;
+ }, 1200);
+ })
+ .catch(() => (window.location.href = url));
+});
diff --git a/docs/reports/src/view.tsx b/docs/reports/src/view.tsx
index 726f834..742c446 100644
--- a/docs/reports/src/view.tsx
+++ b/docs/reports/src/view.tsx
@@ -29,6 +29,16 @@ function crashDetail(code: string): string {
}
}
+function renderFrames(frames: string[]): Child {
+ if (!frames.length) return 'No native frames were captured.';
+ return frames.map((frame, index) => (
+ <>
+ {index + 1}. {frame}
+ {index < frames.length - 1 ? '\n' : ''}
+ >
+ ));
+}
+
const Shell = ({ title, children }: { title: string; children: Child }) => (
@@ -36,6 +46,7 @@ const Shell = ({ title, children }: { title: string; children: Child }) => (
+
{title}
{children}
@@ -104,24 +115,18 @@ const ReportPage = ({ report, url }: { report: CrashReport; url: string }) => {
- This report URL: {url}
+ This report URL:{' '}
+
+ {url}
+
+
);