@impakers/debug 1.4.8 → 1.4.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/react.js +111 -87
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +112 -88
- package/dist/react.mjs.map +1 -1
- package/package.json +2 -2
package/dist/react.mjs
CHANGED
|
@@ -106,7 +106,7 @@ _ImpakersDebug._eventTarget = typeof EventTarget !== "undefined" ? new EventTarg
|
|
|
106
106
|
var ImpakersDebug = _ImpakersDebug;
|
|
107
107
|
|
|
108
108
|
// src/components/debug-widget/index.tsx
|
|
109
|
-
import { useState as useState5, useCallback as useCallback6, useEffect as useEffect5, useRef as useRef5 } from "react";
|
|
109
|
+
import { useState as useState5, useCallback as useCallback6, useEffect as useEffect5, useRef as useRef5, useMemo } from "react";
|
|
110
110
|
import { createPortal as createPortal3 } from "react-dom";
|
|
111
111
|
|
|
112
112
|
// src/components/annotation-popup-css/index.tsx
|
|
@@ -1535,70 +1535,14 @@ function findNearestComponentSource(element, maxAncestors = 10) {
|
|
|
1535
1535
|
}
|
|
1536
1536
|
|
|
1537
1537
|
// src/utils/capture-element.ts
|
|
1538
|
-
var UNSUPPORTED_RE = /\b(?:oklab|oklch|color-mix|(?<![\w-])lab|(?<![\w-])lch)\s*\(/i;
|
|
1539
|
-
var COLOR_PROPS = [
|
|
1540
|
-
"color",
|
|
1541
|
-
"background-color",
|
|
1542
|
-
"background-image",
|
|
1543
|
-
"background",
|
|
1544
|
-
"border-color",
|
|
1545
|
-
"border-top-color",
|
|
1546
|
-
"border-right-color",
|
|
1547
|
-
"border-bottom-color",
|
|
1548
|
-
"border-left-color",
|
|
1549
|
-
"outline-color",
|
|
1550
|
-
"text-decoration-color",
|
|
1551
|
-
"box-shadow",
|
|
1552
|
-
"text-shadow",
|
|
1553
|
-
"caret-color",
|
|
1554
|
-
"column-rule-color",
|
|
1555
|
-
"fill",
|
|
1556
|
-
"stroke",
|
|
1557
|
-
"stop-color",
|
|
1558
|
-
"flood-color",
|
|
1559
|
-
"lighting-color"
|
|
1560
|
-
];
|
|
1561
|
-
function sanitizeUnsupportedColors(clonedDoc) {
|
|
1562
|
-
const allEls = clonedDoc.querySelectorAll("*");
|
|
1563
|
-
for (let i = 0; i < allEls.length; i++) {
|
|
1564
|
-
const el = allEls[i];
|
|
1565
|
-
if (!el.style) continue;
|
|
1566
|
-
let cs = null;
|
|
1567
|
-
for (const prop of COLOR_PROPS) {
|
|
1568
|
-
const inlineVal = el.style.getPropertyValue(prop);
|
|
1569
|
-
if (inlineVal && UNSUPPORTED_RE.test(inlineVal)) {
|
|
1570
|
-
el.style.setProperty(prop, getFallback(prop));
|
|
1571
|
-
continue;
|
|
1572
|
-
}
|
|
1573
|
-
if (!cs) {
|
|
1574
|
-
try {
|
|
1575
|
-
cs = clonedDoc.defaultView.getComputedStyle(el);
|
|
1576
|
-
} catch {
|
|
1577
|
-
break;
|
|
1578
|
-
}
|
|
1579
|
-
}
|
|
1580
|
-
const val = cs.getPropertyValue(prop);
|
|
1581
|
-
if (val && UNSUPPORTED_RE.test(val)) {
|
|
1582
|
-
el.style.setProperty(prop, getFallback(prop));
|
|
1583
|
-
}
|
|
1584
|
-
}
|
|
1585
|
-
}
|
|
1586
|
-
}
|
|
1587
|
-
function getFallback(prop) {
|
|
1588
|
-
if (prop === "background-image" || prop === "background") return "none";
|
|
1589
|
-
if (prop === "box-shadow" || prop === "text-shadow") return "none";
|
|
1590
|
-
if (prop === "color") return "inherit";
|
|
1591
|
-
return "transparent";
|
|
1592
|
-
}
|
|
1593
1538
|
async function captureElement(el, options = {}) {
|
|
1594
1539
|
const { quality = 0.7, maxScale = 2 } = options;
|
|
1595
|
-
const html2canvas = (await import("html2canvas")).default;
|
|
1540
|
+
const html2canvas = (await import("html2canvas-pro")).default;
|
|
1596
1541
|
const canvas = await html2canvas(el, {
|
|
1597
1542
|
useCORS: true,
|
|
1598
1543
|
allowTaint: true,
|
|
1599
1544
|
scale: Math.min(window.devicePixelRatio, maxScale),
|
|
1600
|
-
logging: false
|
|
1601
|
-
onclone: (clonedDoc) => sanitizeUnsupportedColors(clonedDoc)
|
|
1545
|
+
logging: false
|
|
1602
1546
|
});
|
|
1603
1547
|
return canvas.toDataURL("image/jpeg", quality);
|
|
1604
1548
|
}
|
|
@@ -1609,15 +1553,14 @@ async function captureFullPage(options = {}) {
|
|
|
1609
1553
|
const hiddenEls = document.querySelectorAll(allSelectors.join(", "));
|
|
1610
1554
|
try {
|
|
1611
1555
|
hiddenEls.forEach((el) => el.style.visibility = "hidden");
|
|
1612
|
-
const html2canvas = (await import("html2canvas")).default;
|
|
1556
|
+
const html2canvas = (await import("html2canvas-pro")).default;
|
|
1613
1557
|
const canvas = await html2canvas(document.body, {
|
|
1614
1558
|
useCORS: true,
|
|
1615
1559
|
allowTaint: true,
|
|
1616
1560
|
scale: 1,
|
|
1617
1561
|
logging: false,
|
|
1618
1562
|
width: window.innerWidth,
|
|
1619
|
-
height: window.innerHeight
|
|
1620
|
-
onclone: (clonedDoc) => sanitizeUnsupportedColors(clonedDoc)
|
|
1563
|
+
height: window.innerHeight
|
|
1621
1564
|
});
|
|
1622
1565
|
return canvas.toDataURL("image/jpeg", quality);
|
|
1623
1566
|
} catch {
|
|
@@ -2478,7 +2421,7 @@ function PendingMarker({ x, y, accentColor }) {
|
|
|
2478
2421
|
import { useState as useState2, useRef as useRef2, useEffect as useEffect2, useCallback as useCallback2 } from "react";
|
|
2479
2422
|
|
|
2480
2423
|
// src/components/comment-thread/styles.module.scss
|
|
2481
|
-
var css3 = '@keyframes styles-module__threadIn___pBTFZ {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__threadOut___-ccKh {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n.styles-module__thread___ua2EO {\n position: fixed;\n width: 340px;\n max-height: 480px;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100002;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n font-size: 13px;\n color: #1a1a1a;\n animation: styles-module__threadIn___pBTFZ 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__thread___ua2EO.styles-module__exiting___RIPeX {\n animation: styles-module__threadOut___-ccKh 0.12s ease-in forwards;\n pointer-events: none;\n}\n\n.styles-module__header___GiEBq {\n padding: 14px 16px 10px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.styles-module__avatar___JElAd {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__headerInfo___E8809 {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__headerTop___eDiCd {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__authorName___T1BfB {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__timestamp___WusBf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__headerActions___8FsMY {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__headerAction___Tinmq {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__headerAction___Tinmq:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__headerAction___Tinmq svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__title___qkfqY {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.styles-module__commentsList___kYqAR {\n flex: 1;\n overflow-y: auto;\n padding: 0;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__comment___pW3IO {\n padding: 10px 16px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n.styles-module__comment___pW3IO:hover {\n background: #f9fafb;\n}\n.styles-module__comment___pW3IO:hover .styles-module__commentActions___wO0fs {\n opacity: 1;\n}\n\n.styles-module__commentHighlight___EiTmx {\n background: #eff6ff;\n border-left: 2px solid #3b82f6;\n padding-left: 14px;\n}\n\n.styles-module__commentContent___RObGr {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentTop___BbTF3 {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthor___tBjpl {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___0OLrz {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentActions___wO0fs {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.12s;\n}\n\n.styles-module__commentText___ldy2V {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.styles-module__screenshot___jUqau {\n margin-top: 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-width: 200px;\n}\n.styles-module__screenshot___jUqau img {\n width: 100%;\n height: auto;\n display: block;\n}\n.styles-module__screenshot___jUqau .styles-module__screenshotBadge___roEqY {\n position: absolute;\n top: 6px;\n right: 6px;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 500;\n}\n\n.styles-module__fileCard___-iOro {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n text-decoration: none;\n color: inherit;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 200px;\n}\n.styles-module__fileCard___-iOro:hover {\n background: #f3f4f6;\n}\n\n.styles-module__fileIcon___dNJMT {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__fileInfo___dVrLV {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__fileCardName___SHOj- {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__fileCardSize___W53JL {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__pendingFile___-OSRs {\n position: relative;\n margin: 0 16px 8px;\n padding: 8px 10px;\n padding-right: 30px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__divider___kDjxN {\n height: 1px;\n background: #f3f4f6;\n margin: 0;\n}\n\n.styles-module__pendingImage___gHaF3 {\n position: relative;\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 120px;\n}\n.styles-module__pendingImage___gHaF3 img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n max-height: 120px;\n}\n\n.styles-module__pendingRemove___FRL4h {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n.styles-module__pendingRemove___FRL4h:hover {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__replyArea___VQn9b {\n padding: 10px 16px 8px;\n border-top: 1px solid #f3f4f6;\n}\n\n.styles-module__replyInput___uZNBW {\n width: 100%;\n border: none;\n outline: none;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n padding: 0;\n min-height: 36px;\n max-height: 120px;\n line-height: 1.55;\n transition: height 0.1s ease;\n}\n.styles-module__replyInput___uZNBW::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__replyToolbar___fTFJU {\n display: flex;\n align-items: center;\n padding: 4px 16px 10px;\n gap: 4px;\n}\n\n.styles-module__replyTool___Ho-Rx {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replyTool___Ho-Rx:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__replyTool___Ho-Rx svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__replySend___e0VSb {\n margin-left: auto;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replySend___e0VSb:hover {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb.styles-module__active___R--Jj {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__empty___XXGiw {\n padding: 24px 16px;\n text-align: center;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__statusBadge___el8ml {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: auto;\n}\n.styles-module__statusBadge___el8ml.styles-module__todo___rUWBr {\n background: #fef3c7;\n color: #92400e;\n}\n.styles-module__statusBadge___el8ml.styles-module__inProgress___HEWgU {\n background: #dbeafe;\n color: #1e40af;\n}\n.styles-module__statusBadge___el8ml.styles-module__done___zC12n {\n background: #dcfce7;\n color: #166534;\n}\n\n.styles-module__lightbox___KoWEF {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___KoWEF img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___tGZlm {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___tGZlm:hover {\n background: rgba(255, 255, 255, 0.25);\n}';
|
|
2424
|
+
var css3 = '@keyframes styles-module__threadIn___pBTFZ {\n from {\n opacity: 0;\n transform: scale(0.96) translateY(4px);\n }\n to {\n opacity: 1;\n transform: scale(1) translateY(0);\n }\n}\n@keyframes styles-module__threadOut___-ccKh {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.96);\n }\n}\n.styles-module__thread___ua2EO {\n position: fixed;\n width: 340px;\n max-height: min(480px, 100vh - 40px);\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12), 0 2px 8px rgba(0, 0, 0, 0.06);\n z-index: 100002;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n font-size: 13px;\n color: #1a1a1a;\n animation: styles-module__threadIn___pBTFZ 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__thread___ua2EO.styles-module__exiting___RIPeX {\n animation: styles-module__threadOut___-ccKh 0.12s ease-in forwards;\n pointer-events: none;\n}\n\n.styles-module__header___GiEBq {\n padding: 14px 16px 10px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n flex-shrink: 0;\n}\n\n.styles-module__avatar___JElAd {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background: #16a34a;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 11px;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.styles-module__headerInfo___E8809 {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__headerTop___eDiCd {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__authorName___T1BfB {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__timestamp___WusBf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__headerActions___8FsMY {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__headerAction___Tinmq {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__headerAction___Tinmq:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__headerAction___Tinmq svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__title___qkfqY {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n word-break: break-word;\n}\n\n.styles-module__commentsList___kYqAR {\n flex: 1;\n min-height: 0;\n overflow-y: auto;\n padding: 0;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___kYqAR::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__comment___pW3IO {\n padding: 10px 16px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n.styles-module__comment___pW3IO:hover {\n background: #f9fafb;\n}\n.styles-module__comment___pW3IO:hover .styles-module__commentActions___wO0fs {\n opacity: 1;\n}\n\n.styles-module__commentHighlight___EiTmx {\n background: #eff6ff;\n border-left: 2px solid #3b82f6;\n padding-left: 14px;\n}\n\n.styles-module__commentContent___RObGr {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentTop___BbTF3 {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthor___tBjpl {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___0OLrz {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentActions___wO0fs {\n display: flex;\n gap: 2px;\n opacity: 0;\n transition: opacity 0.12s;\n}\n\n.styles-module__commentText___ldy2V {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.styles-module__screenshot___jUqau {\n margin-top: 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-width: 200px;\n}\n.styles-module__screenshot___jUqau img {\n width: 100%;\n height: auto;\n display: block;\n}\n.styles-module__screenshot___jUqau .styles-module__screenshotBadge___roEqY {\n position: absolute;\n top: 6px;\n right: 6px;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n font-size: 10px;\n padding: 2px 6px;\n border-radius: 4px;\n font-weight: 500;\n}\n\n.styles-module__fileCard___-iOro {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 8px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n text-decoration: none;\n color: inherit;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 200px;\n}\n.styles-module__fileCard___-iOro:hover {\n background: #f3f4f6;\n}\n\n.styles-module__fileIcon___dNJMT {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n background: #e5e7eb;\n color: #374151;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 10px;\n font-weight: 700;\n flex-shrink: 0;\n letter-spacing: 0.5px;\n}\n\n.styles-module__fileInfo___dVrLV {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__fileCardName___SHOj- {\n font-size: 12px;\n font-weight: 500;\n color: #1a1a1a;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__fileCardSize___W53JL {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__pendingFile___-OSRs {\n position: relative;\n margin: 0 16px 8px;\n padding: 8px 10px;\n padding-right: 30px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__divider___kDjxN {\n height: 1px;\n background: #f3f4f6;\n margin: 0;\n flex-shrink: 0;\n}\n\n.styles-module__pendingImage___gHaF3 {\n position: relative;\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 120px;\n flex-shrink: 0;\n}\n.styles-module__pendingImage___gHaF3 img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n max-height: 120px;\n}\n\n.styles-module__pendingRemove___FRL4h {\n position: absolute;\n top: 4px;\n right: 4px;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.6);\n color: #fff;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n line-height: 1;\n padding: 0;\n}\n.styles-module__pendingRemove___FRL4h:hover {\n background: rgba(0, 0, 0, 0.8);\n}\n\n.styles-module__replyArea___VQn9b {\n padding: 10px 16px 8px;\n border-top: 1px solid #f3f4f6;\n flex-shrink: 0;\n}\n\n.styles-module__replyInput___uZNBW {\n width: 100%;\n border: none;\n outline: none;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n padding: 0;\n min-height: 36px;\n max-height: 120px;\n line-height: 1.55;\n transition: height 0.1s ease;\n}\n.styles-module__replyInput___uZNBW::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__replyToolbar___fTFJU {\n display: flex;\n align-items: center;\n padding: 4px 16px 10px;\n gap: 4px;\n flex-shrink: 0;\n}\n\n.styles-module__replyTool___Ho-Rx {\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replyTool___Ho-Rx:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__replyTool___Ho-Rx svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__replySend___e0VSb {\n margin-left: auto;\n width: 28px;\n height: 28px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__replySend___e0VSb:hover {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb.styles-module__active___R--Jj {\n color: #3b82f6;\n}\n.styles-module__replySend___e0VSb svg {\n width: 16px;\n height: 16px;\n}\n\n.styles-module__empty___XXGiw {\n padding: 24px 16px;\n text-align: center;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__statusBadge___el8ml {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n font-weight: 500;\n padding: 2px 8px;\n border-radius: 10px;\n margin-left: auto;\n}\n.styles-module__statusBadge___el8ml.styles-module__todo___rUWBr {\n background: #fef3c7;\n color: #92400e;\n}\n.styles-module__statusBadge___el8ml.styles-module__inProgress___HEWgU {\n background: #dbeafe;\n color: #1e40af;\n}\n.styles-module__statusBadge___el8ml.styles-module__done___zC12n {\n background: #dcfce7;\n color: #166534;\n}\n\n.styles-module__lightbox___KoWEF {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.8);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: zoom-out;\n}\n.styles-module__lightbox___KoWEF img {\n max-width: 90vw;\n max-height: 90vh;\n border-radius: 8px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);\n cursor: default;\n}\n\n.styles-module__lightboxClose___tGZlm {\n position: absolute;\n top: 16px;\n right: 16px;\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.15);\n color: #fff;\n border: none;\n cursor: pointer;\n font-size: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n.styles-module__lightboxClose___tGZlm:hover {\n background: rgba(255, 255, 255, 0.25);\n}';
|
|
2482
2425
|
var classNames3 = { "thread": "styles-module__thread___ua2EO", "threadIn": "styles-module__threadIn___pBTFZ", "exiting": "styles-module__exiting___RIPeX", "threadOut": "styles-module__threadOut___-ccKh", "header": "styles-module__header___GiEBq", "avatar": "styles-module__avatar___JElAd", "headerInfo": "styles-module__headerInfo___E8809", "headerTop": "styles-module__headerTop___eDiCd", "authorName": "styles-module__authorName___T1BfB", "timestamp": "styles-module__timestamp___WusBf", "headerActions": "styles-module__headerActions___8FsMY", "headerAction": "styles-module__headerAction___Tinmq", "title": "styles-module__title___qkfqY", "commentsList": "styles-module__commentsList___kYqAR", "comment": "styles-module__comment___pW3IO", "commentActions": "styles-module__commentActions___wO0fs", "commentHighlight": "styles-module__commentHighlight___EiTmx", "commentContent": "styles-module__commentContent___RObGr", "commentTop": "styles-module__commentTop___BbTF3", "commentAuthor": "styles-module__commentAuthor___tBjpl", "commentTime": "styles-module__commentTime___0OLrz", "commentText": "styles-module__commentText___ldy2V", "screenshot": "styles-module__screenshot___jUqau", "screenshotBadge": "styles-module__screenshotBadge___roEqY", "fileCard": "styles-module__fileCard___-iOro", "fileIcon": "styles-module__fileIcon___dNJMT", "fileInfo": "styles-module__fileInfo___dVrLV", "fileCardName": "styles-module__fileCardName___SHOj-", "fileCardSize": "styles-module__fileCardSize___W53JL", "pendingFile": "styles-module__pendingFile___-OSRs", "divider": "styles-module__divider___kDjxN", "pendingImage": "styles-module__pendingImage___gHaF3", "pendingRemove": "styles-module__pendingRemove___FRL4h", "replyArea": "styles-module__replyArea___VQn9b", "replyInput": "styles-module__replyInput___uZNBW", "replyToolbar": "styles-module__replyToolbar___fTFJU", "replyTool": "styles-module__replyTool___Ho-Rx", "replySend": "styles-module__replySend___e0VSb", "active": "styles-module__active___R--Jj", "empty": "styles-module__empty___XXGiw", "statusBadge": "styles-module__statusBadge___el8ml", "todo": "styles-module__todo___rUWBr", "inProgress": "styles-module__inProgress___HEWgU", "done": "styles-module__done___zC12n", "lightbox": "styles-module__lightbox___KoWEF", "lightboxClose": "styles-module__lightboxClose___tGZlm" };
|
|
2483
2426
|
if (typeof document !== "undefined") {
|
|
2484
2427
|
let style = document.getElementById("impakers-debug-styles-comment-thread-styles");
|
|
@@ -2677,10 +2620,10 @@ function CommentThread({
|
|
|
2677
2620
|
onClick: (e) => e.stopPropagation(),
|
|
2678
2621
|
children: [
|
|
2679
2622
|
/* @__PURE__ */ jsxs4("div", { className: styles_module_default3.header, children: [
|
|
2680
|
-
/* @__PURE__ */ jsx4("div", { className: styles_module_default3.avatar, children: getInitials(currentUserName) }),
|
|
2623
|
+
/* @__PURE__ */ jsx4("div", { className: styles_module_default3.avatar, children: getInitials(task.authorName || currentUserName) }),
|
|
2681
2624
|
/* @__PURE__ */ jsxs4("div", { className: styles_module_default3.headerInfo, children: [
|
|
2682
2625
|
/* @__PURE__ */ jsxs4("div", { className: styles_module_default3.headerTop, children: [
|
|
2683
|
-
/* @__PURE__ */ jsx4("span", { className: styles_module_default3.authorName, children: currentUserName }),
|
|
2626
|
+
/* @__PURE__ */ jsx4("span", { className: styles_module_default3.authorName, children: task.authorName || currentUserName }),
|
|
2684
2627
|
/* @__PURE__ */ jsx4("span", { className: styles_module_default3.timestamp, children: timeAgo(task.createdAt) })
|
|
2685
2628
|
] }),
|
|
2686
2629
|
/* @__PURE__ */ jsx4("div", { className: styles_module_default3.title, children: feedbackTitle })
|
|
@@ -3397,8 +3340,9 @@ import { createPortal as createPortal2 } from "react-dom";
|
|
|
3397
3340
|
var SETTINGS_KEY = "impakers-debug-settings";
|
|
3398
3341
|
var DEFAULTS = {
|
|
3399
3342
|
markerColor: "#6366f1",
|
|
3400
|
-
|
|
3401
|
-
|
|
3343
|
+
markersVisible: true,
|
|
3344
|
+
hideDoneMarkers: false,
|
|
3345
|
+
showOnlyMine: false
|
|
3402
3346
|
};
|
|
3403
3347
|
function loadSettings() {
|
|
3404
3348
|
try {
|
|
@@ -3444,6 +3388,12 @@ function SettingsPanel({ settings, onChange, onClose }) {
|
|
|
3444
3388
|
const handleToggleMarkers = useCallback5(() => {
|
|
3445
3389
|
onChange({ ...settings, markersVisible: !settings.markersVisible });
|
|
3446
3390
|
}, [settings, onChange]);
|
|
3391
|
+
const handleToggleHideDone = useCallback5(() => {
|
|
3392
|
+
onChange({ ...settings, hideDoneMarkers: !settings.hideDoneMarkers });
|
|
3393
|
+
}, [settings, onChange]);
|
|
3394
|
+
const handleToggleShowOnlyMine = useCallback5(() => {
|
|
3395
|
+
onChange({ ...settings, showOnlyMine: !settings.showOnlyMine });
|
|
3396
|
+
}, [settings, onChange]);
|
|
3447
3397
|
const handleColorChange = useCallback5((color) => {
|
|
3448
3398
|
onChange({ ...settings, markerColor: color });
|
|
3449
3399
|
}, [settings, onChange]);
|
|
@@ -3469,6 +3419,30 @@ function SettingsPanel({ settings, onChange, onClose }) {
|
|
|
3469
3419
|
}
|
|
3470
3420
|
)
|
|
3471
3421
|
] }),
|
|
3422
|
+
/* @__PURE__ */ jsxs7("div", { className: styles_module_default6.field, children: [
|
|
3423
|
+
/* @__PURE__ */ jsx7("div", { className: styles_module_default6.fieldLabel, children: "\uC644\uB8CC \uD540 \uC228\uAE30\uAE30" }),
|
|
3424
|
+
/* @__PURE__ */ jsx7(
|
|
3425
|
+
"button",
|
|
3426
|
+
{
|
|
3427
|
+
className: `${styles_module_default6.toggle} ${settings.hideDoneMarkers ? styles_module_default6.on : ""}`,
|
|
3428
|
+
onClick: handleToggleHideDone,
|
|
3429
|
+
type: "button",
|
|
3430
|
+
children: /* @__PURE__ */ jsx7("span", { className: styles_module_default6.toggleThumb })
|
|
3431
|
+
}
|
|
3432
|
+
)
|
|
3433
|
+
] }),
|
|
3434
|
+
/* @__PURE__ */ jsxs7("div", { className: styles_module_default6.field, children: [
|
|
3435
|
+
/* @__PURE__ */ jsx7("div", { className: styles_module_default6.fieldLabel, children: "\uB0B4\uAC00 \uCD94\uAC00\uD55C \uAC83\uB9CC" }),
|
|
3436
|
+
/* @__PURE__ */ jsx7(
|
|
3437
|
+
"button",
|
|
3438
|
+
{
|
|
3439
|
+
className: `${styles_module_default6.toggle} ${settings.showOnlyMine ? styles_module_default6.on : ""}`,
|
|
3440
|
+
onClick: handleToggleShowOnlyMine,
|
|
3441
|
+
type: "button",
|
|
3442
|
+
children: /* @__PURE__ */ jsx7("span", { className: styles_module_default6.toggleThumb })
|
|
3443
|
+
}
|
|
3444
|
+
)
|
|
3445
|
+
] }),
|
|
3472
3446
|
/* @__PURE__ */ jsxs7("div", { className: styles_module_default6.field, children: [
|
|
3473
3447
|
/* @__PURE__ */ jsx7("div", { className: styles_module_default6.fieldLabel, children: "\uB9C8\uCEE4 \uC0C9\uC0C1" }),
|
|
3474
3448
|
/* @__PURE__ */ jsx7("div", { className: styles_module_default6.colors, children: MARKER_COLORS.map((c) => /* @__PURE__ */ jsx7(
|
|
@@ -3904,15 +3878,17 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
3904
3878
|
if (routeMatch?.context) {
|
|
3905
3879
|
metadata.routeDebug = routeMatch.context;
|
|
3906
3880
|
}
|
|
3907
|
-
const
|
|
3881
|
+
const debugParts = [];
|
|
3882
|
+
debugParts.push(`## \uD53C\uB4DC\uBC31 ${comment}`);
|
|
3908
3883
|
if (debugTargets.length > 0) {
|
|
3909
|
-
|
|
3910
|
-
|
|
3911
|
-
|
|
3912
|
-
|
|
3913
|
-
|
|
3914
|
-
}
|
|
3915
|
-
|
|
3884
|
+
debugParts.push("");
|
|
3885
|
+
debugParts.push("---");
|
|
3886
|
+
debugParts.push("");
|
|
3887
|
+
debugParts.push("**\uB514\uBC84\uAE45 \uD0C0\uAC9F \uD30C\uC77C**:");
|
|
3888
|
+
debugTargets.forEach((target) => {
|
|
3889
|
+
const suffix = target.line ? `:${target.line}${typeof target.column === "number" ? `:${target.column}` : ""}` : "";
|
|
3890
|
+
debugParts.push(`- [${target.kind}] \`${target.file}${suffix}\` (${target.reason})`);
|
|
3891
|
+
});
|
|
3916
3892
|
}
|
|
3917
3893
|
const elementInfo = [];
|
|
3918
3894
|
if (pendingAnnotation.element) {
|
|
@@ -3942,29 +3918,67 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
3942
3918
|
elementInfo.push(`**\uC811\uADFC\uC131**: ${pendingAnnotation.accessibility}`);
|
|
3943
3919
|
}
|
|
3944
3920
|
if (elementInfo.length > 0) {
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
3948
|
-
|
|
3921
|
+
debugParts.push("");
|
|
3922
|
+
debugParts.push("---");
|
|
3923
|
+
debugParts.push("");
|
|
3924
|
+
elementInfo.forEach((line) => debugParts.push(line));
|
|
3949
3925
|
}
|
|
3950
3926
|
if (metadata.consoleErrors?.length) {
|
|
3951
|
-
|
|
3952
|
-
|
|
3953
|
-
|
|
3927
|
+
debugParts.push("");
|
|
3928
|
+
debugParts.push("---");
|
|
3929
|
+
debugParts.push("");
|
|
3930
|
+
debugParts.push("**\uCD5C\uADFC \uCF58\uC194 \uC5D0\uB7EC**:");
|
|
3931
|
+
metadata.consoleErrors.slice(-10).forEach((e) => debugParts.push(`- \`${e.slice(0, 200)}\``));
|
|
3954
3932
|
}
|
|
3955
3933
|
if (metadata.consoleLogs?.length) {
|
|
3956
3934
|
const recentLogs = metadata.consoleLogs.filter((l) => l.level === "error" || l.level === "warn").slice(-10);
|
|
3957
3935
|
if (recentLogs.length > 0) {
|
|
3958
|
-
|
|
3959
|
-
**\uCD5C\uADFC \uCF58\uC194 \uB85C\uADF8
|
|
3960
|
-
recentLogs.forEach((l) =>
|
|
3936
|
+
debugParts.push("");
|
|
3937
|
+
debugParts.push("**\uCD5C\uADFC \uCF58\uC194 \uB85C\uADF8**:");
|
|
3938
|
+
recentLogs.forEach((l) => debugParts.push(`- [${l.level}] \`${l.message.slice(0, 200)}\``));
|
|
3939
|
+
}
|
|
3940
|
+
}
|
|
3941
|
+
debugParts.push("");
|
|
3942
|
+
debugParts.push("---");
|
|
3943
|
+
debugParts.push("");
|
|
3944
|
+
debugParts.push("## \uD658\uACBD \uC815\uBCF4");
|
|
3945
|
+
debugParts.push("");
|
|
3946
|
+
debugParts.push(`- **URL**: ${metadata.url}`);
|
|
3947
|
+
debugParts.push(`- **\uC2DC\uC810**: ${new Date(metadata.timestamp).toLocaleString("ko-KR")}`);
|
|
3948
|
+
debugParts.push(`- **\uBE0C\uB77C\uC6B0\uC800**: ${metadata.browser}`);
|
|
3949
|
+
debugParts.push(`- **\uD654\uBA74**: ${metadata.viewport} (@${metadata.pixelRatio}x)`);
|
|
3950
|
+
debugParts.push(`- **\uC5B8\uC5B4**: ${metadata.language}`);
|
|
3951
|
+
if (metadata.user?.name) {
|
|
3952
|
+
debugParts.push(`- **\uC0AC\uC6A9\uC790**: ${metadata.user.name}`);
|
|
3953
|
+
}
|
|
3954
|
+
if (metadata.performance && Object.keys(metadata.performance).length > 0) {
|
|
3955
|
+
debugParts.push("");
|
|
3956
|
+
debugParts.push("---");
|
|
3957
|
+
debugParts.push("");
|
|
3958
|
+
debugParts.push("## \uC131\uB2A5");
|
|
3959
|
+
debugParts.push("");
|
|
3960
|
+
debugParts.push("| \uD56D\uBAA9 | \uAC12 |");
|
|
3961
|
+
debugParts.push("|------|-----|");
|
|
3962
|
+
const perfLabels = {
|
|
3963
|
+
pageLoadTime: "\uD398\uC774\uC9C0 \uB85C\uB529",
|
|
3964
|
+
domContentLoaded: "DOM \uB85C\uB4DC",
|
|
3965
|
+
ttfb: "TTFB",
|
|
3966
|
+
firstContentfulPaint: "FCP",
|
|
3967
|
+
usedJSHeapMB: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9",
|
|
3968
|
+
totalJSHeapMB: "\uBA54\uBAA8\uB9AC \uC804\uCCB4"
|
|
3969
|
+
};
|
|
3970
|
+
for (const [key, value] of Object.entries(metadata.performance)) {
|
|
3971
|
+
const label = perfLabels[key] || key;
|
|
3972
|
+
const unit = key.includes("Heap") ? "MB" : "ms";
|
|
3973
|
+
debugParts.push(`| ${label} | ${value}${unit} |`);
|
|
3961
3974
|
}
|
|
3962
3975
|
}
|
|
3963
3976
|
const result = await submitFeedback(endpoint, {
|
|
3964
3977
|
title: comment.slice(0, 100),
|
|
3965
|
-
description:
|
|
3978
|
+
description: "",
|
|
3966
3979
|
priority: "medium",
|
|
3967
3980
|
metadata,
|
|
3981
|
+
debugInfo: debugParts.join("\n"),
|
|
3968
3982
|
screenshot,
|
|
3969
3983
|
feedbackUrl: window.location.pathname,
|
|
3970
3984
|
feedbackMarker: {
|
|
@@ -4138,6 +4152,15 @@ ${elementInfo.join("\n")}`);
|
|
|
4138
4152
|
}
|
|
4139
4153
|
];
|
|
4140
4154
|
const currentPath = routePath;
|
|
4155
|
+
const currentUserName = getUser?.()?.name ? String(getUser().name) : null;
|
|
4156
|
+
const visibleAnnotations = useMemo(() => {
|
|
4157
|
+
return annotations.filter((a) => {
|
|
4158
|
+
const task = serverTasks.find((t) => t.id === a.id);
|
|
4159
|
+
if (settings.hideDoneMarkers && (a.status === "done" || a.status === "resolved")) return false;
|
|
4160
|
+
if (settings.showOnlyMine && task?.authorName && currentUserName && task.authorName !== currentUserName) return false;
|
|
4161
|
+
return true;
|
|
4162
|
+
});
|
|
4163
|
+
}, [annotations, serverTasks, settings.hideDoneMarkers, settings.showOnlyMine, currentUserName]);
|
|
4141
4164
|
const allInboxItems = serverTasks.map((task) => ({
|
|
4142
4165
|
id: task.id,
|
|
4143
4166
|
title: task.title || "\uD53C\uB4DC\uBC31",
|
|
@@ -4256,7 +4279,7 @@ ${elementInfo.join("\n")}`);
|
|
|
4256
4279
|
);
|
|
4257
4280
|
})()
|
|
4258
4281
|
] }),
|
|
4259
|
-
/* @__PURE__ */ jsx8("div", { className: styles_module_default7.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children:
|
|
4282
|
+
/* @__PURE__ */ jsx8("div", { className: styles_module_default7.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: visibleAnnotations.filter((a) => !a.isFixed).map((annotation, i) => /* @__PURE__ */ jsx8(
|
|
4260
4283
|
AnnotationMarker,
|
|
4261
4284
|
{
|
|
4262
4285
|
annotation,
|
|
@@ -4275,7 +4298,7 @@ ${elementInfo.join("\n")}`);
|
|
|
4275
4298
|
annotation.id
|
|
4276
4299
|
)) }),
|
|
4277
4300
|
/* @__PURE__ */ jsxs8("div", { className: styles_module_default7.fixedMarkersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: [
|
|
4278
|
-
|
|
4301
|
+
visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ jsx8(
|
|
4279
4302
|
AnnotationMarker,
|
|
4280
4303
|
{
|
|
4281
4304
|
annotation,
|
|
@@ -4334,6 +4357,7 @@ ${elementInfo.join("\n")}`);
|
|
|
4334
4357
|
id: annotation.id,
|
|
4335
4358
|
title: taskData?.title || annotation.comment || "\uD53C\uB4DC\uBC31",
|
|
4336
4359
|
status: taskData?.status || "todo",
|
|
4360
|
+
authorName: taskData?.authorName || void 0,
|
|
4337
4361
|
createdAt: taskData?.createdAt || new Date(annotation.timestamp).toISOString(),
|
|
4338
4362
|
comments: threadComments[annotation.id] || []
|
|
4339
4363
|
};
|