@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 CHANGED
@@ -1569,70 +1569,14 @@ function findNearestComponentSource(element, maxAncestors = 10) {
1569
1569
  }
1570
1570
 
1571
1571
  // src/utils/capture-element.ts
1572
- var UNSUPPORTED_RE = /\b(?:oklab|oklch|color-mix|(?<![\w-])lab|(?<![\w-])lch)\s*\(/i;
1573
- var COLOR_PROPS = [
1574
- "color",
1575
- "background-color",
1576
- "background-image",
1577
- "background",
1578
- "border-color",
1579
- "border-top-color",
1580
- "border-right-color",
1581
- "border-bottom-color",
1582
- "border-left-color",
1583
- "outline-color",
1584
- "text-decoration-color",
1585
- "box-shadow",
1586
- "text-shadow",
1587
- "caret-color",
1588
- "column-rule-color",
1589
- "fill",
1590
- "stroke",
1591
- "stop-color",
1592
- "flood-color",
1593
- "lighting-color"
1594
- ];
1595
- function sanitizeUnsupportedColors(clonedDoc) {
1596
- const allEls = clonedDoc.querySelectorAll("*");
1597
- for (let i = 0; i < allEls.length; i++) {
1598
- const el = allEls[i];
1599
- if (!el.style) continue;
1600
- let cs = null;
1601
- for (const prop of COLOR_PROPS) {
1602
- const inlineVal = el.style.getPropertyValue(prop);
1603
- if (inlineVal && UNSUPPORTED_RE.test(inlineVal)) {
1604
- el.style.setProperty(prop, getFallback(prop));
1605
- continue;
1606
- }
1607
- if (!cs) {
1608
- try {
1609
- cs = clonedDoc.defaultView.getComputedStyle(el);
1610
- } catch {
1611
- break;
1612
- }
1613
- }
1614
- const val = cs.getPropertyValue(prop);
1615
- if (val && UNSUPPORTED_RE.test(val)) {
1616
- el.style.setProperty(prop, getFallback(prop));
1617
- }
1618
- }
1619
- }
1620
- }
1621
- function getFallback(prop) {
1622
- if (prop === "background-image" || prop === "background") return "none";
1623
- if (prop === "box-shadow" || prop === "text-shadow") return "none";
1624
- if (prop === "color") return "inherit";
1625
- return "transparent";
1626
- }
1627
1572
  async function captureElement(el, options = {}) {
1628
1573
  const { quality = 0.7, maxScale = 2 } = options;
1629
- const html2canvas = (await import("html2canvas")).default;
1574
+ const html2canvas = (await import("html2canvas-pro")).default;
1630
1575
  const canvas = await html2canvas(el, {
1631
1576
  useCORS: true,
1632
1577
  allowTaint: true,
1633
1578
  scale: Math.min(window.devicePixelRatio, maxScale),
1634
- logging: false,
1635
- onclone: (clonedDoc) => sanitizeUnsupportedColors(clonedDoc)
1579
+ logging: false
1636
1580
  });
1637
1581
  return canvas.toDataURL("image/jpeg", quality);
1638
1582
  }
@@ -1643,15 +1587,14 @@ async function captureFullPage(options = {}) {
1643
1587
  const hiddenEls = document.querySelectorAll(allSelectors.join(", "));
1644
1588
  try {
1645
1589
  hiddenEls.forEach((el) => el.style.visibility = "hidden");
1646
- const html2canvas = (await import("html2canvas")).default;
1590
+ const html2canvas = (await import("html2canvas-pro")).default;
1647
1591
  const canvas = await html2canvas(document.body, {
1648
1592
  useCORS: true,
1649
1593
  allowTaint: true,
1650
1594
  scale: 1,
1651
1595
  logging: false,
1652
1596
  width: window.innerWidth,
1653
- height: window.innerHeight,
1654
- onclone: (clonedDoc) => sanitizeUnsupportedColors(clonedDoc)
1597
+ height: window.innerHeight
1655
1598
  });
1656
1599
  return canvas.toDataURL("image/jpeg", quality);
1657
1600
  } catch {
@@ -2512,7 +2455,7 @@ function PendingMarker({ x, y, accentColor }) {
2512
2455
  var import_react3 = require("react");
2513
2456
 
2514
2457
  // src/components/comment-thread/styles.module.scss
2515
- 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}';
2458
+ 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}';
2516
2459
  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" };
2517
2460
  if (typeof document !== "undefined") {
2518
2461
  let style = document.getElementById("impakers-debug-styles-comment-thread-styles");
@@ -2711,10 +2654,10 @@ function CommentThread({
2711
2654
  onClick: (e) => e.stopPropagation(),
2712
2655
  children: [
2713
2656
  /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.header, children: [
2714
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.avatar, children: getInitials(currentUserName) }),
2657
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.avatar, children: getInitials(task.authorName || currentUserName) }),
2715
2658
  /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.headerInfo, children: [
2716
2659
  /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.headerTop, children: [
2717
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.authorName, children: currentUserName }),
2660
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.authorName, children: task.authorName || currentUserName }),
2718
2661
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.timestamp, children: timeAgo(task.createdAt) })
2719
2662
  ] }),
2720
2663
  /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.title, children: feedbackTitle })
@@ -3431,8 +3374,9 @@ var import_react_dom2 = require("react-dom");
3431
3374
  var SETTINGS_KEY = "impakers-debug-settings";
3432
3375
  var DEFAULTS = {
3433
3376
  markerColor: "#6366f1",
3434
- // indigo — 눈에 잘 보이는 기본 색상
3435
- markersVisible: true
3377
+ markersVisible: true,
3378
+ hideDoneMarkers: false,
3379
+ showOnlyMine: false
3436
3380
  };
3437
3381
  function loadSettings() {
3438
3382
  try {
@@ -3478,6 +3422,12 @@ function SettingsPanel({ settings, onChange, onClose }) {
3478
3422
  const handleToggleMarkers = (0, import_react6.useCallback)(() => {
3479
3423
  onChange({ ...settings, markersVisible: !settings.markersVisible });
3480
3424
  }, [settings, onChange]);
3425
+ const handleToggleHideDone = (0, import_react6.useCallback)(() => {
3426
+ onChange({ ...settings, hideDoneMarkers: !settings.hideDoneMarkers });
3427
+ }, [settings, onChange]);
3428
+ const handleToggleShowOnlyMine = (0, import_react6.useCallback)(() => {
3429
+ onChange({ ...settings, showOnlyMine: !settings.showOnlyMine });
3430
+ }, [settings, onChange]);
3481
3431
  const handleColorChange = (0, import_react6.useCallback)((color) => {
3482
3432
  onChange({ ...settings, markerColor: color });
3483
3433
  }, [settings, onChange]);
@@ -3503,6 +3453,30 @@ function SettingsPanel({ settings, onChange, onClose }) {
3503
3453
  }
3504
3454
  )
3505
3455
  ] }),
3456
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3457
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uC644\uB8CC \uD540 \uC228\uAE30\uAE30" }),
3458
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3459
+ "button",
3460
+ {
3461
+ className: `${styles_module_default6.toggle} ${settings.hideDoneMarkers ? styles_module_default6.on : ""}`,
3462
+ onClick: handleToggleHideDone,
3463
+ type: "button",
3464
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.toggleThumb })
3465
+ }
3466
+ )
3467
+ ] }),
3468
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3469
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uB0B4\uAC00 \uCD94\uAC00\uD55C \uAC83\uB9CC" }),
3470
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3471
+ "button",
3472
+ {
3473
+ className: `${styles_module_default6.toggle} ${settings.showOnlyMine ? styles_module_default6.on : ""}`,
3474
+ onClick: handleToggleShowOnlyMine,
3475
+ type: "button",
3476
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.toggleThumb })
3477
+ }
3478
+ )
3479
+ ] }),
3506
3480
  /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.field, children: [
3507
3481
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.fieldLabel, children: "\uB9C8\uCEE4 \uC0C9\uC0C1" }),
3508
3482
  /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.colors, children: MARKER_COLORS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
@@ -3938,15 +3912,17 @@ function DebugWidget({ endpoint, getUser, onHide }) {
3938
3912
  if (routeMatch?.context) {
3939
3913
  metadata.routeDebug = routeMatch.context;
3940
3914
  }
3941
- const descriptionParts = [comment];
3915
+ const debugParts = [];
3916
+ debugParts.push(`## \uD53C\uB4DC\uBC31 ${comment}`);
3942
3917
  if (debugTargets.length > 0) {
3943
- descriptionParts.push(
3944
- "\n\n---\n**\uB514\uBC84\uAE45 \uD0C0\uAC9F \uD30C\uC77C**:",
3945
- ...debugTargets.map((target) => {
3946
- const suffix = target.line ? `:${target.line}${typeof target.column === "number" ? `:${target.column}` : ""}` : "";
3947
- return `- [${target.kind}] \`${target.file}${suffix}\` (${target.reason})`;
3948
- })
3949
- );
3918
+ debugParts.push("");
3919
+ debugParts.push("---");
3920
+ debugParts.push("");
3921
+ debugParts.push("**\uB514\uBC84\uAE45 \uD0C0\uAC9F \uD30C\uC77C**:");
3922
+ debugTargets.forEach((target) => {
3923
+ const suffix = target.line ? `:${target.line}${typeof target.column === "number" ? `:${target.column}` : ""}` : "";
3924
+ debugParts.push(`- [${target.kind}] \`${target.file}${suffix}\` (${target.reason})`);
3925
+ });
3950
3926
  }
3951
3927
  const elementInfo = [];
3952
3928
  if (pendingAnnotation.element) {
@@ -3976,29 +3952,67 @@ function DebugWidget({ endpoint, getUser, onHide }) {
3976
3952
  elementInfo.push(`**\uC811\uADFC\uC131**: ${pendingAnnotation.accessibility}`);
3977
3953
  }
3978
3954
  if (elementInfo.length > 0) {
3979
- descriptionParts.push(`
3980
-
3981
- ---
3982
- ${elementInfo.join("\n")}`);
3955
+ debugParts.push("");
3956
+ debugParts.push("---");
3957
+ debugParts.push("");
3958
+ elementInfo.forEach((line) => debugParts.push(line));
3983
3959
  }
3984
3960
  if (metadata.consoleErrors?.length) {
3985
- descriptionParts.push(`
3986
- **\uCD5C\uADFC \uCF58\uC194 \uC5D0\uB7EC**:`);
3987
- metadata.consoleErrors.slice(-10).forEach((e) => descriptionParts.push(`- \`${e.slice(0, 200)}\``));
3961
+ debugParts.push("");
3962
+ debugParts.push("---");
3963
+ debugParts.push("");
3964
+ debugParts.push("**\uCD5C\uADFC \uCF58\uC194 \uC5D0\uB7EC**:");
3965
+ metadata.consoleErrors.slice(-10).forEach((e) => debugParts.push(`- \`${e.slice(0, 200)}\``));
3988
3966
  }
3989
3967
  if (metadata.consoleLogs?.length) {
3990
3968
  const recentLogs = metadata.consoleLogs.filter((l) => l.level === "error" || l.level === "warn").slice(-10);
3991
3969
  if (recentLogs.length > 0) {
3992
- descriptionParts.push(`
3993
- **\uCD5C\uADFC \uCF58\uC194 \uB85C\uADF8**:`);
3994
- recentLogs.forEach((l) => descriptionParts.push(`- [${l.level}] \`${l.message.slice(0, 200)}\``));
3970
+ debugParts.push("");
3971
+ debugParts.push("**\uCD5C\uADFC \uCF58\uC194 \uB85C\uADF8**:");
3972
+ recentLogs.forEach((l) => debugParts.push(`- [${l.level}] \`${l.message.slice(0, 200)}\``));
3973
+ }
3974
+ }
3975
+ debugParts.push("");
3976
+ debugParts.push("---");
3977
+ debugParts.push("");
3978
+ debugParts.push("## \uD658\uACBD \uC815\uBCF4");
3979
+ debugParts.push("");
3980
+ debugParts.push(`- **URL**: ${metadata.url}`);
3981
+ debugParts.push(`- **\uC2DC\uC810**: ${new Date(metadata.timestamp).toLocaleString("ko-KR")}`);
3982
+ debugParts.push(`- **\uBE0C\uB77C\uC6B0\uC800**: ${metadata.browser}`);
3983
+ debugParts.push(`- **\uD654\uBA74**: ${metadata.viewport} (@${metadata.pixelRatio}x)`);
3984
+ debugParts.push(`- **\uC5B8\uC5B4**: ${metadata.language}`);
3985
+ if (metadata.user?.name) {
3986
+ debugParts.push(`- **\uC0AC\uC6A9\uC790**: ${metadata.user.name}`);
3987
+ }
3988
+ if (metadata.performance && Object.keys(metadata.performance).length > 0) {
3989
+ debugParts.push("");
3990
+ debugParts.push("---");
3991
+ debugParts.push("");
3992
+ debugParts.push("## \uC131\uB2A5");
3993
+ debugParts.push("");
3994
+ debugParts.push("| \uD56D\uBAA9 | \uAC12 |");
3995
+ debugParts.push("|------|-----|");
3996
+ const perfLabels = {
3997
+ pageLoadTime: "\uD398\uC774\uC9C0 \uB85C\uB529",
3998
+ domContentLoaded: "DOM \uB85C\uB4DC",
3999
+ ttfb: "TTFB",
4000
+ firstContentfulPaint: "FCP",
4001
+ usedJSHeapMB: "\uBA54\uBAA8\uB9AC \uC0AC\uC6A9",
4002
+ totalJSHeapMB: "\uBA54\uBAA8\uB9AC \uC804\uCCB4"
4003
+ };
4004
+ for (const [key, value] of Object.entries(metadata.performance)) {
4005
+ const label = perfLabels[key] || key;
4006
+ const unit = key.includes("Heap") ? "MB" : "ms";
4007
+ debugParts.push(`| ${label} | ${value}${unit} |`);
3995
4008
  }
3996
4009
  }
3997
4010
  const result = await submitFeedback(endpoint, {
3998
4011
  title: comment.slice(0, 100),
3999
- description: descriptionParts.join("\n"),
4012
+ description: "",
4000
4013
  priority: "medium",
4001
4014
  metadata,
4015
+ debugInfo: debugParts.join("\n"),
4002
4016
  screenshot,
4003
4017
  feedbackUrl: window.location.pathname,
4004
4018
  feedbackMarker: {
@@ -4172,6 +4186,15 @@ ${elementInfo.join("\n")}`);
4172
4186
  }
4173
4187
  ];
4174
4188
  const currentPath = routePath;
4189
+ const currentUserName = getUser?.()?.name ? String(getUser().name) : null;
4190
+ const visibleAnnotations = (0, import_react7.useMemo)(() => {
4191
+ return annotations.filter((a) => {
4192
+ const task = serverTasks.find((t) => t.id === a.id);
4193
+ if (settings.hideDoneMarkers && (a.status === "done" || a.status === "resolved")) return false;
4194
+ if (settings.showOnlyMine && task?.authorName && currentUserName && task.authorName !== currentUserName) return false;
4195
+ return true;
4196
+ });
4197
+ }, [annotations, serverTasks, settings.hideDoneMarkers, settings.showOnlyMine, currentUserName]);
4175
4198
  const allInboxItems = serverTasks.map((task) => ({
4176
4199
  id: task.id,
4177
4200
  title: task.title || "\uD53C\uB4DC\uBC31",
@@ -4290,7 +4313,7 @@ ${elementInfo.join("\n")}`);
4290
4313
  );
4291
4314
  })()
4292
4315
  ] }),
4293
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: annotations.filter((a) => !a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4316
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("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__ */ (0, import_jsx_runtime8.jsx)(
4294
4317
  AnnotationMarker,
4295
4318
  {
4296
4319
  annotation,
@@ -4309,7 +4332,7 @@ ${elementInfo.join("\n")}`);
4309
4332
  annotation.id
4310
4333
  )) }),
4311
4334
  /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.fixedMarkersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: [
4312
- annotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4335
+ visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4313
4336
  AnnotationMarker,
4314
4337
  {
4315
4338
  annotation,
@@ -4368,6 +4391,7 @@ ${elementInfo.join("\n")}`);
4368
4391
  id: annotation.id,
4369
4392
  title: taskData?.title || annotation.comment || "\uD53C\uB4DC\uBC31",
4370
4393
  status: taskData?.status || "todo",
4394
+ authorName: taskData?.authorName || void 0,
4371
4395
  createdAt: taskData?.createdAt || new Date(annotation.timestamp).toISOString(),
4372
4396
  comments: threadComments[annotation.id] || []
4373
4397
  };