@impakers/debug 1.4.17 → 1.4.19
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 +528 -365
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +530 -367
- package/dist/react.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react.js
CHANGED
|
@@ -2295,6 +2295,17 @@ async function uploadFile(endpoint, file, context, taskId) {
|
|
|
2295
2295
|
}
|
|
2296
2296
|
return res.json();
|
|
2297
2297
|
}
|
|
2298
|
+
async function fetchHistory(endpoint, options = {}) {
|
|
2299
|
+
const params = new URLSearchParams();
|
|
2300
|
+
if (options.since) params.set("since", options.since);
|
|
2301
|
+
if (options.date) params.set("date", options.date);
|
|
2302
|
+
if (options.limit) params.set("limit", String(options.limit));
|
|
2303
|
+
const qs = params.toString();
|
|
2304
|
+
const url = `${endpoint}/history${qs ? `?${qs}` : ""}`;
|
|
2305
|
+
const res = await apiFetch(url);
|
|
2306
|
+
const data = await res.json();
|
|
2307
|
+
return data.events || [];
|
|
2308
|
+
}
|
|
2298
2309
|
|
|
2299
2310
|
// src/core/sourcemap-resolver.ts
|
|
2300
2311
|
var import_trace_mapping = require("@jridgewell/trace-mapping");
|
|
@@ -2470,9 +2481,32 @@ function PendingMarker({ x, y, accentColor }) {
|
|
|
2470
2481
|
// src/components/comment-thread/index.tsx
|
|
2471
2482
|
var import_react3 = require("react");
|
|
2472
2483
|
|
|
2484
|
+
// src/components/loading-spinner/styles.module.scss
|
|
2485
|
+
var css3 = "@keyframes styles-module__spin___h0C6p {\n to {\n transform: rotate(360deg);\n }\n}\n.styles-module__container___YKn1h {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 8px;\n padding: 24px 16px;\n}\n\n.styles-module__spinner___4ELZK {\n width: 20px;\n height: 20px;\n border: 2px solid #e5e7eb;\n border-top-color: #6b7280;\n border-radius: 50%;\n animation: styles-module__spin___h0C6p 0.6s linear infinite;\n}\n\n.styles-module__message___70Ayy {\n font-size: 12px;\n color: #9ca3af;\n}";
|
|
2486
|
+
var classNames3 = { "container": "styles-module__container___YKn1h", "spinner": "styles-module__spinner___4ELZK", "spin": "styles-module__spin___h0C6p", "message": "styles-module__message___70Ayy" };
|
|
2487
|
+
if (typeof document !== "undefined") {
|
|
2488
|
+
let style = document.getElementById("impakers-debug-styles-loading-spinner-styles");
|
|
2489
|
+
if (!style) {
|
|
2490
|
+
style = document.createElement("style");
|
|
2491
|
+
style.id = "impakers-debug-styles-loading-spinner-styles";
|
|
2492
|
+
document.head.appendChild(style);
|
|
2493
|
+
}
|
|
2494
|
+
style.textContent = css3;
|
|
2495
|
+
}
|
|
2496
|
+
var styles_module_default3 = classNames3;
|
|
2497
|
+
|
|
2498
|
+
// src/components/loading-spinner/index.tsx
|
|
2499
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
2500
|
+
function LoadingSpinner({ message = "\uB85C\uB529 \uC911..." }) {
|
|
2501
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("div", { className: styles_module_default3.container, children: [
|
|
2502
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: styles_module_default3.spinner }),
|
|
2503
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: styles_module_default3.message, children: message })
|
|
2504
|
+
] });
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2473
2507
|
// src/components/comment-thread/styles.module.scss
|
|
2474
|
-
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}';
|
|
2475
|
-
var
|
|
2508
|
+
var css4 = '@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 background: #f5f5f5;\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}';
|
|
2509
|
+
var classNames4 = { "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" };
|
|
2476
2510
|
if (typeof document !== "undefined") {
|
|
2477
2511
|
let style = document.getElementById("impakers-debug-styles-comment-thread-styles");
|
|
2478
2512
|
if (!style) {
|
|
@@ -2480,24 +2514,24 @@ if (typeof document !== "undefined") {
|
|
|
2480
2514
|
style.id = "impakers-debug-styles-comment-thread-styles";
|
|
2481
2515
|
document.head.appendChild(style);
|
|
2482
2516
|
}
|
|
2483
|
-
style.textContent =
|
|
2517
|
+
style.textContent = css4;
|
|
2484
2518
|
}
|
|
2485
|
-
var
|
|
2519
|
+
var styles_module_default4 = classNames4;
|
|
2486
2520
|
|
|
2487
2521
|
// src/components/comment-thread/index.tsx
|
|
2488
|
-
var
|
|
2522
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
2489
2523
|
function formatTime(dateStr) {
|
|
2490
2524
|
const date = new Date(dateStr);
|
|
2491
2525
|
const diff = Date.now() - date.getTime();
|
|
2492
2526
|
const pad = (n) => String(n).padStart(2, "0");
|
|
2493
|
-
const abs = `${
|
|
2527
|
+
const abs = `${date.getMonth() + 1}/${date.getDate()} ${pad(date.getHours())}:${pad(date.getMinutes())}`;
|
|
2494
2528
|
const m = Math.floor(diff / 6e4);
|
|
2495
|
-
if (m < 1) return `${abs} (
|
|
2496
|
-
if (m < 60) return `${abs} (${m}
|
|
2529
|
+
if (m < 1) return `${abs} (\uBC29\uAE08)`;
|
|
2530
|
+
if (m < 60) return `${abs} (${m}\uBD84 \uC804)`;
|
|
2497
2531
|
const h = Math.floor(m / 60);
|
|
2498
|
-
if (h < 24) return `${abs} (${h}
|
|
2532
|
+
if (h < 24) return `${abs} (${h}\uC2DC\uAC04 \uC804)`;
|
|
2499
2533
|
const d = Math.floor(h / 24);
|
|
2500
|
-
return `${abs} (${d}
|
|
2534
|
+
return `${abs} (${d}\uC77C \uC804)`;
|
|
2501
2535
|
}
|
|
2502
2536
|
function getInitials(name) {
|
|
2503
2537
|
return name.slice(0, 1).toUpperCase();
|
|
@@ -2524,6 +2558,7 @@ function CommentThread({
|
|
|
2524
2558
|
left,
|
|
2525
2559
|
top,
|
|
2526
2560
|
bottom,
|
|
2561
|
+
loading,
|
|
2527
2562
|
onClose,
|
|
2528
2563
|
onReply
|
|
2529
2564
|
}) {
|
|
@@ -2544,7 +2579,7 @@ function CommentThread({
|
|
|
2544
2579
|
if (capturingDom) return;
|
|
2545
2580
|
const handler = (e) => {
|
|
2546
2581
|
const target = e.target;
|
|
2547
|
-
if (target.closest(`.${
|
|
2582
|
+
if (target.closest(`.${styles_module_default4.thread}`)) return;
|
|
2548
2583
|
if (target.closest("[data-annotation-marker]")) return;
|
|
2549
2584
|
if (target.closest("[data-impakers-debug]")) return;
|
|
2550
2585
|
handleClose();
|
|
@@ -2663,57 +2698,61 @@ function CommentThread({
|
|
|
2663
2698
|
...top !== void 0 ? { top } : {},
|
|
2664
2699
|
...bottom !== void 0 ? { bottom } : {}
|
|
2665
2700
|
};
|
|
2666
|
-
return /* @__PURE__ */ (0,
|
|
2701
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2667
2702
|
"div",
|
|
2668
2703
|
{
|
|
2669
|
-
className: `${
|
|
2704
|
+
className: `${styles_module_default4.thread} ${exiting ? styles_module_default4.exiting : ""}`,
|
|
2670
2705
|
style: positionStyle,
|
|
2671
2706
|
"data-impakers-debug": "",
|
|
2672
2707
|
onClick: (e) => e.stopPropagation(),
|
|
2673
2708
|
children: [
|
|
2674
|
-
/* @__PURE__ */ (0,
|
|
2675
|
-
/* @__PURE__ */ (0,
|
|
2676
|
-
/* @__PURE__ */ (0,
|
|
2677
|
-
/* @__PURE__ */ (0,
|
|
2678
|
-
/* @__PURE__ */ (0,
|
|
2679
|
-
/* @__PURE__ */ (0,
|
|
2709
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.header, children: [
|
|
2710
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.avatar, children: getInitials(task.authorName || currentUserName) }),
|
|
2711
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.headerInfo, children: [
|
|
2712
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.headerTop, children: [
|
|
2713
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.authorName, children: task.authorName || currentUserName }),
|
|
2714
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.timestamp, children: formatTime(task.createdAt) })
|
|
2680
2715
|
] }),
|
|
2681
|
-
/* @__PURE__ */ (0,
|
|
2716
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.title, children: feedbackTitle })
|
|
2682
2717
|
] }),
|
|
2683
|
-
/* @__PURE__ */ (0,
|
|
2718
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.headerActions, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.headerAction, onClick: handleClose, title: "\uB2EB\uAE30", type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) }) })
|
|
2684
2719
|
] }),
|
|
2685
|
-
task.comments.length
|
|
2686
|
-
/* @__PURE__ */ (0,
|
|
2687
|
-
/* @__PURE__ */ (0,
|
|
2688
|
-
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2720
|
+
loading && task.comments.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
2721
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.divider }),
|
|
2722
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LoadingSpinner, { message: "\uB313\uAE00 \uB85C\uB529 \uC911..." })
|
|
2723
|
+
] }),
|
|
2724
|
+
task.comments.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
|
|
2725
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.divider }),
|
|
2726
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.commentsList, ref: listRef, children: task.comments.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.comment, children: [
|
|
2727
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.avatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials(comment.authorName) }),
|
|
2728
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.commentContent, children: [
|
|
2729
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.commentTop, children: [
|
|
2730
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.commentAuthor, children: comment.authorName }),
|
|
2731
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.commentTime, children: formatTime(comment.createdAt) })
|
|
2693
2732
|
] }),
|
|
2694
|
-
comment.content && /* @__PURE__ */ (0,
|
|
2695
|
-
comment.imageUrl && comment.imageUrl !== "loading..." && /* @__PURE__ */ (0,
|
|
2733
|
+
comment.content && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.commentText, children: comment.content }),
|
|
2734
|
+
comment.imageUrl && comment.imageUrl !== "loading..." && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2696
2735
|
"div",
|
|
2697
2736
|
{
|
|
2698
|
-
className:
|
|
2737
|
+
className: styles_module_default4.screenshot,
|
|
2699
2738
|
onClick: () => setLightboxSrc(comment.imageUrl),
|
|
2700
2739
|
style: { cursor: "pointer" },
|
|
2701
|
-
children: /* @__PURE__ */ (0,
|
|
2740
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: comment.imageUrl, alt: "screenshot" })
|
|
2702
2741
|
}
|
|
2703
2742
|
),
|
|
2704
|
-
comment.fileUrl && /* @__PURE__ */ (0,
|
|
2743
|
+
comment.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
|
|
2705
2744
|
"a",
|
|
2706
2745
|
{
|
|
2707
|
-
className:
|
|
2746
|
+
className: styles_module_default4.fileCard,
|
|
2708
2747
|
href: comment.fileUrl,
|
|
2709
2748
|
target: "_blank",
|
|
2710
2749
|
rel: "noopener noreferrer",
|
|
2711
2750
|
onClick: (e) => e.stopPropagation(),
|
|
2712
2751
|
children: [
|
|
2713
|
-
/* @__PURE__ */ (0,
|
|
2714
|
-
/* @__PURE__ */ (0,
|
|
2715
|
-
/* @__PURE__ */ (0,
|
|
2716
|
-
comment.fileSize != null && /* @__PURE__ */ (0,
|
|
2752
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileIcon, children: getFileIcon(comment.fileType || "") }),
|
|
2753
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: styles_module_default4.fileInfo, children: [
|
|
2754
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardName, children: comment.fileName || "\uD30C\uC77C" }),
|
|
2755
|
+
comment.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardSize, children: formatFileSize(comment.fileSize) })
|
|
2717
2756
|
] })
|
|
2718
2757
|
]
|
|
2719
2758
|
}
|
|
@@ -2721,23 +2760,23 @@ function CommentThread({
|
|
|
2721
2760
|
] })
|
|
2722
2761
|
] }, comment.id)) })
|
|
2723
2762
|
] }),
|
|
2724
|
-
pendingImage && /* @__PURE__ */ (0,
|
|
2725
|
-
/* @__PURE__ */ (0,
|
|
2726
|
-
/* @__PURE__ */ (0,
|
|
2763
|
+
pendingImage && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.pendingImage, children: [
|
|
2764
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: pendingImage, alt: "pending" }),
|
|
2765
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.pendingRemove, onClick: () => setPendingImage(null), type: "button", children: "\xD7" })
|
|
2727
2766
|
] }),
|
|
2728
|
-
pendingFile && /* @__PURE__ */ (0,
|
|
2729
|
-
/* @__PURE__ */ (0,
|
|
2730
|
-
/* @__PURE__ */ (0,
|
|
2731
|
-
/* @__PURE__ */ (0,
|
|
2732
|
-
/* @__PURE__ */ (0,
|
|
2767
|
+
pendingFile && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.pendingFile, children: [
|
|
2768
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileIcon, children: getFileIcon(pendingFile.type) }),
|
|
2769
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: styles_module_default4.fileInfo, children: [
|
|
2770
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardName, children: pendingFile.name }),
|
|
2771
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: styles_module_default4.fileCardSize, children: formatFileSize(pendingFile.size) })
|
|
2733
2772
|
] }),
|
|
2734
|
-
/* @__PURE__ */ (0,
|
|
2773
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.pendingRemove, onClick: () => setPendingFile(null), type: "button", children: "\xD7" })
|
|
2735
2774
|
] }),
|
|
2736
|
-
/* @__PURE__ */ (0,
|
|
2775
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: styles_module_default4.replyArea, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2737
2776
|
"textarea",
|
|
2738
2777
|
{
|
|
2739
2778
|
ref: textareaRef,
|
|
2740
|
-
className:
|
|
2779
|
+
className: styles_module_default4.replyInput,
|
|
2741
2780
|
placeholder: "Reply...",
|
|
2742
2781
|
value: replyText,
|
|
2743
2782
|
onChange: (e) => {
|
|
@@ -2750,31 +2789,31 @@ function CommentThread({
|
|
|
2750
2789
|
rows: 2
|
|
2751
2790
|
}
|
|
2752
2791
|
) }),
|
|
2753
|
-
/* @__PURE__ */ (0,
|
|
2754
|
-
/* @__PURE__ */ (0,
|
|
2755
|
-
/* @__PURE__ */ (0,
|
|
2756
|
-
/* @__PURE__ */ (0,
|
|
2792
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.replyToolbar, children: [
|
|
2793
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.replyTool, onClick: handleAttachClick, type: "button", title: "\uD30C\uC77C \uCCA8\uBD80", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
2794
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
2795
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
|
|
2757
2796
|
] }) }),
|
|
2758
|
-
/* @__PURE__ */ (0,
|
|
2759
|
-
/* @__PURE__ */ (0,
|
|
2760
|
-
/* @__PURE__ */ (0,
|
|
2797
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.replyTool, onClick: handleCameraClick, type: "button", title: "\uC694\uC18C \uC2A4\uD06C\uB9B0\uC0F7", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
2798
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("path", { d: "M14.5 4h-5L7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2h-3l-2.5-3z" }),
|
|
2799
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("circle", { cx: "12", cy: "13", r: "3" })
|
|
2761
2800
|
] }) }),
|
|
2762
|
-
/* @__PURE__ */ (0,
|
|
2801
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2763
2802
|
"button",
|
|
2764
2803
|
{
|
|
2765
|
-
className: `${
|
|
2804
|
+
className: `${styles_module_default4.replySend} ${replyText.trim() || pendingImage || pendingFile ? styles_module_default4.active : ""}`,
|
|
2766
2805
|
onClick: handleSend,
|
|
2767
2806
|
disabled: !replyText.trim() && !pendingImage && !pendingFile,
|
|
2768
2807
|
type: "button",
|
|
2769
2808
|
title: "\uC804\uC1A1",
|
|
2770
|
-
children: /* @__PURE__ */ (0,
|
|
2771
|
-
/* @__PURE__ */ (0,
|
|
2772
|
-
/* @__PURE__ */ (0,
|
|
2809
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
2810
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
|
|
2811
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
|
|
2773
2812
|
] })
|
|
2774
2813
|
}
|
|
2775
2814
|
)
|
|
2776
2815
|
] }),
|
|
2777
|
-
/* @__PURE__ */ (0,
|
|
2816
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
2778
2817
|
"input",
|
|
2779
2818
|
{
|
|
2780
2819
|
ref: fileInputRef,
|
|
@@ -2784,9 +2823,9 @@ function CommentThread({
|
|
|
2784
2823
|
onChange: handleFileChange
|
|
2785
2824
|
}
|
|
2786
2825
|
),
|
|
2787
|
-
lightboxSrc && /* @__PURE__ */ (0,
|
|
2788
|
-
/* @__PURE__ */ (0,
|
|
2789
|
-
/* @__PURE__ */ (0,
|
|
2826
|
+
lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: styles_module_default4.lightbox, onClick: () => setLightboxSrc(null), "data-impakers-debug": "", children: [
|
|
2827
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("img", { src: lightboxSrc, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
|
|
2828
|
+
/* @__PURE__ */ (0, import_jsx_runtime5.jsx)("button", { className: styles_module_default4.lightboxClose, onClick: () => setLightboxSrc(null), type: "button", children: "\xD7" })
|
|
2790
2829
|
] })
|
|
2791
2830
|
]
|
|
2792
2831
|
}
|
|
@@ -2797,8 +2836,8 @@ function CommentThread({
|
|
|
2797
2836
|
var import_react4 = require("react");
|
|
2798
2837
|
|
|
2799
2838
|
// src/components/fab-menu/styles.module.scss
|
|
2800
|
-
var
|
|
2801
|
-
var
|
|
2839
|
+
var css5 = '@keyframes styles-module__fabEnter___DMJoo {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemIn___GfmJ3 {\n from {\n opacity: 0;\n transform: scale(0.3);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__menuItemOut___s0nQD {\n from {\n opacity: 1;\n transform: scale(1);\n }\n to {\n opacity: 0;\n transform: scale(0.3);\n }\n}\n.styles-module__fab___wShP- {\n touch-action: none;\n z-index: 99999;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;\n animation: styles-module__fabEnter___DMJoo 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n position: relative;\n}\n.styles-module__fab___wShP- svg {\n width: 20px;\n height: 20px;\n transition: transform 0.2s ease;\n}\n.styles-module__fab___wShP-:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___wShP-:active {\n transform: scale(0.96);\n}\n.styles-module__fab___wShP-.styles-module__expanded___qyto6 svg {\n transform: rotate(45deg);\n}\n\n.styles-module__menuItems___1qNsE {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 99999;\n}\n\n.styles-module__menuItem___pB75H {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: #fff;\n color: #374151;\n border: 1px solid #e5e7eb;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08), 0 1px 2px rgba(0, 0, 0, 0.04);\n transition: transform 0.12s ease, box-shadow 0.12s ease, background 0.12s ease, border-color 0.12s ease;\n position: relative;\n}\n.styles-module__menuItem___pB75H svg {\n width: 18px;\n height: 18px;\n}\n.styles-module__menuItem___pB75H:hover {\n transform: scale(1.08);\n background: #f9fafb;\n border-color: #d1d5db;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);\n}\n.styles-module__menuItem___pB75H:active {\n transform: scale(0.96);\n}\n.styles-module__menuItem___pB75H.styles-module__active___7ktmc {\n background: #18181b;\n color: #fff;\n border-color: #18181b;\n}\n\n.styles-module__menuItem___pB75H:nth-child(1) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 0ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(2) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 40ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(3) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 80ms both;\n}\n\n.styles-module__menuItem___pB75H:nth-child(4) {\n animation: styles-module__menuItemIn___GfmJ3 0.15s cubic-bezier(0.22, 1, 0.36, 1) 120ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(1) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 40ms both;\n}\n\n.styles-module__menuItemClosing___m4o-a:nth-child(2) {\n animation: styles-module__menuItemOut___s0nQD 0.1s ease-in 0ms both;\n}\n\n.styles-module__tooltip___Cy6kg {\n position: absolute;\n right: calc(100% + 10px);\n white-space: nowrap;\n background: rgba(0, 0, 0, 0.85);\n color: #fff;\n font-size: 12px;\n font-weight: 500;\n padding: 5px 10px;\n border-radius: 6px;\n pointer-events: none;\n opacity: 0;\n transition: opacity 0.12s ease;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}\n\n.styles-module__menuItem___pB75H:hover .styles-module__tooltip___Cy6kg {\n opacity: 1;\n}\n\n.styles-module__contextMenu___A8fQt {\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__menuItemIn___GfmJ3 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___1u9io {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___1u9io:hover {\n background: #f4f4f5;\n}\n\n.styles-module__badge___zmiZx {\n position: absolute;\n top: -4px;\n right: -4px;\n min-width: 16px;\n height: 16px;\n border-radius: 8px;\n background: #ef4444;\n color: #fff;\n font-size: 10px;\n font-weight: 600;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 4px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n}';
|
|
2840
|
+
var classNames5 = { "fab": "styles-module__fab___wShP-", "fabEnter": "styles-module__fabEnter___DMJoo", "expanded": "styles-module__expanded___qyto6", "menuItems": "styles-module__menuItems___1qNsE", "menuItem": "styles-module__menuItem___pB75H", "active": "styles-module__active___7ktmc", "menuItemIn": "styles-module__menuItemIn___GfmJ3", "menuItemClosing": "styles-module__menuItemClosing___m4o-a", "menuItemOut": "styles-module__menuItemOut___s0nQD", "tooltip": "styles-module__tooltip___Cy6kg", "contextMenu": "styles-module__contextMenu___A8fQt", "contextMenuItem": "styles-module__contextMenuItem___1u9io", "badge": "styles-module__badge___zmiZx" };
|
|
2802
2841
|
if (typeof document !== "undefined") {
|
|
2803
2842
|
let style = document.getElementById("impakers-debug-styles-fab-menu-styles");
|
|
2804
2843
|
if (!style) {
|
|
@@ -2806,12 +2845,12 @@ if (typeof document !== "undefined") {
|
|
|
2806
2845
|
style.id = "impakers-debug-styles-fab-menu-styles";
|
|
2807
2846
|
document.head.appendChild(style);
|
|
2808
2847
|
}
|
|
2809
|
-
style.textContent =
|
|
2848
|
+
style.textContent = css5;
|
|
2810
2849
|
}
|
|
2811
|
-
var
|
|
2850
|
+
var styles_module_default5 = classNames5;
|
|
2812
2851
|
|
|
2813
2852
|
// src/components/fab-menu/index.tsx
|
|
2814
|
-
var
|
|
2853
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
2815
2854
|
function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
|
|
2816
2855
|
const [expanded, setExpanded] = (0, import_react4.useState)(false);
|
|
2817
2856
|
const [closing, setClosing] = (0, import_react4.useState)(false);
|
|
@@ -2890,11 +2929,11 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
|
|
|
2890
2929
|
document.addEventListener("mousedown", handler);
|
|
2891
2930
|
return () => document.removeEventListener("mousedown", handler);
|
|
2892
2931
|
}, [expanded, showContextMenu, closeMenu]);
|
|
2893
|
-
return /* @__PURE__ */ (0,
|
|
2894
|
-
(expanded || closing) && /* @__PURE__ */ (0,
|
|
2932
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
|
|
2933
|
+
(expanded || closing) && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2895
2934
|
"div",
|
|
2896
2935
|
{
|
|
2897
|
-
className:
|
|
2936
|
+
className: styles_module_default5.menuItems,
|
|
2898
2937
|
style: {
|
|
2899
2938
|
position: "fixed",
|
|
2900
2939
|
right: position.right + (44 - 40) / 2,
|
|
@@ -2904,10 +2943,10 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
|
|
|
2904
2943
|
},
|
|
2905
2944
|
"data-impakers-debug": "",
|
|
2906
2945
|
"data-impakers-fab": "",
|
|
2907
|
-
children: [...items].reverse().map((item, i) => /* @__PURE__ */ (0,
|
|
2946
|
+
children: [...items].reverse().map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
|
|
2908
2947
|
"button",
|
|
2909
2948
|
{
|
|
2910
|
-
className: `${
|
|
2949
|
+
className: `${styles_module_default5.menuItem} ${item.active ? styles_module_default5.active : ""} ${closing ? styles_module_default5.menuItemClosing : ""}`,
|
|
2911
2950
|
style: { animationDelay: closing ? `${i * 30}ms` : `${(items.length - 1 - i) * 40}ms` },
|
|
2912
2951
|
onClick: (e) => {
|
|
2913
2952
|
e.stopPropagation();
|
|
@@ -2919,19 +2958,19 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
|
|
|
2919
2958
|
"data-impakers-debug": "",
|
|
2920
2959
|
children: [
|
|
2921
2960
|
item.icon,
|
|
2922
|
-
/* @__PURE__ */ (0,
|
|
2923
|
-
item.badge && item.badge > 0 ? /* @__PURE__ */ (0,
|
|
2961
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.tooltip, children: item.label }),
|
|
2962
|
+
item.badge && item.badge > 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: styles_module_default5.badge, children: item.badge > 99 ? "99+" : item.badge }) : null
|
|
2924
2963
|
]
|
|
2925
2964
|
},
|
|
2926
2965
|
item.id
|
|
2927
2966
|
))
|
|
2928
2967
|
}
|
|
2929
2968
|
),
|
|
2930
|
-
/* @__PURE__ */ (0,
|
|
2969
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2931
2970
|
"button",
|
|
2932
2971
|
{
|
|
2933
2972
|
ref: fabRef,
|
|
2934
|
-
className: `${
|
|
2973
|
+
className: `${styles_module_default5.fab} ${expanded ? styles_module_default5.expanded : ""}`,
|
|
2935
2974
|
style: { position: "fixed", right: position.right, bottom: position.bottom },
|
|
2936
2975
|
onPointerDown: handleFabPointerDown,
|
|
2937
2976
|
onPointerMove: handleFabPointerMove,
|
|
@@ -2941,30 +2980,30 @@ function FabMenu({ items, onSelect, onHide, onDoubleTap }) {
|
|
|
2941
2980
|
"aria-label": "\uD53C\uB4DC\uBC31 \uBA54\uB274",
|
|
2942
2981
|
"data-impakers-debug": "",
|
|
2943
2982
|
"data-impakers-fab": "",
|
|
2944
|
-
children: /* @__PURE__ */ (0,
|
|
2945
|
-
/* @__PURE__ */ (0,
|
|
2946
|
-
/* @__PURE__ */ (0,
|
|
2983
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
2984
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "12", y1: "5", x2: "12", y2: "19" }),
|
|
2985
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)("line", { x1: "5", y1: "12", x2: "19", y2: "12" })
|
|
2947
2986
|
] })
|
|
2948
2987
|
}
|
|
2949
2988
|
),
|
|
2950
|
-
showContextMenu && /* @__PURE__ */ (0,
|
|
2989
|
+
showContextMenu && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2951
2990
|
"div",
|
|
2952
2991
|
{
|
|
2953
2992
|
style: { position: "fixed", inset: 0, zIndex: 2147483647 },
|
|
2954
2993
|
onMouseDown: () => setShowContextMenu(null),
|
|
2955
2994
|
"data-impakers-debug": "",
|
|
2956
2995
|
"data-impakers-fab": "",
|
|
2957
|
-
children: /* @__PURE__ */ (0,
|
|
2996
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2958
2997
|
"div",
|
|
2959
2998
|
{
|
|
2960
|
-
className:
|
|
2999
|
+
className: styles_module_default5.contextMenu,
|
|
2961
3000
|
style: { position: "fixed", left: showContextMenu.x, top: showContextMenu.y, zIndex: 2147483647 },
|
|
2962
3001
|
onMouseDown: (e) => e.stopPropagation(),
|
|
2963
3002
|
"data-impakers-fab": "",
|
|
2964
|
-
children: /* @__PURE__ */ (0,
|
|
3003
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
2965
3004
|
"button",
|
|
2966
3005
|
{
|
|
2967
|
-
className:
|
|
3006
|
+
className: styles_module_default5.contextMenuItem,
|
|
2968
3007
|
onMouseDown: (e) => {
|
|
2969
3008
|
e.stopPropagation();
|
|
2970
3009
|
setShowContextMenu(null);
|
|
@@ -2986,8 +3025,8 @@ var import_react5 = require("react");
|
|
|
2986
3025
|
var import_react_dom = require("react-dom");
|
|
2987
3026
|
|
|
2988
3027
|
// src/components/inbox-panel/styles.module.scss
|
|
2989
|
-
var css5 = '@keyframes styles-module__slideIn___0o0s- {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes styles-module__slideOut___nKrBX {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes styles-module__fadeIn___j09Ts {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.styles-module__backdrop___zYhcU {\n position: fixed;\n inset: 0;\n z-index: 100003;\n animation: styles-module__fadeIn___j09Ts 0.15s ease-out;\n}\n\n.styles-module__panel___6YS8k {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 420px;\n max-width: 100vw;\n background: #fafafa;\n z-index: 100004;\n display: flex;\n flex-direction: column;\n box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08);\n animation: styles-module__slideIn___0o0s- 0.2s ease-out;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__panel___6YS8k.styles-module__exiting___6A-Ag {\n animation: styles-module__slideOut___nKrBX 0.15s ease-in forwards;\n}\n\n.styles-module__header___fBbGz {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__headerLeft___e0YLf {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__headerTitle___oEPJa {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-H8ra {\n width: 32px;\n height: 32px;\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: #6b7280;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__closeBtn___-H8ra:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n.styles-module__closeBtn___-H8ra svg {\n width: 18px;\n height: 18px;\n}\n\n.styles-module__tabs___nfuX7 {\n display: flex;\n padding: 0 20px;\n gap: 0;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__tab___Hc-jn {\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n border: none;\n background: none;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color 0.12s, border-color 0.12s;\n font-family: inherit;\n}\n.styles-module__tab___Hc-jn:hover {\n color: #374151;\n}\n.styles-module__tab___Hc-jn.styles-module__active___ZQzA5 {\n color: #18181b;\n border-bottom-color: #18181b;\n}\n\n.styles-module__tabBadge___IdFDQ {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n border-radius: 9px;\n background: #e5e7eb;\n color: #374151;\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n margin-left: 6px;\n}\n\n.styles-module__statusFilter___qtBXs {\n display: flex;\n gap: 6px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__filterChip___l2s74 {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 16px;\n cursor: pointer;\n transition: all 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChip___l2s74:hover {\n color: #374151;\n background: #e5e7eb;\n}\n.styles-module__filterChip___l2s74.styles-module__active___ZQzA5 {\n color: #18181b;\n background: #fff;\n border-color: #d1d5db;\n}\n\n.styles-module__filterCount___KukiQ {\n font-size: 11px;\n font-weight: 600;\n color: inherit;\n opacity: 0.7;\n}\n\n.styles-module__content___L2lRw {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__card___F8qwd {\n background: #fff;\n border-radius: 12px;\n border: 1px solid #e5e7eb;\n margin-bottom: 12px;\n overflow: hidden;\n transition: box-shadow 0.12s;\n cursor: pointer;\n}\n.styles-module__card___F8qwd:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.styles-module__cardHeader___QOVGR {\n padding: 14px 16px 8px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.styles-module__cardAvatar___FfKmW {\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__cardInfo___BmrdF {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__cardMeta___7p9KD {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__cardAuthor___YvnuR {\n font-size: 13px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__cardTime___N1Png {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__cardActions___7QF72 {\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__cardAction___t4b3V {\n width: 26px;\n height: 26px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__cardAction___t4b3V:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__cardAction___t4b3V svg {\n width: 14px;\n height: 14px;\n}\n\n.styles-module__cardTitle___xJxDN {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n padding: 0 16px 8px;\n}\n\n.styles-module__cardScreenshot___I5-QL {\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-height: 160px;\n}\n.styles-module__cardScreenshot___I5-QL img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__cardRoute___U4gB6 {\n margin: 0 16px 10px;\n padding: 8px 12px;\n background: #f9fafb;\n border: 1px solid #f3f4f6;\n border-radius: 8px;\n font-size: 12px;\n color: #6b7280;\n line-height: 1.4;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: background 0.12s, border-color 0.12s;\n}\n.styles-module__cardRoute___U4gB6:hover {\n background: #f3f4f6;\n border-color: #d1d5db;\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRoutePath___zP-fh {\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRouteIcon___SBqGj {\n color: #3b82f6;\n}\n\n.styles-module__cardRouteName___BDH75 {\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__cardRoutePath___zP-fh {\n flex: 1;\n min-width: 0;\n color: #9ca3af;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: color 0.12s;\n}\n\n.styles-module__cardRouteIcon___SBqGj {\n flex-shrink: 0;\n color: #9ca3af;\n transition: color 0.12s;\n}\n\n.styles-module__cardFooter___wfPa4 {\n padding: 8px 16px 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__cardReplyDot___YnqzI {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #16a34a;\n flex-shrink: 0;\n}\n\n.styles-module__cardReplyCount___O1khL {\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__statusDot___l4IHG {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__statusDot___l4IHG.styles-module__todo___894P6 {\n background: #f59e0b;\n}\n.styles-module__statusDot___l4IHG.styles-module__inProgress___IZ1mJ {\n background: #3b82f6;\n}\n.styles-module__statusDot___l4IHG.styles-module__done___n4cWP {\n background: #16a34a;\n}\n\n.styles-module__empty___IADrw {\n text-align: center;\n padding: 48px 20px;\n color: #9ca3af;\n font-size: 13px;\n line-height: 1.6;\n}\n\n.styles-module__emptyIcon___1x5wT {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background: #f3f4f6;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 12px;\n color: #9ca3af;\n}\n.styles-module__emptyIcon___1x5wT svg {\n width: 24px;\n height: 24px;\n}\n\n.styles-module__checkBtn___KjHxm {\n width: 28px;\n height: 28px;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: transparent;\n transition: all 0.15s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__checkBtn___KjHxm svg {\n width: 14px;\n height: 14px;\n}\n.styles-module__checkBtn___KjHxm:hover {\n border-color: #16a34a;\n color: #16a34a;\n}\n.styles-module__checkBtn___KjHxm.styles-module__checked___8pype {\n border-color: #16a34a;\n background: #16a34a;\n color: #fff;\n}\n\n.styles-module__cardDone___-m4w- {\n opacity: 0.6;\n}\n.styles-module__cardDone___-m4w- .styles-module__cardTitle___xJxDN {\n text-decoration: line-through;\n color: #9ca3af;\n}\n\n.styles-module__backBtn___PTIAl {\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: #6b7280;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__backBtn___PTIAl:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__detailView___36cvH {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.styles-module__detailHeader___Hepgq {\n display: flex;\n gap: 10px;\n padding: 16px 20px;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.styles-module__detailTitle___7TvrX {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n margin-top: 4px;\n}\n\n.styles-module__detailScreenshot___UPF0f {\n margin: 0 20px 0;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 180px;\n}\n.styles-module__detailScreenshot___UPF0f img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__commentsList___5Uigg {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__commentItem___5u78u {\n display: flex;\n gap: 10px;\n padding: 10px 20px;\n}\n.styles-module__commentItem___5u78u:hover {\n background: #f9fafb;\n}\n\n.styles-module__commentAvatar___OatKg {\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__commentBody___gmv1J {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentMeta___JNJa3 {\n display: flex;\n gap: 6px;\n align-items: center;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthorName___XNVRk {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___CokGf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentContent___yMiLR {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.styles-module__loadingComments___zpATD, .styles-module__noComments___kvl90 {\n text-align: center;\n padding: 24px 20px;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__replyBox___FO-XS {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid #f3f4f6;\n background: #fff;\n}\n\n.styles-module__replyInput___k8C9e {\n flex: 1;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 8px 12px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n outline: none;\n min-height: 20px;\n max-height: 80px;\n line-height: 1.5;\n transition: border-color 0.12s;\n}\n.styles-module__replyInput___k8C9e:focus {\n border-color: #18181b;\n}\n.styles-module__replyInput___k8C9e::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__sendBtn___pBzWa {\n width: 32px;\n height: 32px;\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: #d1d5db;\n transition: color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__sendBtn___pBzWa.styles-module__active___ZQzA5 {\n color: #3b82f6;\n}\n.styles-module__sendBtn___pBzWa:hover {\n color: #3b82f6;\n}\n\n.styles-module__commentImage___LuH8X {\n margin-top: 6px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-width: 240px;\n cursor: pointer;\n transition: opacity 0.12s;\n}\n.styles-module__commentImage___LuH8X:hover {\n opacity: 0.9;\n}\n.styles-module__commentImage___LuH8X img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n.styles-module__commentFileCard___XE44y {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 240px;\n}\n.styles-module__commentFileCard___XE44y:hover {\n background: #f3f4f6;\n}\n\n.styles-module__commentFileIcon___G58-y {\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__commentFileInfo___OFIhR {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__commentFileName___NUoII {\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__commentFileSize___sokU8 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__filePreviewOverlay___5RxYd {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.styles-module__filePreviewModal___MGJLW {\n width: 90vw;\n max-width: 960px;\n height: 80vh;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\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}\n\n.styles-module__filePreviewHeader___E9SWJ {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewName___z8t-L {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__filePreviewActions___weizo {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewOpen___JpaEs {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 500;\n color: #3b82f6;\n text-decoration: none;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.12s;\n}\n.styles-module__filePreviewOpen___JpaEs:hover {\n background: #eff6ff;\n}\n\n.styles-module__filePreviewClose___TFcbr {\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: #6b7280;\n font-size: 18px;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__filePreviewClose___TFcbr:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__filePreviewBody___gwg1S {\n flex: 1;\n overflow: hidden;\n}\n\n.styles-module__filePreviewIframe___OQ3Oo {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.styles-module__filePreviewFallback___U1rB2 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 12px;\n color: #6b7280;\n font-size: 14px;\n}\n.styles-module__filePreviewFallback___U1rB2 a {\n color: #3b82f6;\n text-decoration: none;\n font-weight: 500;\n}\n.styles-module__filePreviewFallback___U1rB2 a:hover {\n text-decoration: underline;\n}\n\n.styles-module__filePreviewFallbackIcon___0--41 {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n background: #f3f4f6;\n color: #6b7280;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 700;\n}\n\n.styles-module__lightbox___8CDdt {\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___8CDdt 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___VGfjh {\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___VGfjh:hover {\n background: rgba(255, 255, 255, 0.25);\n}';
|
|
2990
|
-
var
|
|
3028
|
+
var css6 = '@keyframes styles-module__slideIn___0o0s- {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n@keyframes styles-module__slideOut___nKrBX {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n@keyframes styles-module__fadeIn___j09Ts {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n.styles-module__backdrop___zYhcU {\n position: fixed;\n inset: 0;\n z-index: 100003;\n animation: styles-module__fadeIn___j09Ts 0.15s ease-out;\n}\n\n.styles-module__panel___6YS8k {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n width: 420px;\n max-width: 100vw;\n background: #fafafa;\n z-index: 100004;\n display: flex;\n flex-direction: column;\n box-shadow: -4px 0 24px rgba(0, 0, 0, 0.08);\n animation: styles-module__slideIn___0o0s- 0.2s ease-out;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n}\n.styles-module__panel___6YS8k.styles-module__exiting___6A-Ag {\n animation: styles-module__slideOut___nKrBX 0.15s ease-in forwards;\n}\n\n.styles-module__header___fBbGz {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__headerLeft___e0YLf {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.styles-module__headerTitle___oEPJa {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-H8ra {\n width: 32px;\n height: 32px;\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: #6b7280;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__closeBtn___-H8ra:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n.styles-module__closeBtn___-H8ra svg {\n width: 18px;\n height: 18px;\n}\n\n.styles-module__tabs___nfuX7 {\n display: flex;\n padding: 0 20px;\n gap: 0;\n border-bottom: 1px solid #e5e7eb;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__tab___Hc-jn {\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #6b7280;\n border: none;\n background: none;\n cursor: pointer;\n border-bottom: 2px solid transparent;\n transition: color 0.12s, border-color 0.12s;\n font-family: inherit;\n}\n.styles-module__tab___Hc-jn:hover {\n color: #374151;\n}\n.styles-module__tab___Hc-jn.styles-module__active___ZQzA5 {\n color: #18181b;\n border-bottom-color: #18181b;\n}\n\n.styles-module__tabBadge___IdFDQ {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 18px;\n height: 18px;\n border-radius: 9px;\n background: #e5e7eb;\n color: #374151;\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n margin-left: 6px;\n}\n\n.styles-module__statusFilter___qtBXs {\n display: flex;\n gap: 6px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__filterChip___l2s74 {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n font-size: 12px;\n font-weight: 500;\n color: #6b7280;\n background: #f3f4f6;\n border: 1px solid transparent;\n border-radius: 16px;\n cursor: pointer;\n transition: all 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChip___l2s74:hover {\n color: #374151;\n background: #e5e7eb;\n}\n.styles-module__filterChip___l2s74.styles-module__active___ZQzA5 {\n color: #18181b;\n background: #fff;\n border-color: #d1d5db;\n}\n\n.styles-module__filterCount___KukiQ {\n font-size: 11px;\n font-weight: 600;\n color: inherit;\n opacity: 0.7;\n}\n\n.styles-module__content___L2lRw {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__content___L2lRw::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__card___F8qwd {\n background: #fff;\n border-radius: 12px;\n border: 1px solid #e5e7eb;\n margin-bottom: 12px;\n overflow: hidden;\n transition: box-shadow 0.12s;\n cursor: pointer;\n}\n.styles-module__card___F8qwd:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n}\n\n.styles-module__cardHeader___QOVGR {\n padding: 14px 16px 8px;\n display: flex;\n align-items: flex-start;\n gap: 10px;\n}\n\n.styles-module__cardAvatar___FfKmW {\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__cardInfo___BmrdF {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__cardMeta___7p9KD {\n display: flex;\n align-items: center;\n gap: 6px;\n margin-bottom: 4px;\n}\n\n.styles-module__cardAuthor___YvnuR {\n font-size: 13px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__cardTime___N1Png {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__cardActions___7QF72 {\n display: flex;\n gap: 2px;\n flex-shrink: 0;\n}\n\n.styles-module__cardAction___t4b3V {\n width: 26px;\n height: 26px;\n border: none;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n color: #9ca3af;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n}\n.styles-module__cardAction___t4b3V:hover {\n background: #f3f4f6;\n color: #374151;\n}\n.styles-module__cardAction___t4b3V svg {\n width: 14px;\n height: 14px;\n}\n\n.styles-module__cardTitle___xJxDN {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n padding: 0 16px 8px;\n}\n\n.styles-module__cardScreenshot___I5-QL {\n margin: 0 16px 8px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n position: relative;\n max-height: 160px;\n}\n.styles-module__cardScreenshot___I5-QL img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__cardRoute___U4gB6 {\n margin: 0 16px 10px;\n padding: 8px 12px;\n background: #f9fafb;\n border: 1px solid #f3f4f6;\n border-radius: 8px;\n font-size: 12px;\n color: #6b7280;\n line-height: 1.4;\n display: flex;\n align-items: center;\n gap: 6px;\n cursor: pointer;\n transition: background 0.12s, border-color 0.12s;\n}\n.styles-module__cardRoute___U4gB6:hover {\n background: #f3f4f6;\n border-color: #d1d5db;\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRoutePath___zP-fh {\n color: #3b82f6;\n}\n.styles-module__cardRoute___U4gB6:hover .styles-module__cardRouteIcon___SBqGj {\n color: #3b82f6;\n}\n\n.styles-module__cardRouteName___BDH75 {\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__cardRoutePath___zP-fh {\n flex: 1;\n min-width: 0;\n color: #9ca3af;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition: color 0.12s;\n}\n\n.styles-module__cardRouteIcon___SBqGj {\n flex-shrink: 0;\n color: #9ca3af;\n transition: color 0.12s;\n}\n\n.styles-module__cardStatusTime___S62W1 {\n padding: 0 16px 6px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.styles-module__cardStatusTime___S62W1 span {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__cardFooter___wfPa4 {\n padding: 8px 16px 12px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.styles-module__cardReplyDot___YnqzI {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: #16a34a;\n flex-shrink: 0;\n}\n\n.styles-module__cardReplyCount___O1khL {\n font-size: 12px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__statusDot___l4IHG {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.styles-module__statusDot___l4IHG.styles-module__todo___894P6 {\n background: #f59e0b;\n}\n.styles-module__statusDot___l4IHG.styles-module__inProgress___IZ1mJ {\n background: #3b82f6;\n}\n.styles-module__statusDot___l4IHG.styles-module__done___n4cWP {\n background: #16a34a;\n}\n\n.styles-module__empty___IADrw {\n text-align: center;\n padding: 48px 20px;\n color: #9ca3af;\n font-size: 13px;\n line-height: 1.6;\n}\n\n.styles-module__emptyIcon___1x5wT {\n width: 48px;\n height: 48px;\n border-radius: 50%;\n background: #f3f4f6;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 12px;\n color: #9ca3af;\n}\n.styles-module__emptyIcon___1x5wT svg {\n width: 24px;\n height: 24px;\n}\n\n.styles-module__checkBtn___KjHxm {\n width: 28px;\n height: 28px;\n border: 2px solid #d1d5db;\n border-radius: 50%;\n background: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n color: transparent;\n transition: all 0.15s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__checkBtn___KjHxm svg {\n width: 14px;\n height: 14px;\n}\n.styles-module__checkBtn___KjHxm:hover {\n border-color: #16a34a;\n color: #16a34a;\n}\n.styles-module__checkBtn___KjHxm.styles-module__checked___8pype {\n border-color: #16a34a;\n background: #16a34a;\n color: #fff;\n}\n\n.styles-module__cardDone___-m4w- {\n opacity: 0.6;\n}\n.styles-module__cardDone___-m4w- .styles-module__cardTitle___xJxDN {\n text-decoration: line-through;\n color: #9ca3af;\n}\n\n.styles-module__backBtn___PTIAl {\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: #6b7280;\n transition: background 0.12s, color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__backBtn___PTIAl:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__detailView___36cvH {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.styles-module__detailHeader___Hepgq {\n display: flex;\n gap: 10px;\n padding: 16px 20px;\n background: #f5f5f5;\n border-bottom: 1px solid #e5e7eb;\n}\n\n.styles-module__detailTitle___7TvrX {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.5;\n margin-top: 4px;\n}\n\n.styles-module__detailScreenshot___UPF0f {\n margin: 0 20px 0;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-height: 180px;\n}\n.styles-module__detailScreenshot___UPF0f img {\n width: 100%;\n height: auto;\n display: block;\n object-fit: cover;\n}\n\n.styles-module__commentsList___5Uigg {\n flex: 1;\n overflow-y: auto;\n padding: 8px 0;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar {\n width: 4px;\n}\n.styles-module__commentsList___5Uigg::-webkit-scrollbar-thumb {\n background: #d1d5db;\n border-radius: 2px;\n}\n\n.styles-module__commentItem___5u78u {\n display: flex;\n gap: 10px;\n padding: 10px 20px;\n}\n.styles-module__commentItem___5u78u:hover {\n background: #f9fafb;\n}\n\n.styles-module__commentAvatar___OatKg {\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__commentBody___gmv1J {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__commentMeta___JNJa3 {\n display: flex;\n gap: 6px;\n align-items: center;\n margin-bottom: 2px;\n}\n\n.styles-module__commentAuthorName___XNVRk {\n font-size: 13px;\n font-weight: 600;\n color: #1a1a1a;\n}\n\n.styles-module__commentTime___CokGf {\n font-size: 12px;\n color: #9ca3af;\n}\n\n.styles-module__commentContent___yMiLR {\n font-size: 13px;\n color: #374151;\n line-height: 1.5;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.styles-module__loadingComments___zpATD, .styles-module__noComments___kvl90 {\n text-align: center;\n padding: 24px 20px;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.styles-module__replyBox___FO-XS {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n padding: 12px 20px;\n border-top: 1px solid #f3f4f6;\n background: #fff;\n}\n\n.styles-module__replyInput___k8C9e {\n flex: 1;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n padding: 8px 12px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n resize: none;\n outline: none;\n min-height: 20px;\n max-height: 80px;\n line-height: 1.5;\n transition: border-color 0.12s;\n}\n.styles-module__replyInput___k8C9e:focus {\n border-color: #18181b;\n}\n.styles-module__replyInput___k8C9e::placeholder {\n color: #9ca3af;\n}\n\n.styles-module__sendBtn___pBzWa {\n width: 32px;\n height: 32px;\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: #d1d5db;\n transition: color 0.12s;\n padding: 0;\n flex-shrink: 0;\n}\n.styles-module__sendBtn___pBzWa.styles-module__active___ZQzA5 {\n color: #3b82f6;\n}\n.styles-module__sendBtn___pBzWa:hover {\n color: #3b82f6;\n}\n\n.styles-module__commentImage___LuH8X {\n margin-top: 6px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n overflow: hidden;\n max-width: 240px;\n cursor: pointer;\n transition: opacity 0.12s;\n}\n.styles-module__commentImage___LuH8X:hover {\n opacity: 0.9;\n}\n.styles-module__commentImage___LuH8X img {\n width: 100%;\n height: auto;\n display: block;\n}\n\n.styles-module__commentFileCard___XE44y {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-top: 6px;\n padding: 8px 10px;\n border-radius: 8px;\n border: 1px solid #e5e7eb;\n background: #f9fafb;\n cursor: pointer;\n transition: background 0.12s;\n max-width: 240px;\n}\n.styles-module__commentFileCard___XE44y:hover {\n background: #f3f4f6;\n}\n\n.styles-module__commentFileIcon___G58-y {\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__commentFileInfo___OFIhR {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.styles-module__commentFileName___NUoII {\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__commentFileSize___sokU8 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__filePreviewOverlay___5RxYd {\n position: fixed;\n inset: 0;\n z-index: 2147483647;\n background: rgba(0, 0, 0, 0.6);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.styles-module__filePreviewModal___MGJLW {\n width: 90vw;\n max-width: 960px;\n height: 80vh;\n background: #fff;\n border-radius: 12px;\n box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);\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}\n\n.styles-module__filePreviewHeader___E9SWJ {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n border-bottom: 1px solid #e5e7eb;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewName___z8t-L {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__filePreviewActions___weizo {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.styles-module__filePreviewOpen___JpaEs {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n font-weight: 500;\n color: #3b82f6;\n text-decoration: none;\n padding: 4px 8px;\n border-radius: 6px;\n transition: background 0.12s;\n}\n.styles-module__filePreviewOpen___JpaEs:hover {\n background: #eff6ff;\n}\n\n.styles-module__filePreviewClose___TFcbr {\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: #6b7280;\n font-size: 18px;\n transition: background 0.12s, color 0.12s;\n}\n.styles-module__filePreviewClose___TFcbr:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__filePreviewBody___gwg1S {\n flex: 1;\n overflow: hidden;\n}\n\n.styles-module__filePreviewIframe___OQ3Oo {\n width: 100%;\n height: 100%;\n border: none;\n}\n\n.styles-module__filePreviewFallback___U1rB2 {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n gap: 12px;\n color: #6b7280;\n font-size: 14px;\n}\n.styles-module__filePreviewFallback___U1rB2 a {\n color: #3b82f6;\n text-decoration: none;\n font-weight: 500;\n}\n.styles-module__filePreviewFallback___U1rB2 a:hover {\n text-decoration: underline;\n}\n\n.styles-module__filePreviewFallbackIcon___0--41 {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n background: #f3f4f6;\n color: #6b7280;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 16px;\n font-weight: 700;\n}\n\n.styles-module__lightbox___8CDdt {\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___8CDdt 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___VGfjh {\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___VGfjh:hover {\n background: rgba(255, 255, 255, 0.25);\n}\n\n.styles-module__historyFilter___IoWL4 {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 10px 20px;\n border-bottom: 1px solid #f3f4f6;\n background: #fff;\n flex-shrink: 0;\n}\n\n.styles-module__historyDateWrap___reBzb {\n position: relative;\n}\n\n.styles-module__filterChipClear___Sx4c3 {\n width: 22px;\n height: 22px;\n border: none;\n background: #e5e7eb;\n border-radius: 50%;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n color: #6b7280;\n line-height: 1;\n transition: background 0.12s;\n font-family: inherit;\n}\n.styles-module__filterChipClear___Sx4c3:hover {\n background: #d1d5db;\n}\n\n.styles-module__datePopover___AYzLr {\n position: absolute;\n top: calc(100% + 4px);\n left: 0;\n z-index: 10;\n background: #fff;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);\n padding: 8px;\n}\n\n.styles-module__dateInput___Ofr3Y {\n border: 1px solid #e5e7eb;\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 13px;\n font-family: inherit;\n color: #1a1a1a;\n outline: none;\n cursor: pointer;\n}\n.styles-module__dateInput___Ofr3Y:focus {\n border-color: #18181b;\n}\n\n.styles-module__historyItem___G4kbt {\n display: flex;\n gap: 12px;\n padding: 12px 20px;\n position: relative;\n transition: background 0.12s;\n}\n.styles-module__historyItem___G4kbt:hover {\n background: #f9fafb;\n}\n.styles-module__historyItem___G4kbt:not(:last-child)::before {\n content: "";\n position: absolute;\n left: 29px;\n top: 24px;\n bottom: -12px;\n width: 1px;\n background: #e5e7eb;\n}\n\n.styles-module__historyDot___0z439 {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n background: #d1d5db;\n}\n\n.styles-module__historyDot_created___G-qjM {\n background: #6366f1;\n}\n\n.styles-module__historyDot_status_changed___jsanw {\n background: #3b82f6;\n}\n\n.styles-module__historyDot_comment_added___5-lrl {\n background: #f59e0b;\n}\n\n.styles-module__historyBody___i-k1p {\n flex: 1;\n min-width: 0;\n}\n\n.styles-module__historyMeta___khk0e {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 2px;\n}\n\n.styles-module__historyEvent___P6rQ5 {\n font-size: 12px;\n font-weight: 600;\n color: #374151;\n}\n\n.styles-module__historyTime___bWpM4 {\n font-size: 11px;\n color: #9ca3af;\n}\n\n.styles-module__historyTitle___gUvXd {\n font-size: 13px;\n color: #1a1a1a;\n line-height: 1.4;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__historyUrl___5xfKq {\n font-size: 11px;\n color: #9ca3af;\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}';
|
|
3029
|
+
var classNames6 = { "backdrop": "styles-module__backdrop___zYhcU", "fadeIn": "styles-module__fadeIn___j09Ts", "panel": "styles-module__panel___6YS8k", "slideIn": "styles-module__slideIn___0o0s-", "exiting": "styles-module__exiting___6A-Ag", "slideOut": "styles-module__slideOut___nKrBX", "header": "styles-module__header___fBbGz", "headerLeft": "styles-module__headerLeft___e0YLf", "headerTitle": "styles-module__headerTitle___oEPJa", "closeBtn": "styles-module__closeBtn___-H8ra", "tabs": "styles-module__tabs___nfuX7", "tab": "styles-module__tab___Hc-jn", "active": "styles-module__active___ZQzA5", "tabBadge": "styles-module__tabBadge___IdFDQ", "statusFilter": "styles-module__statusFilter___qtBXs", "filterChip": "styles-module__filterChip___l2s74", "filterCount": "styles-module__filterCount___KukiQ", "content": "styles-module__content___L2lRw", "card": "styles-module__card___F8qwd", "cardHeader": "styles-module__cardHeader___QOVGR", "cardAvatar": "styles-module__cardAvatar___FfKmW", "cardInfo": "styles-module__cardInfo___BmrdF", "cardMeta": "styles-module__cardMeta___7p9KD", "cardAuthor": "styles-module__cardAuthor___YvnuR", "cardTime": "styles-module__cardTime___N1Png", "cardActions": "styles-module__cardActions___7QF72", "cardAction": "styles-module__cardAction___t4b3V", "cardTitle": "styles-module__cardTitle___xJxDN", "cardScreenshot": "styles-module__cardScreenshot___I5-QL", "cardRoute": "styles-module__cardRoute___U4gB6", "cardRoutePath": "styles-module__cardRoutePath___zP-fh", "cardRouteIcon": "styles-module__cardRouteIcon___SBqGj", "cardRouteName": "styles-module__cardRouteName___BDH75", "cardStatusTime": "styles-module__cardStatusTime___S62W1", "cardFooter": "styles-module__cardFooter___wfPa4", "cardReplyDot": "styles-module__cardReplyDot___YnqzI", "cardReplyCount": "styles-module__cardReplyCount___O1khL", "statusDot": "styles-module__statusDot___l4IHG", "todo": "styles-module__todo___894P6", "inProgress": "styles-module__inProgress___IZ1mJ", "done": "styles-module__done___n4cWP", "empty": "styles-module__empty___IADrw", "emptyIcon": "styles-module__emptyIcon___1x5wT", "checkBtn": "styles-module__checkBtn___KjHxm", "checked": "styles-module__checked___8pype", "cardDone": "styles-module__cardDone___-m4w-", "backBtn": "styles-module__backBtn___PTIAl", "detailView": "styles-module__detailView___36cvH", "detailHeader": "styles-module__detailHeader___Hepgq", "detailTitle": "styles-module__detailTitle___7TvrX", "detailScreenshot": "styles-module__detailScreenshot___UPF0f", "commentsList": "styles-module__commentsList___5Uigg", "commentItem": "styles-module__commentItem___5u78u", "commentAvatar": "styles-module__commentAvatar___OatKg", "commentBody": "styles-module__commentBody___gmv1J", "commentMeta": "styles-module__commentMeta___JNJa3", "commentAuthorName": "styles-module__commentAuthorName___XNVRk", "commentTime": "styles-module__commentTime___CokGf", "commentContent": "styles-module__commentContent___yMiLR", "loadingComments": "styles-module__loadingComments___zpATD", "noComments": "styles-module__noComments___kvl90", "replyBox": "styles-module__replyBox___FO-XS", "replyInput": "styles-module__replyInput___k8C9e", "sendBtn": "styles-module__sendBtn___pBzWa", "commentImage": "styles-module__commentImage___LuH8X", "commentFileCard": "styles-module__commentFileCard___XE44y", "commentFileIcon": "styles-module__commentFileIcon___G58-y", "commentFileInfo": "styles-module__commentFileInfo___OFIhR", "commentFileName": "styles-module__commentFileName___NUoII", "commentFileSize": "styles-module__commentFileSize___sokU8", "filePreviewOverlay": "styles-module__filePreviewOverlay___5RxYd", "filePreviewModal": "styles-module__filePreviewModal___MGJLW", "filePreviewHeader": "styles-module__filePreviewHeader___E9SWJ", "filePreviewName": "styles-module__filePreviewName___z8t-L", "filePreviewActions": "styles-module__filePreviewActions___weizo", "filePreviewOpen": "styles-module__filePreviewOpen___JpaEs", "filePreviewClose": "styles-module__filePreviewClose___TFcbr", "filePreviewBody": "styles-module__filePreviewBody___gwg1S", "filePreviewIframe": "styles-module__filePreviewIframe___OQ3Oo", "filePreviewFallback": "styles-module__filePreviewFallback___U1rB2", "filePreviewFallbackIcon": "styles-module__filePreviewFallbackIcon___0--41", "lightbox": "styles-module__lightbox___8CDdt", "lightboxClose": "styles-module__lightboxClose___VGfjh", "historyFilter": "styles-module__historyFilter___IoWL4", "historyDateWrap": "styles-module__historyDateWrap___reBzb", "filterChipClear": "styles-module__filterChipClear___Sx4c3", "datePopover": "styles-module__datePopover___AYzLr", "dateInput": "styles-module__dateInput___Ofr3Y", "historyItem": "styles-module__historyItem___G4kbt", "historyDot": "styles-module__historyDot___0z439", "historyDot_created": "styles-module__historyDot_created___G-qjM", "historyDot_status_changed": "styles-module__historyDot_status_changed___jsanw", "historyDot_comment_added": "styles-module__historyDot_comment_added___5-lrl", "historyBody": "styles-module__historyBody___i-k1p", "historyMeta": "styles-module__historyMeta___khk0e", "historyEvent": "styles-module__historyEvent___P6rQ5", "historyTime": "styles-module__historyTime___bWpM4", "historyTitle": "styles-module__historyTitle___gUvXd", "historyUrl": "styles-module__historyUrl___5xfKq" };
|
|
2991
3030
|
if (typeof document !== "undefined") {
|
|
2992
3031
|
let style = document.getElementById("impakers-debug-styles-inbox-panel-styles");
|
|
2993
3032
|
if (!style) {
|
|
@@ -2995,12 +3034,12 @@ if (typeof document !== "undefined") {
|
|
|
2995
3034
|
style.id = "impakers-debug-styles-inbox-panel-styles";
|
|
2996
3035
|
document.head.appendChild(style);
|
|
2997
3036
|
}
|
|
2998
|
-
style.textContent =
|
|
3037
|
+
style.textContent = css6;
|
|
2999
3038
|
}
|
|
3000
|
-
var
|
|
3039
|
+
var styles_module_default6 = classNames6;
|
|
3001
3040
|
|
|
3002
3041
|
// src/components/inbox-panel/index.tsx
|
|
3003
|
-
var
|
|
3042
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
3004
3043
|
function ImageLightbox({ src, onClose }) {
|
|
3005
3044
|
(0, import_react5.useEffect)(() => {
|
|
3006
3045
|
const handler = (e) => {
|
|
@@ -3009,9 +3048,9 @@ function ImageLightbox({ src, onClose }) {
|
|
|
3009
3048
|
document.addEventListener("keydown", handler);
|
|
3010
3049
|
return () => document.removeEventListener("keydown", handler);
|
|
3011
3050
|
}, [onClose]);
|
|
3012
|
-
return /* @__PURE__ */ (0,
|
|
3013
|
-
/* @__PURE__ */ (0,
|
|
3014
|
-
/* @__PURE__ */ (0,
|
|
3051
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.lightbox, onClick: onClose, "data-impakers-debug": "", children: [
|
|
3052
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src, alt: "enlarged", onClick: (e) => e.stopPropagation() }),
|
|
3053
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.lightboxClose, onClick: onClose, type: "button", children: "\xD7" })
|
|
3015
3054
|
] });
|
|
3016
3055
|
}
|
|
3017
3056
|
function formatFileSize2(bytes) {
|
|
@@ -3060,25 +3099,25 @@ function FilePreviewModal({
|
|
|
3060
3099
|
return () => document.removeEventListener("keydown", handler);
|
|
3061
3100
|
}, [onClose]);
|
|
3062
3101
|
const previewSrc = getPreviewSrc(fileUrl, fileType, fileSource);
|
|
3063
|
-
return /* @__PURE__ */ (0,
|
|
3064
|
-
/* @__PURE__ */ (0,
|
|
3065
|
-
/* @__PURE__ */ (0,
|
|
3066
|
-
/* @__PURE__ */ (0,
|
|
3067
|
-
/* @__PURE__ */ (0,
|
|
3068
|
-
/* @__PURE__ */ (0,
|
|
3069
|
-
/* @__PURE__ */ (0,
|
|
3070
|
-
/* @__PURE__ */ (0,
|
|
3071
|
-
/* @__PURE__ */ (0,
|
|
3102
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.filePreviewOverlay, onClick: onClose, "data-impakers-debug": "", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewModal, onClick: (e) => e.stopPropagation(), children: [
|
|
3103
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewHeader, children: [
|
|
3104
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filePreviewName, children: fileName }),
|
|
3105
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewActions, children: [
|
|
3106
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", className: styles_module_default6.filePreviewOpen, children: [
|
|
3107
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "14", height: "14", children: [
|
|
3108
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
|
|
3109
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 3 21 3 21 9" }),
|
|
3110
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
3072
3111
|
] }),
|
|
3073
3112
|
"\uC5F4\uAE30"
|
|
3074
3113
|
] }),
|
|
3075
|
-
/* @__PURE__ */ (0,
|
|
3114
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.filePreviewClose, onClick: onClose, type: "button", children: "\xD7" })
|
|
3076
3115
|
] })
|
|
3077
3116
|
] }),
|
|
3078
|
-
/* @__PURE__ */ (0,
|
|
3079
|
-
/* @__PURE__ */ (0,
|
|
3080
|
-
/* @__PURE__ */ (0,
|
|
3081
|
-
/* @__PURE__ */ (0,
|
|
3117
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.filePreviewBody, children: previewSrc ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("iframe", { src: previewSrc, className: styles_module_default6.filePreviewIframe, title: fileName }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.filePreviewFallback, children: [
|
|
3118
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filePreviewFallbackIcon, children: getFileIcon2(fileType) }),
|
|
3119
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: "\uBBF8\uB9AC\uBCF4\uAE30\uB97C \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uD30C\uC77C \uD615\uC2DD\uC785\uB2C8\uB2E4" }),
|
|
3120
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("a", { href: fileUrl, target: "_blank", rel: "noopener noreferrer", children: "\uD30C\uC77C \uC5F4\uAE30" })
|
|
3082
3121
|
] }) })
|
|
3083
3122
|
] }) });
|
|
3084
3123
|
}
|
|
@@ -3086,14 +3125,14 @@ function formatTime2(dateStr) {
|
|
|
3086
3125
|
const date = new Date(dateStr);
|
|
3087
3126
|
const diff = Date.now() - date.getTime();
|
|
3088
3127
|
const pad = (n) => String(n).padStart(2, "0");
|
|
3089
|
-
const abs = `${
|
|
3128
|
+
const abs = `${date.getMonth() + 1}/${date.getDate()} ${pad(date.getHours())}:${pad(date.getMinutes())}`;
|
|
3090
3129
|
const m = Math.floor(diff / 6e4);
|
|
3091
|
-
if (m < 1) return `${abs} (
|
|
3092
|
-
if (m < 60) return `${abs} (${m}
|
|
3130
|
+
if (m < 1) return `${abs} (\uBC29\uAE08)`;
|
|
3131
|
+
if (m < 60) return `${abs} (${m}\uBD84 \uC804)`;
|
|
3093
3132
|
const h = Math.floor(m / 60);
|
|
3094
|
-
if (h < 24) return `${abs} (${h}
|
|
3133
|
+
if (h < 24) return `${abs} (${h}\uC2DC\uAC04 \uC804)`;
|
|
3095
3134
|
const d = Math.floor(h / 24);
|
|
3096
|
-
return `${abs} (${d}
|
|
3135
|
+
return `${abs} (${d}\uC77C \uC804)`;
|
|
3097
3136
|
}
|
|
3098
3137
|
function getInitials2(name) {
|
|
3099
3138
|
return name.slice(0, 1).toUpperCase();
|
|
@@ -3106,10 +3145,17 @@ function InboxPanel({
|
|
|
3106
3145
|
endpoint,
|
|
3107
3146
|
currentUserName,
|
|
3108
3147
|
currentUserId,
|
|
3109
|
-
onClose
|
|
3148
|
+
onClose,
|
|
3149
|
+
onHistoryViewed,
|
|
3150
|
+
newNotiCount
|
|
3110
3151
|
}) {
|
|
3111
3152
|
const [tab, setTab] = (0, import_react5.useState)("page");
|
|
3112
3153
|
const [statusFilter, setStatusFilter] = (0, import_react5.useState)("todo");
|
|
3154
|
+
const [historyDate, setHistoryDate] = (0, import_react5.useState)("");
|
|
3155
|
+
const [showDatePicker, setShowDatePicker] = (0, import_react5.useState)(false);
|
|
3156
|
+
const datePickerRef = (0, import_react5.useRef)(null);
|
|
3157
|
+
const [historyEvents, setHistoryEvents] = (0, import_react5.useState)([]);
|
|
3158
|
+
const [historyLoading, setHistoryLoading] = (0, import_react5.useState)(false);
|
|
3113
3159
|
const [exiting, setExiting] = (0, import_react5.useState)(false);
|
|
3114
3160
|
const [selectedItem, setSelectedItem] = (0, import_react5.useState)(null);
|
|
3115
3161
|
const [comments, setComments] = (0, import_react5.useState)([]);
|
|
@@ -3158,6 +3204,16 @@ function InboxPanel({
|
|
|
3158
3204
|
(0, import_react5.useEffect)(() => {
|
|
3159
3205
|
commentsEndRef.current?.scrollIntoView({ behavior: "smooth" });
|
|
3160
3206
|
}, [comments.length]);
|
|
3207
|
+
(0, import_react5.useEffect)(() => {
|
|
3208
|
+
if (!showDatePicker) return;
|
|
3209
|
+
const handler = (e) => {
|
|
3210
|
+
if (datePickerRef.current && !datePickerRef.current.contains(e.target)) {
|
|
3211
|
+
setShowDatePicker(false);
|
|
3212
|
+
}
|
|
3213
|
+
};
|
|
3214
|
+
document.addEventListener("mousedown", handler);
|
|
3215
|
+
return () => document.removeEventListener("mousedown", handler);
|
|
3216
|
+
}, [showDatePicker]);
|
|
3161
3217
|
(0, import_react5.useEffect)(() => {
|
|
3162
3218
|
if (selectedItem) replyRef.current?.focus();
|
|
3163
3219
|
}, [selectedItem]);
|
|
@@ -3180,64 +3236,69 @@ function InboxPanel({
|
|
|
3180
3236
|
}
|
|
3181
3237
|
if (e.key === "Escape") handleClose();
|
|
3182
3238
|
}, [handleSendReply, handleClose]);
|
|
3183
|
-
const rawItems = tab === "page" ? pageItems : allItems;
|
|
3239
|
+
const rawItems = tab === "page" ? pageItems : tab === "all" ? allItems : [];
|
|
3184
3240
|
const items = rawItems.filter((item) => item.status === statusFilter);
|
|
3185
3241
|
const todoCount = rawItems.filter((item) => item.status === "todo").length;
|
|
3186
3242
|
const inProgressCount = rawItems.filter((item) => item.status === "in_progress").length;
|
|
3187
3243
|
const doneCount = rawItems.filter((item) => item.status === "done").length;
|
|
3244
|
+
(0, import_react5.useEffect)(() => {
|
|
3245
|
+
if (tab !== "history") return;
|
|
3246
|
+
setHistoryLoading(true);
|
|
3247
|
+
fetchHistory(endpoint, { date: historyDate || void 0, limit: 200 }).then(setHistoryEvents).catch(() => setHistoryEvents([])).finally(() => setHistoryLoading(false));
|
|
3248
|
+
}, [tab, historyDate, endpoint]);
|
|
3188
3249
|
if (typeof document === "undefined") return null;
|
|
3189
3250
|
return (0, import_react_dom.createPortal)(
|
|
3190
|
-
/* @__PURE__ */ (0,
|
|
3191
|
-
/* @__PURE__ */ (0,
|
|
3192
|
-
/* @__PURE__ */ (0,
|
|
3193
|
-
/* @__PURE__ */ (0,
|
|
3194
|
-
/* @__PURE__ */ (0,
|
|
3195
|
-
selectedItem && /* @__PURE__ */ (0,
|
|
3196
|
-
/* @__PURE__ */ (0,
|
|
3251
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { "data-impakers-debug": "", children: [
|
|
3252
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.backdrop, onClick: handleClose }),
|
|
3253
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${styles_module_default6.panel} ${exiting ? styles_module_default6.exiting : ""}`, "data-impakers-debug": "", children: [
|
|
3254
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.header, children: [
|
|
3255
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.headerLeft, children: [
|
|
3256
|
+
selectedItem && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.backBtn, onClick: handleClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 18 9 12 15 6" }) }) }),
|
|
3257
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.headerTitle, children: selectedItem ? "\uD53C\uB4DC\uBC31 \uC0C1\uC138" : serviceName || "Feedback" })
|
|
3197
3258
|
] }),
|
|
3198
|
-
/* @__PURE__ */ (0,
|
|
3259
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("button", { className: styles_module_default6.closeBtn, onClick: () => {
|
|
3199
3260
|
setExiting(true);
|
|
3200
3261
|
setTimeout(() => onClose(), 150);
|
|
3201
|
-
}, type: "button", children: /* @__PURE__ */ (0,
|
|
3262
|
+
}, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
|
|
3202
3263
|
] }),
|
|
3203
|
-
selectedItem ? /* @__PURE__ */ (0,
|
|
3204
|
-
/* @__PURE__ */ (0,
|
|
3205
|
-
/* @__PURE__ */ (0,
|
|
3206
|
-
/* @__PURE__ */ (0,
|
|
3207
|
-
/* @__PURE__ */ (0,
|
|
3208
|
-
/* @__PURE__ */ (0,
|
|
3209
|
-
/* @__PURE__ */ (0,
|
|
3264
|
+
selectedItem ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.detailView, children: [
|
|
3265
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.detailHeader, children: [
|
|
3266
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardAvatar, children: getInitials2(selectedItem.authorName) }),
|
|
3267
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { children: [
|
|
3268
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardMeta, children: [
|
|
3269
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardAuthor, children: selectedItem.authorName }),
|
|
3270
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardTime, children: formatTime2(selectedItem.createdAt) })
|
|
3210
3271
|
] }),
|
|
3211
|
-
/* @__PURE__ */ (0,
|
|
3272
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.detailTitle, children: selectedItem.title.replace(/^\[피드백\]\s*/, "") })
|
|
3212
3273
|
] })
|
|
3213
3274
|
] }),
|
|
3214
|
-
selectedItem.screenshot && /* @__PURE__ */ (0,
|
|
3215
|
-
/* @__PURE__ */ (0,
|
|
3216
|
-
loadingComments && /* @__PURE__ */ (0,
|
|
3217
|
-
!loadingComments && comments.length === 0 && /* @__PURE__ */ (0,
|
|
3218
|
-
comments.map((c) => /* @__PURE__ */ (0,
|
|
3219
|
-
/* @__PURE__ */ (0,
|
|
3220
|
-
/* @__PURE__ */ (0,
|
|
3221
|
-
/* @__PURE__ */ (0,
|
|
3222
|
-
/* @__PURE__ */ (0,
|
|
3223
|
-
/* @__PURE__ */ (0,
|
|
3275
|
+
selectedItem.screenshot && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.detailScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: selectedItem.screenshot, alt: "screenshot" }) }),
|
|
3276
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentsList, children: [
|
|
3277
|
+
loadingComments && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(LoadingSpinner, { message: "\uB313\uAE00 \uB85C\uB529 \uC911..." }),
|
|
3278
|
+
!loadingComments && comments.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.noComments, children: "\uC544\uC9C1 \uB313\uAE00\uC774 \uC5C6\uC2B5\uB2C8\uB2E4" }),
|
|
3279
|
+
comments.map((c) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentItem, children: [
|
|
3280
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.commentAvatar, style: { width: 22, height: 22, fontSize: 10 }, children: getInitials2(c.authorName) }),
|
|
3281
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentBody, children: [
|
|
3282
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.commentMeta, children: [
|
|
3283
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentAuthorName, children: c.authorName }),
|
|
3284
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentTime, children: formatTime2(c.createdAt) })
|
|
3224
3285
|
] }),
|
|
3225
|
-
c.content && /* @__PURE__ */ (0,
|
|
3226
|
-
c.imageUrl && /* @__PURE__ */ (0,
|
|
3286
|
+
c.content && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.commentContent, children: c.content }),
|
|
3287
|
+
c.imageUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3227
3288
|
"div",
|
|
3228
3289
|
{
|
|
3229
|
-
className:
|
|
3290
|
+
className: styles_module_default6.commentImage,
|
|
3230
3291
|
onClick: (e) => {
|
|
3231
3292
|
e.stopPropagation();
|
|
3232
3293
|
setLightboxSrc(c.imageUrl);
|
|
3233
3294
|
},
|
|
3234
|
-
children: /* @__PURE__ */ (0,
|
|
3295
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: c.imageUrl, alt: "attachment" })
|
|
3235
3296
|
}
|
|
3236
3297
|
),
|
|
3237
|
-
c.fileUrl && /* @__PURE__ */ (0,
|
|
3298
|
+
c.fileUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3238
3299
|
"div",
|
|
3239
3300
|
{
|
|
3240
|
-
className:
|
|
3301
|
+
className: styles_module_default6.commentFileCard,
|
|
3241
3302
|
onClick: (e) => {
|
|
3242
3303
|
e.stopPropagation();
|
|
3243
3304
|
setFilePreview({
|
|
@@ -3248,24 +3309,24 @@ function InboxPanel({
|
|
|
3248
3309
|
});
|
|
3249
3310
|
},
|
|
3250
3311
|
children: [
|
|
3251
|
-
/* @__PURE__ */ (0,
|
|
3252
|
-
/* @__PURE__ */ (0,
|
|
3253
|
-
/* @__PURE__ */ (0,
|
|
3254
|
-
c.fileSize != null && /* @__PURE__ */ (0,
|
|
3312
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileIcon, children: getFileIcon2(c.fileType || "") }),
|
|
3313
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.commentFileInfo, children: [
|
|
3314
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileName, children: c.fileName || "\uD30C\uC77C" }),
|
|
3315
|
+
c.fileSize != null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.commentFileSize, children: formatFileSize2(c.fileSize) })
|
|
3255
3316
|
] })
|
|
3256
3317
|
]
|
|
3257
3318
|
}
|
|
3258
3319
|
)
|
|
3259
3320
|
] })
|
|
3260
3321
|
] }, c.id)),
|
|
3261
|
-
/* @__PURE__ */ (0,
|
|
3322
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { ref: commentsEndRef })
|
|
3262
3323
|
] }),
|
|
3263
|
-
/* @__PURE__ */ (0,
|
|
3264
|
-
/* @__PURE__ */ (0,
|
|
3324
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.replyBox, children: [
|
|
3325
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3265
3326
|
"textarea",
|
|
3266
3327
|
{
|
|
3267
3328
|
ref: replyRef,
|
|
3268
|
-
className:
|
|
3329
|
+
className: styles_module_default6.replyInput,
|
|
3269
3330
|
placeholder: "Reply...",
|
|
3270
3331
|
value: replyText,
|
|
3271
3332
|
onChange: (e) => {
|
|
@@ -3278,114 +3339,204 @@ function InboxPanel({
|
|
|
3278
3339
|
rows: 2
|
|
3279
3340
|
}
|
|
3280
3341
|
),
|
|
3281
|
-
/* @__PURE__ */ (0,
|
|
3342
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3282
3343
|
"button",
|
|
3283
3344
|
{
|
|
3284
|
-
className: `${
|
|
3345
|
+
className: `${styles_module_default6.sendBtn} ${replyText.trim() ? styles_module_default6.active : ""}`,
|
|
3285
3346
|
onClick: handleSendReply,
|
|
3286
3347
|
disabled: !replyText.trim(),
|
|
3287
3348
|
type: "button",
|
|
3288
|
-
children: /* @__PURE__ */ (0,
|
|
3289
|
-
/* @__PURE__ */ (0,
|
|
3290
|
-
/* @__PURE__ */ (0,
|
|
3349
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "16", height: "16", children: [
|
|
3350
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "22", y1: "2", x2: "11", y2: "13" }),
|
|
3351
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polygon", { points: "22 2 15 22 11 13 2 9 22 2" })
|
|
3291
3352
|
] })
|
|
3292
3353
|
}
|
|
3293
3354
|
)
|
|
3294
3355
|
] })
|
|
3295
|
-
] }) : /* @__PURE__ */ (0,
|
|
3296
|
-
/* @__PURE__ */ (0,
|
|
3297
|
-
/* @__PURE__ */ (0,
|
|
3356
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
3357
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.tabs, children: [
|
|
3358
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "page" ? styles_module_default6.active : ""}`, onClick: () => setTab("page"), type: "button", children: [
|
|
3298
3359
|
"This Page",
|
|
3299
|
-
pageItems.length > 0 && /* @__PURE__ */ (0,
|
|
3360
|
+
pageItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: pageItems.length })
|
|
3300
3361
|
] }),
|
|
3301
|
-
/* @__PURE__ */ (0,
|
|
3362
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "all" ? styles_module_default6.active : ""}`, onClick: () => setTab("all"), type: "button", children: [
|
|
3302
3363
|
"All",
|
|
3303
|
-
allItems.length > 0 && /* @__PURE__ */ (0,
|
|
3364
|
+
allItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: allItems.length })
|
|
3365
|
+
] }),
|
|
3366
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("button", { className: `${styles_module_default6.tab} ${tab === "history" ? styles_module_default6.active : ""}`, onClick: () => {
|
|
3367
|
+
setTab("history");
|
|
3368
|
+
onHistoryViewed?.();
|
|
3369
|
+
}, type: "button", children: [
|
|
3370
|
+
"History",
|
|
3371
|
+
newNotiCount && newNotiCount > 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.tabBadge, children: newNotiCount }) : null
|
|
3304
3372
|
] })
|
|
3305
3373
|
] }),
|
|
3306
|
-
|
|
3307
|
-
/*
|
|
3308
|
-
|
|
3309
|
-
{
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3374
|
+
tab === "history" ? (
|
|
3375
|
+
/* === History 뷰 === */
|
|
3376
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
3377
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyFilter, children: [
|
|
3378
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyDateWrap, ref: datePickerRef, children: [
|
|
3379
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3380
|
+
"button",
|
|
3381
|
+
{
|
|
3382
|
+
className: `${styles_module_default6.filterChip} ${historyDate ? styles_module_default6.active : ""}`,
|
|
3383
|
+
onClick: () => setShowDatePicker((v) => !v),
|
|
3384
|
+
type: "button",
|
|
3385
|
+
children: [
|
|
3386
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "13", height: "13", children: [
|
|
3387
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("rect", { x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }),
|
|
3388
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "16", y1: "2", x2: "16", y2: "6" }),
|
|
3389
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "8", y1: "2", x2: "8", y2: "6" }),
|
|
3390
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "3", y1: "10", x2: "21", y2: "10" })
|
|
3391
|
+
] }),
|
|
3392
|
+
historyDate ? `${new Date(historyDate).getMonth() + 1}/${new Date(historyDate).getDate()}` : "\uB0A0\uC9DC"
|
|
3393
|
+
]
|
|
3394
|
+
}
|
|
3395
|
+
),
|
|
3396
|
+
showDatePicker && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.datePopover, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3397
|
+
"input",
|
|
3398
|
+
{
|
|
3399
|
+
type: "date",
|
|
3400
|
+
value: historyDate,
|
|
3401
|
+
onChange: (e) => {
|
|
3402
|
+
setHistoryDate(e.target.value);
|
|
3403
|
+
setShowDatePicker(false);
|
|
3404
|
+
},
|
|
3405
|
+
className: styles_module_default6.dateInput,
|
|
3406
|
+
autoFocus: true
|
|
3407
|
+
}
|
|
3408
|
+
) })
|
|
3409
|
+
] }),
|
|
3410
|
+
historyDate && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3411
|
+
"button",
|
|
3412
|
+
{
|
|
3413
|
+
className: styles_module_default6.filterChipClear,
|
|
3414
|
+
onClick: () => setHistoryDate(""),
|
|
3415
|
+
type: "button",
|
|
3416
|
+
title: "\uD544\uD130 \uCD08\uAE30\uD654",
|
|
3417
|
+
children: "\xD7"
|
|
3418
|
+
}
|
|
3419
|
+
)
|
|
3420
|
+
] }),
|
|
3421
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.content, children: historyLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.empty, children: "\uB85C\uB529 \uC911..." }) : historyEvents.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.empty, children: [
|
|
3422
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
3423
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
3424
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "12 6 12 12 16 14" })
|
|
3425
|
+
] }) }),
|
|
3426
|
+
"\uD788\uC2A4\uD1A0\uB9AC\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
3427
|
+
] }) : historyEvents.map((ev, i) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyItem, children: [
|
|
3428
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `${styles_module_default6.historyDot} ${styles_module_default6[`historyDot_${ev.action}`]}` }),
|
|
3429
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyBody, children: [
|
|
3430
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.historyMeta, children: [
|
|
3431
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.historyEvent, children: [
|
|
3432
|
+
ev.action === "created" && "\uD53C\uB4DC\uBC31 \uC0DD\uC131",
|
|
3433
|
+
ev.action === "status_changed" && ev.toStatus === "in_progress" && "\uC9C4\uD589 \uC2DC\uC791",
|
|
3434
|
+
ev.action === "status_changed" && ev.toStatus === "done" && "\uC644\uB8CC \uCC98\uB9AC",
|
|
3435
|
+
ev.action === "status_changed" && ev.toStatus === "todo" && "\uC7AC\uC624\uD508",
|
|
3436
|
+
ev.action === "comment_added" && `\uB313\uAE00 (${ev.actorName || "\uC775\uBA85"})`
|
|
3437
|
+
] }),
|
|
3438
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.historyTime, children: formatTime2(ev.createdAt) })
|
|
3439
|
+
] }),
|
|
3440
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.historyTitle, children: (ev.taskTitle || "").replace(/^\[피드백\]\s*/, "") }),
|
|
3441
|
+
ev.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.historyUrl, children: ev.feedbackUrl })
|
|
3442
|
+
] })
|
|
3443
|
+
] }, `${ev.id}-${ev.action}-${i}`)) })
|
|
3444
|
+
] })
|
|
3445
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
3446
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.statusFilter, children: [
|
|
3447
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3448
|
+
"button",
|
|
3449
|
+
{
|
|
3450
|
+
className: `${styles_module_default6.filterChip} ${statusFilter === "todo" ? styles_module_default6.active : ""}`,
|
|
3451
|
+
onClick: () => setStatusFilter("todo"),
|
|
3452
|
+
type: "button",
|
|
3453
|
+
children: [
|
|
3454
|
+
"\uC9C4\uD589\uC804",
|
|
3455
|
+
todoCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: todoCount })
|
|
3456
|
+
]
|
|
3457
|
+
}
|
|
3458
|
+
),
|
|
3459
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3460
|
+
"button",
|
|
3461
|
+
{
|
|
3462
|
+
className: `${styles_module_default6.filterChip} ${statusFilter === "in_progress" ? styles_module_default6.active : ""}`,
|
|
3463
|
+
onClick: () => setStatusFilter("in_progress"),
|
|
3464
|
+
type: "button",
|
|
3465
|
+
children: [
|
|
3466
|
+
"\uC9C4\uD589\uC911",
|
|
3467
|
+
inProgressCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: inProgressCount })
|
|
3468
|
+
]
|
|
3469
|
+
}
|
|
3470
|
+
),
|
|
3471
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3472
|
+
"button",
|
|
3473
|
+
{
|
|
3474
|
+
className: `${styles_module_default6.filterChip} ${statusFilter === "done" ? styles_module_default6.active : ""}`,
|
|
3475
|
+
onClick: () => setStatusFilter("done"),
|
|
3476
|
+
type: "button",
|
|
3477
|
+
children: [
|
|
3478
|
+
"\uC644\uB8CC",
|
|
3479
|
+
doneCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.filterCount, children: doneCount })
|
|
3480
|
+
]
|
|
3481
|
+
}
|
|
3482
|
+
)
|
|
3354
3483
|
] }),
|
|
3355
|
-
/* @__PURE__ */ (0,
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
{
|
|
3360
|
-
className:
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
|
|
3364
|
-
}
|
|
3365
|
-
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
-
|
|
3369
|
-
|
|
3370
|
-
|
|
3371
|
-
|
|
3372
|
-
|
|
3373
|
-
|
|
3374
|
-
|
|
3375
|
-
|
|
3376
|
-
|
|
3377
|
-
|
|
3378
|
-
|
|
3379
|
-
|
|
3380
|
-
|
|
3381
|
-
|
|
3484
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.content, children: items.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.empty, children: [
|
|
3485
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.emptyIcon, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) }) }),
|
|
3486
|
+
tab === "page" ? "\uC774 \uD398\uC774\uC9C0\uC5D0 \uD53C\uB4DC\uBC31\uC774 \uC5C6\uC2B5\uB2C8\uB2E4" : "\uD53C\uB4DC\uBC31\uC774 \uC5C6\uC2B5\uB2C8\uB2E4"
|
|
3487
|
+
] }) : items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: `${styles_module_default6.card} ${item.status === "done" ? styles_module_default6.cardDone : ""}`, onClick: () => handleItemClick(item), children: [
|
|
3488
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardHeader, children: [
|
|
3489
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardAvatar, children: getInitials2(item.authorName) }),
|
|
3490
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardInfo, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardMeta, children: [
|
|
3491
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardAuthor, children: item.authorName }),
|
|
3492
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardTime, children: formatTime2(item.createdAt) })
|
|
3493
|
+
] }) })
|
|
3494
|
+
] }),
|
|
3495
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardTitle, children: item.title.replace(/^\[피드백\]\s*/, "") }),
|
|
3496
|
+
item.screenshot && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: styles_module_default6.cardScreenshot, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: item.screenshot, alt: "screenshot" }) }),
|
|
3497
|
+
tab === "all" && item.feedbackUrl && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
3498
|
+
"div",
|
|
3499
|
+
{
|
|
3500
|
+
className: styles_module_default6.cardRoute,
|
|
3501
|
+
onClick: (e) => {
|
|
3502
|
+
e.stopPropagation();
|
|
3503
|
+
window.location.href = item.feedbackUrl;
|
|
3504
|
+
},
|
|
3505
|
+
title: "\uD398\uC774\uC9C0\uB85C \uC774\uB3D9",
|
|
3506
|
+
children: [
|
|
3507
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardRoutePath, children: item.feedbackUrl }),
|
|
3508
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("svg", { className: styles_module_default6.cardRouteIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", width: "12", height: "12", children: [
|
|
3509
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("path", { d: "M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6" }),
|
|
3510
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("polyline", { points: "15 3 21 3 21 9" }),
|
|
3511
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("line", { x1: "10", y1: "14", x2: "21", y2: "3" })
|
|
3512
|
+
] })
|
|
3513
|
+
]
|
|
3514
|
+
}
|
|
3515
|
+
),
|
|
3516
|
+
(item.startedAt || item.completedAt) && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardStatusTime, children: [
|
|
3517
|
+
item.startedAt && item.status !== "todo" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
|
|
3518
|
+
"\uC9C4\uD589 \uC2DC\uC791: ",
|
|
3519
|
+
formatTime2(item.startedAt)
|
|
3520
|
+
] }),
|
|
3521
|
+
item.completedAt && item.status === "done" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
|
|
3522
|
+
"\uC644\uB8CC: ",
|
|
3523
|
+
formatTime2(item.completedAt)
|
|
3524
|
+
] })
|
|
3525
|
+
] }),
|
|
3526
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: styles_module_default6.cardFooter, children: [
|
|
3527
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: styles_module_default6.cardReplyDot }),
|
|
3528
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: styles_module_default6.cardReplyCount, children: [
|
|
3529
|
+
item.commentCount,
|
|
3530
|
+
" ",
|
|
3531
|
+
item.commentCount === 1 ? "Reply" : "Replies"
|
|
3532
|
+
] })
|
|
3382
3533
|
] })
|
|
3383
|
-
] })
|
|
3384
|
-
] }
|
|
3534
|
+
] }, item.id)) })
|
|
3535
|
+
] })
|
|
3385
3536
|
] })
|
|
3386
3537
|
] }),
|
|
3387
|
-
lightboxSrc && /* @__PURE__ */ (0,
|
|
3388
|
-
filePreview && /* @__PURE__ */ (0,
|
|
3538
|
+
lightboxSrc && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ImageLightbox, { src: lightboxSrc, onClose: () => setLightboxSrc(null) }),
|
|
3539
|
+
filePreview && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3389
3540
|
FilePreviewModal,
|
|
3390
3541
|
{
|
|
3391
3542
|
fileUrl: filePreview.url,
|
|
@@ -3437,8 +3588,8 @@ var MARKER_COLORS = [
|
|
|
3437
3588
|
];
|
|
3438
3589
|
|
|
3439
3590
|
// src/components/settings-panel/styles.module.scss
|
|
3440
|
-
var
|
|
3441
|
-
var
|
|
3591
|
+
var css7 = '@keyframes styles-module__panelIn___SmRh6 {\n from {\n opacity: 0;\n transform: translateY(8px) scale(0.96);\n }\n to {\n opacity: 1;\n transform: translateY(0) scale(1);\n }\n}\n.styles-module__backdrop___--cMp {\n position: fixed;\n inset: 0;\n z-index: 100005;\n}\n\n.styles-module__panel___z6xiJ {\n position: fixed;\n bottom: 80px;\n right: 24px;\n width: 280px;\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: 100006;\n overflow: hidden;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__panelIn___SmRh6 0.15s ease-out;\n -webkit-font-smoothing: antialiased;\n}\n\n.styles-module__header___NkOur {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid #f3f4f6;\n}\n\n.styles-module__title___tsKZw {\n font-size: 14px;\n font-weight: 600;\n color: #18181b;\n}\n\n.styles-module__closeBtn___-OQ4Y {\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: #6b7280;\n}\n.styles-module__closeBtn___-OQ4Y:hover {\n background: #f3f4f6;\n color: #18181b;\n}\n\n.styles-module__body___9pyCP {\n padding: 12px 16px 16px;\n}\n\n.styles-module__field___vnQMl {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 0;\n}\n\n.styles-module__fieldLabel___2WUKB {\n font-size: 13px;\n font-weight: 500;\n color: #374151;\n}\n\n.styles-module__toggle___uWsqC {\n width: 40px;\n height: 22px;\n border-radius: 11px;\n background: #d1d5db;\n border: none;\n cursor: pointer;\n position: relative;\n transition: background 0.2s;\n padding: 0;\n}\n.styles-module__toggle___uWsqC.styles-module__on___W27kf {\n background: #18181b;\n}\n\n.styles-module__toggleThumb___wyckC {\n position: absolute;\n top: 2px;\n left: 2px;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);\n}\n.styles-module__on___W27kf .styles-module__toggleThumb___wyckC {\n transform: translateX(18px);\n}\n\n.styles-module__colors___vgFGZ {\n display: flex;\n gap: 6px;\n}\n\n.styles-module__colorBtn___N7dGu {\n width: 24px;\n height: 24px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n transition: transform 0.12s, border-color 0.12s;\n padding: 0;\n}\n.styles-module__colorBtn___N7dGu:hover {\n transform: scale(1.15);\n}\n.styles-module__colorBtn___N7dGu.styles-module__selected___0tVDH {\n border-color: #18181b;\n transform: scale(1.15);\n}';
|
|
3592
|
+
var classNames7 = { "backdrop": "styles-module__backdrop___--cMp", "panel": "styles-module__panel___z6xiJ", "panelIn": "styles-module__panelIn___SmRh6", "header": "styles-module__header___NkOur", "title": "styles-module__title___tsKZw", "closeBtn": "styles-module__closeBtn___-OQ4Y", "body": "styles-module__body___9pyCP", "field": "styles-module__field___vnQMl", "fieldLabel": "styles-module__fieldLabel___2WUKB", "toggle": "styles-module__toggle___uWsqC", "on": "styles-module__on___W27kf", "toggleThumb": "styles-module__toggleThumb___wyckC", "colors": "styles-module__colors___vgFGZ", "colorBtn": "styles-module__colorBtn___N7dGu", "selected": "styles-module__selected___0tVDH" };
|
|
3442
3593
|
if (typeof document !== "undefined") {
|
|
3443
3594
|
let style = document.getElementById("impakers-debug-styles-settings-panel-styles");
|
|
3444
3595
|
if (!style) {
|
|
@@ -3446,12 +3597,12 @@ if (typeof document !== "undefined") {
|
|
|
3446
3597
|
style.id = "impakers-debug-styles-settings-panel-styles";
|
|
3447
3598
|
document.head.appendChild(style);
|
|
3448
3599
|
}
|
|
3449
|
-
style.textContent =
|
|
3600
|
+
style.textContent = css7;
|
|
3450
3601
|
}
|
|
3451
|
-
var
|
|
3602
|
+
var styles_module_default7 = classNames7;
|
|
3452
3603
|
|
|
3453
3604
|
// src/components/settings-panel/index.tsx
|
|
3454
|
-
var
|
|
3605
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
3455
3606
|
function SettingsPanel({ settings, onChange, onClose }) {
|
|
3456
3607
|
const handleToggleMarkers = (0, import_react6.useCallback)(() => {
|
|
3457
3608
|
onChange({ ...settings, markersVisible: !settings.markersVisible });
|
|
@@ -3467,56 +3618,56 @@ function SettingsPanel({ settings, onChange, onClose }) {
|
|
|
3467
3618
|
}, [settings, onChange]);
|
|
3468
3619
|
if (typeof document === "undefined") return null;
|
|
3469
3620
|
return (0, import_react_dom2.createPortal)(
|
|
3470
|
-
/* @__PURE__ */ (0,
|
|
3471
|
-
/* @__PURE__ */ (0,
|
|
3472
|
-
/* @__PURE__ */ (0,
|
|
3473
|
-
/* @__PURE__ */ (0,
|
|
3474
|
-
/* @__PURE__ */ (0,
|
|
3475
|
-
/* @__PURE__ */ (0,
|
|
3621
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { "data-impakers-debug": "", children: [
|
|
3622
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.backdrop, onClick: onClose }),
|
|
3623
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.panel, "data-impakers-debug": "", children: [
|
|
3624
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.header, children: [
|
|
3625
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.title, children: "\uC124\uC815" }),
|
|
3626
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { className: styles_module_default7.closeBtn, onClick: onClose, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) }) })
|
|
3476
3627
|
] }),
|
|
3477
|
-
/* @__PURE__ */ (0,
|
|
3478
|
-
/* @__PURE__ */ (0,
|
|
3479
|
-
/* @__PURE__ */ (0,
|
|
3480
|
-
/* @__PURE__ */ (0,
|
|
3628
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.body, children: [
|
|
3629
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
|
|
3630
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB9C8\uCEE4 \uD45C\uC2DC" }),
|
|
3631
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3481
3632
|
"button",
|
|
3482
3633
|
{
|
|
3483
|
-
className: `${
|
|
3634
|
+
className: `${styles_module_default7.toggle} ${settings.markersVisible ? styles_module_default7.on : ""}`,
|
|
3484
3635
|
onClick: handleToggleMarkers,
|
|
3485
3636
|
type: "button",
|
|
3486
|
-
children: /* @__PURE__ */ (0,
|
|
3637
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
|
|
3487
3638
|
}
|
|
3488
3639
|
)
|
|
3489
3640
|
] }),
|
|
3490
|
-
/* @__PURE__ */ (0,
|
|
3491
|
-
/* @__PURE__ */ (0,
|
|
3492
|
-
/* @__PURE__ */ (0,
|
|
3641
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
|
|
3642
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uC644\uB8CC \uD540 \uC228\uAE30\uAE30" }),
|
|
3643
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3493
3644
|
"button",
|
|
3494
3645
|
{
|
|
3495
|
-
className: `${
|
|
3646
|
+
className: `${styles_module_default7.toggle} ${settings.hideDoneMarkers ? styles_module_default7.on : ""}`,
|
|
3496
3647
|
onClick: handleToggleHideDone,
|
|
3497
3648
|
type: "button",
|
|
3498
|
-
children: /* @__PURE__ */ (0,
|
|
3649
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
|
|
3499
3650
|
}
|
|
3500
3651
|
)
|
|
3501
3652
|
] }),
|
|
3502
|
-
/* @__PURE__ */ (0,
|
|
3503
|
-
/* @__PURE__ */ (0,
|
|
3504
|
-
/* @__PURE__ */ (0,
|
|
3653
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
|
|
3654
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB0B4\uAC00 \uCD94\uAC00\uD55C \uAC83\uB9CC" }),
|
|
3655
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3505
3656
|
"button",
|
|
3506
3657
|
{
|
|
3507
|
-
className: `${
|
|
3658
|
+
className: `${styles_module_default7.toggle} ${settings.showOnlyMine ? styles_module_default7.on : ""}`,
|
|
3508
3659
|
onClick: handleToggleShowOnlyMine,
|
|
3509
3660
|
type: "button",
|
|
3510
|
-
children: /* @__PURE__ */ (0,
|
|
3661
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: styles_module_default7.toggleThumb })
|
|
3511
3662
|
}
|
|
3512
3663
|
)
|
|
3513
3664
|
] }),
|
|
3514
|
-
/* @__PURE__ */ (0,
|
|
3515
|
-
/* @__PURE__ */ (0,
|
|
3516
|
-
/* @__PURE__ */ (0,
|
|
3665
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: styles_module_default7.field, children: [
|
|
3666
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.fieldLabel, children: "\uB9C8\uCEE4 \uC0C9\uC0C1" }),
|
|
3667
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: styles_module_default7.colors, children: MARKER_COLORS.map((c) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3517
3668
|
"button",
|
|
3518
3669
|
{
|
|
3519
|
-
className: `${
|
|
3670
|
+
className: `${styles_module_default7.colorBtn} ${settings.markerColor === c.value ? styles_module_default7.selected : ""}`,
|
|
3520
3671
|
style: { background: c.value },
|
|
3521
3672
|
onClick: () => handleColorChange(c.value),
|
|
3522
3673
|
title: c.label,
|
|
@@ -3533,8 +3684,8 @@ function SettingsPanel({ settings, onChange, onClose }) {
|
|
|
3533
3684
|
}
|
|
3534
3685
|
|
|
3535
3686
|
// src/components/debug-widget/styles.module.scss
|
|
3536
|
-
var
|
|
3537
|
-
var
|
|
3687
|
+
var css8 = '.styles-module__markersLayer___VR1cD svg[fill=none],\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] {\n fill: none !important;\n}\n.styles-module__markersLayer___VR1cD svg[fill=none] :not([fill]),\n.styles-module__fixedMarkersLayer___wBuxm svg[fill=none] :not([fill]) {\n fill: none !important;\n}\n\n@keyframes styles-module__fadeIn___PpRqy {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes styles-module__fadeOut___tZb9S {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n@keyframes styles-module__hoverHighlightIn___ljC4F {\n from {\n opacity: 0;\n transform: scale(0.98);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n@keyframes styles-module__hoverTooltipIn___tncNM {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__fabEnter___9koyT {\n from {\n opacity: 0;\n transform: scale(0.5);\n }\n to {\n opacity: 1;\n transform: scale(1);\n }\n}\n.styles-module__fab___6FrCF {\n position: fixed;\n bottom: 24px;\n right: 24px;\n width: 44px;\n height: 44px;\n border-radius: 50%;\n background: #18181b;\n color: white;\n border: none;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15), 0 1px 3px rgba(0, 0, 0, 0.1);\n transition: transform 0.15s ease, box-shadow 0.15s ease;\n z-index: 99999;\n animation: styles-module__fabEnter___9koyT 0.3s cubic-bezier(0.22, 1, 0.36, 1);\n touch-action: none;\n}\n.styles-module__fab___6FrCF svg {\n width: 20px;\n height: 20px;\n}\n.styles-module__fab___6FrCF:hover {\n transform: scale(1.08);\n box-shadow: 0 6px 16px rgba(0, 0, 0, 0.2), 0 2px 4px rgba(0, 0, 0, 0.12);\n}\n.styles-module__fab___6FrCF:active {\n transform: scale(0.96);\n}\n.styles-module__fab___6FrCF.styles-module__active___X5PRD {\n background: #dc2626;\n}\n\n.styles-module__hoverHighlight___9kGLL {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.5);\n border-radius: 4px;\n background-color: rgba(0, 136, 255, 0.04);\n pointer-events: none !important;\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__hoverHighlight___9kGLL.styles-module__enter___jAi-c {\n animation: styles-module__hoverHighlightIn___ljC4F 0.12s ease-out forwards;\n}\n\n.styles-module__singleSelectOutline___2meUm {\n position: fixed;\n border: 2px solid rgba(0, 136, 255, 0.6);\n border-radius: 4px;\n pointer-events: none !important;\n background-color: rgba(0, 136, 255, 0.05);\n box-sizing: border-box;\n will-change: opacity;\n z-index: 99997;\n}\n.styles-module__singleSelectOutline___2meUm.styles-module__enter___jAi-c {\n animation: styles-module__fadeIn___PpRqy 0.15s ease-out forwards;\n}\n\n.styles-module__hoverTooltip___JE1Bs {\n position: fixed;\n font-size: 0.6875rem;\n font-weight: 500;\n color: #fff;\n background: rgba(0, 0, 0, 0.85);\n padding: 0.35rem 0.6rem;\n border-radius: 0.375rem;\n pointer-events: none !important;\n white-space: nowrap;\n max-width: 280px;\n overflow: hidden;\n text-overflow: ellipsis;\n z-index: 99999;\n}\n.styles-module__hoverTooltip___JE1Bs.styles-module__enter___jAi-c {\n animation: styles-module__hoverTooltipIn___tncNM 0.1s ease-out forwards;\n}\n\n.styles-module__hoverReactPath___wPGYi {\n font-size: 0.625rem;\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 0.15rem;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__hoverElementName___lNqTP {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.styles-module__markersLayer___VR1cD {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__markersLayer___VR1cD > * {\n pointer-events: auto;\n}\n\n.styles-module__fixedMarkersLayer___wBuxm {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 99998;\n pointer-events: none;\n}\n.styles-module__fixedMarkersLayer___wBuxm > * {\n pointer-events: auto;\n}\n\n.styles-module__contextMenu___nDXft {\n position: fixed;\n z-index: 2147483647;\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.08);\n padding: 4px;\n min-width: 140px;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.1s ease-out;\n}\n\n.styles-module__contextMenuItem___69GKu {\n display: block;\n width: 100%;\n padding: 8px 12px;\n border: none;\n background: none;\n font-size: 13px;\n color: #18181b;\n text-align: left;\n cursor: pointer;\n border-radius: 6px;\n font-family: inherit;\n}\n.styles-module__contextMenuItem___69GKu:hover {\n background: #f4f4f5;\n}\n\n@keyframes styles-module__toastIn___V382h {\n from {\n opacity: 0;\n transform: translateY(8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n@keyframes styles-module__toastOut___zlqxG {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n.styles-module__toast___gV3Sa {\n position: fixed;\n bottom: 80px;\n right: 24px;\n display: flex;\n align-items: center;\n gap: 8px;\n background: white;\n border: 1px solid #e5e5e5;\n border-radius: 8px;\n padding: 10px 16px;\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);\n z-index: 100000;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 2.7s forwards;\n max-width: 320px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa span {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.styles-module__toast___gV3Sa.styles-module__toastError___Q-8dn {\n border-color: #fecaca;\n background: #fef2f2;\n color: #991b1b;\n animation: styles-module__toastIn___V382h 0.2s ease-out, styles-module__toastOut___zlqxG 0.3s ease-in 3.7s forwards;\n}\n\n@keyframes styles-module__countdownPulse___ngZrL {\n 0%, 100% {\n transform: scale(1);\n }\n 50% {\n transform: scale(1.15);\n }\n}\n.styles-module__countdownOverlay___GruQJ {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n z-index: 100002;\n pointer-events: auto;\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;\n animation: styles-module__fadeIn___PpRqy 0.2s ease-out;\n}\n\n.styles-module__countdownNumber___VAmkI {\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: rgba(24, 24, 27, 0.9);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 28px;\n font-weight: 700;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);\n animation: styles-module__countdownPulse___ngZrL 1s ease-in-out infinite;\n}\n\n.styles-module__countdownLabel___px-ao {\n font-size: 13px;\n font-weight: 500;\n color: #18181b;\n background: rgba(255, 255, 255, 0.95);\n padding: 6px 14px;\n border-radius: 8px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.styles-module__countdownCancel___8cRgZ {\n font-size: 12px;\n color: #6b7280;\n background: rgba(255, 255, 255, 0.9);\n border: 1px solid #d1d5db;\n border-radius: 6px;\n padding: 4px 12px;\n cursor: pointer;\n font-family: inherit;\n transition: background 0.12s;\n}\n.styles-module__countdownCancel___8cRgZ:hover {\n background: #f3f4f6;\n}\n\nhtml.impakers-selecting {\n cursor: crosshair !important;\n}\nhtml.impakers-selecting * {\n cursor: crosshair !important;\n}';
|
|
3688
|
+
var classNames8 = { "markersLayer": "styles-module__markersLayer___VR1cD", "fixedMarkersLayer": "styles-module__fixedMarkersLayer___wBuxm", "fab": "styles-module__fab___6FrCF", "fabEnter": "styles-module__fabEnter___9koyT", "active": "styles-module__active___X5PRD", "hoverHighlight": "styles-module__hoverHighlight___9kGLL", "enter": "styles-module__enter___jAi-c", "hoverHighlightIn": "styles-module__hoverHighlightIn___ljC4F", "singleSelectOutline": "styles-module__singleSelectOutline___2meUm", "fadeIn": "styles-module__fadeIn___PpRqy", "hoverTooltip": "styles-module__hoverTooltip___JE1Bs", "hoverTooltipIn": "styles-module__hoverTooltipIn___tncNM", "hoverReactPath": "styles-module__hoverReactPath___wPGYi", "hoverElementName": "styles-module__hoverElementName___lNqTP", "contextMenu": "styles-module__contextMenu___nDXft", "contextMenuItem": "styles-module__contextMenuItem___69GKu", "toast": "styles-module__toast___gV3Sa", "toastIn": "styles-module__toastIn___V382h", "toastOut": "styles-module__toastOut___zlqxG", "toastError": "styles-module__toastError___Q-8dn", "countdownOverlay": "styles-module__countdownOverlay___GruQJ", "countdownNumber": "styles-module__countdownNumber___VAmkI", "countdownPulse": "styles-module__countdownPulse___ngZrL", "countdownLabel": "styles-module__countdownLabel___px-ao", "countdownCancel": "styles-module__countdownCancel___8cRgZ", "fadeOut": "styles-module__fadeOut___tZb9S" };
|
|
3538
3689
|
if (typeof document !== "undefined") {
|
|
3539
3690
|
let style = document.getElementById("impakers-debug-styles-debug-widget-styles");
|
|
3540
3691
|
if (!style) {
|
|
@@ -3542,12 +3693,12 @@ if (typeof document !== "undefined") {
|
|
|
3542
3693
|
style.id = "impakers-debug-styles-debug-widget-styles";
|
|
3543
3694
|
document.head.appendChild(style);
|
|
3544
3695
|
}
|
|
3545
|
-
style.textContent =
|
|
3696
|
+
style.textContent = css8;
|
|
3546
3697
|
}
|
|
3547
|
-
var
|
|
3698
|
+
var styles_module_default8 = classNames8;
|
|
3548
3699
|
|
|
3549
3700
|
// src/components/debug-widget/index.tsx
|
|
3550
|
-
var
|
|
3701
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
3551
3702
|
function deepElementFromPoint(x, y) {
|
|
3552
3703
|
let element = document.elementFromPoint(x, y);
|
|
3553
3704
|
if (!element) return null;
|
|
@@ -3666,6 +3817,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
3666
3817
|
const [toastError, setToastError] = (0, import_react7.useState)(null);
|
|
3667
3818
|
const [activeThread, setActiveThread] = (0, import_react7.useState)(null);
|
|
3668
3819
|
const [threadComments, setThreadComments] = (0, import_react7.useState)({});
|
|
3820
|
+
const [threadLoading, setThreadLoading] = (0, import_react7.useState)(false);
|
|
3669
3821
|
const [serverTasks, setServerTasks] = (0, import_react7.useState)([]);
|
|
3670
3822
|
const [allServerTasks, setAllServerTasks] = (0, import_react7.useState)([]);
|
|
3671
3823
|
const [showInbox, setShowInbox] = (0, import_react7.useState)(false);
|
|
@@ -3673,6 +3825,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
3673
3825
|
const [settings, setSettings] = (0, import_react7.useState)(() => loadSettings());
|
|
3674
3826
|
const [routePath, setRoutePath] = (0, import_react7.useState)(() => window.location.pathname);
|
|
3675
3827
|
const [hasHydratedServerTasks, setHasHydratedServerTasks] = (0, import_react7.useState)(false);
|
|
3828
|
+
const [newNotiCount, setNewNotiCount] = (0, import_react7.useState)(0);
|
|
3676
3829
|
const [delayCountdown, setDelayCountdown] = (0, import_react7.useState)(null);
|
|
3677
3830
|
const delayTimerRef = (0, import_react7.useRef)(null);
|
|
3678
3831
|
const popupRef = (0, import_react7.useRef)(null);
|
|
@@ -3772,6 +3925,16 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
3772
3925
|
});
|
|
3773
3926
|
return unsubscribe;
|
|
3774
3927
|
}, [endpoint, routePath]);
|
|
3928
|
+
const LAST_SEEN_KEY = "impakers-debug-history-last-seen";
|
|
3929
|
+
(0, import_react7.useEffect)(() => {
|
|
3930
|
+
const lastSeen = localStorage.getItem(LAST_SEEN_KEY) || (/* @__PURE__ */ new Date(0)).toISOString();
|
|
3931
|
+
fetchHistory(endpoint, { since: lastSeen, limit: 100 }).then((events) => setNewNotiCount(events.length)).catch(() => {
|
|
3932
|
+
});
|
|
3933
|
+
}, [endpoint]);
|
|
3934
|
+
const handleHistoryViewed = (0, import_react7.useCallback)(() => {
|
|
3935
|
+
localStorage.setItem(LAST_SEEN_KEY, (/* @__PURE__ */ new Date()).toISOString());
|
|
3936
|
+
setNewNotiCount(0);
|
|
3937
|
+
}, []);
|
|
3775
3938
|
(0, import_react7.useEffect)(() => {
|
|
3776
3939
|
if (!hasHydratedServerTasks) return;
|
|
3777
3940
|
const serverAnnotations = serverTasks.map(taskToAnnotation).filter((annotation) => annotation !== null);
|
|
@@ -4122,12 +4285,15 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4122
4285
|
const cached = getCachedSnapshot(cacheKey);
|
|
4123
4286
|
if (cached) {
|
|
4124
4287
|
setThreadComments((prev) => ({ ...prev, [activeThread]: cached }));
|
|
4288
|
+
setThreadLoading(false);
|
|
4289
|
+
} else {
|
|
4290
|
+
setThreadLoading(true);
|
|
4125
4291
|
}
|
|
4126
4292
|
const unsubscribe = subscribeCache(cacheKey, (comments) => {
|
|
4127
4293
|
setThreadComments((prev) => ({ ...prev, [activeThread]: comments }));
|
|
4294
|
+
setThreadLoading(false);
|
|
4128
4295
|
});
|
|
4129
|
-
fetchComments(endpoint, activeThread, { staleWhileRevalidate: true }).catch(() =>
|
|
4130
|
-
});
|
|
4296
|
+
fetchComments(endpoint, activeThread, { staleWhileRevalidate: true }).then(() => setThreadLoading(false)).catch(() => setThreadLoading(false));
|
|
4131
4297
|
return unsubscribe;
|
|
4132
4298
|
}, [activeThread, endpoint]);
|
|
4133
4299
|
const handleThreadReply = (0, import_react7.useCallback)(async (taskId, content, screenshot, file) => {
|
|
@@ -4196,31 +4362,31 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4196
4362
|
id: "comment",
|
|
4197
4363
|
label: "\uD53C\uB4DC\uBC31",
|
|
4198
4364
|
active: isActive,
|
|
4199
|
-
icon: /* @__PURE__ */ (0,
|
|
4365
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M21 15a2 2 0 01-2 2H7l-4 4V5a2 2 0 012-2h14a2 2 0 012 2z" }) })
|
|
4200
4366
|
},
|
|
4201
4367
|
{
|
|
4202
4368
|
id: "delay-capture",
|
|
4203
4369
|
label: "\uB51C\uB808\uC774 \uCEA1\uCC98",
|
|
4204
|
-
icon: /* @__PURE__ */ (0,
|
|
4205
|
-
/* @__PURE__ */ (0,
|
|
4206
|
-
/* @__PURE__ */ (0,
|
|
4370
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
4371
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
4372
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "12 6 12 12 16 14" })
|
|
4207
4373
|
] })
|
|
4208
4374
|
},
|
|
4209
4375
|
{
|
|
4210
4376
|
id: "inbox",
|
|
4211
4377
|
label: "Inbox",
|
|
4212
|
-
badge:
|
|
4213
|
-
icon: /* @__PURE__ */ (0,
|
|
4214
|
-
/* @__PURE__ */ (0,
|
|
4215
|
-
/* @__PURE__ */ (0,
|
|
4378
|
+
badge: newNotiCount || void 0,
|
|
4379
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
4380
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12" }),
|
|
4381
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M5.45 5.11L2 12v6a2 2 0 002 2h16a2 2 0 002-2v-6l-3.45-6.89A2 2 0 0016.76 4H7.24a2 2 0 00-1.79 1.11z" })
|
|
4216
4382
|
] })
|
|
4217
4383
|
},
|
|
4218
4384
|
{
|
|
4219
4385
|
id: "settings",
|
|
4220
4386
|
label: "\uC124\uC815",
|
|
4221
|
-
icon: /* @__PURE__ */ (0,
|
|
4222
|
-
/* @__PURE__ */ (0,
|
|
4223
|
-
/* @__PURE__ */ (0,
|
|
4387
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
4388
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "3" }),
|
|
4389
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("path", { d: "M19.4 15a1.65 1.65 0 00.33 1.82l.06.06a2 2 0 010 2.83 2 2 0 01-2.83 0l-.06-.06a1.65 1.65 0 00-1.82-.33 1.65 1.65 0 00-1 1.51V21a2 2 0 01-4 0v-.09A1.65 1.65 0 009 19.4a1.65 1.65 0 00-1.82.33l-.06.06a2 2 0 01-2.83-2.83l.06-.06A1.65 1.65 0 004.68 15a1.65 1.65 0 00-1.51-1H3a2 2 0 010-4h.09A1.65 1.65 0 004.6 9a1.65 1.65 0 00-.33-1.82l-.06-.06a2 2 0 012.83-2.83l.06.06A1.65 1.65 0 009 4.68a1.65 1.65 0 001-1.51V3a2 2 0 014 0v.09a1.65 1.65 0 001 1.51 1.65 1.65 0 001.82-.33l.06-.06a2 2 0 012.83 2.83l-.06.06A1.65 1.65 0 0019.4 9a1.65 1.65 0 001.51 1H21a2 2 0 010 4h-.09a1.65 1.65 0 00-1.51 1z" })
|
|
4224
4390
|
] })
|
|
4225
4391
|
}
|
|
4226
4392
|
];
|
|
@@ -4234,29 +4400,23 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4234
4400
|
return true;
|
|
4235
4401
|
});
|
|
4236
4402
|
}, [annotations, serverTasks, settings.hideDoneMarkers, settings.showOnlyMine, currentUserName]);
|
|
4237
|
-
const
|
|
4403
|
+
const toInboxItem = (task, fallbackUrl) => ({
|
|
4238
4404
|
id: task.id,
|
|
4239
4405
|
title: task.title || "\uD53C\uB4DC\uBC31",
|
|
4240
4406
|
status: task.status,
|
|
4241
4407
|
priority: task.priority,
|
|
4242
4408
|
authorName: task.authorName || "\uC775\uBA85",
|
|
4243
|
-
feedbackUrl: task.feedbackUrl ||
|
|
4409
|
+
feedbackUrl: task.feedbackUrl || fallbackUrl,
|
|
4244
4410
|
createdAt: task.createdAt,
|
|
4411
|
+
startedAt: task.startedAt,
|
|
4412
|
+
completedAt: task.completedAt,
|
|
4245
4413
|
commentCount: task.commentCount || 0
|
|
4246
|
-
})
|
|
4247
|
-
const
|
|
4248
|
-
|
|
4249
|
-
title: task.title || "\uD53C\uB4DC\uBC31",
|
|
4250
|
-
status: task.status,
|
|
4251
|
-
priority: task.priority,
|
|
4252
|
-
authorName: task.authorName || "\uC775\uBA85",
|
|
4253
|
-
feedbackUrl: task.feedbackUrl || "",
|
|
4254
|
-
createdAt: task.createdAt,
|
|
4255
|
-
commentCount: task.commentCount || 0
|
|
4256
|
-
}));
|
|
4414
|
+
});
|
|
4415
|
+
const allInboxItems = serverTasks.map((t) => toInboxItem(t, currentPath));
|
|
4416
|
+
const allRouteItems = allServerTasks.map((t) => toInboxItem(t, ""));
|
|
4257
4417
|
return (0, import_react_dom3.createPortal)(
|
|
4258
|
-
/* @__PURE__ */ (0,
|
|
4259
|
-
/* @__PURE__ */ (0,
|
|
4418
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { "data-impakers-debug": "", children: [
|
|
4419
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4260
4420
|
FabMenu,
|
|
4261
4421
|
{
|
|
4262
4422
|
items: fabItems,
|
|
@@ -4265,7 +4425,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4265
4425
|
onDoubleTap: toggleActive
|
|
4266
4426
|
}
|
|
4267
4427
|
),
|
|
4268
|
-
showInbox && /* @__PURE__ */ (0,
|
|
4428
|
+
showInbox && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4269
4429
|
InboxPanel,
|
|
4270
4430
|
{
|
|
4271
4431
|
pageItems: allInboxItems,
|
|
@@ -4275,10 +4435,12 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4275
4435
|
endpoint,
|
|
4276
4436
|
currentUserName: getUser?.()?.name ? String(getUser().name) : "\uC775\uBA85",
|
|
4277
4437
|
currentUserId: getUser?.()?.id ? String(getUser().id) : void 0,
|
|
4278
|
-
onClose: () => setShowInbox(false)
|
|
4438
|
+
onClose: () => setShowInbox(false),
|
|
4439
|
+
onHistoryViewed: handleHistoryViewed,
|
|
4440
|
+
newNotiCount
|
|
4279
4441
|
}
|
|
4280
4442
|
),
|
|
4281
|
-
showSettings && /* @__PURE__ */ (0,
|
|
4443
|
+
showSettings && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4282
4444
|
SettingsPanel,
|
|
4283
4445
|
{
|
|
4284
4446
|
settings,
|
|
@@ -4286,11 +4448,11 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4286
4448
|
onClose: () => setShowSettings(false)
|
|
4287
4449
|
}
|
|
4288
4450
|
),
|
|
4289
|
-
isActive && /* @__PURE__ */ (0,
|
|
4290
|
-
hoverInfo?.rect && !pendingAnnotation && /* @__PURE__ */ (0,
|
|
4451
|
+
isActive && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
|
|
4452
|
+
hoverInfo?.rect && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4291
4453
|
"div",
|
|
4292
4454
|
{
|
|
4293
|
-
className: `${
|
|
4455
|
+
className: `${styles_module_default8.hoverHighlight} ${styles_module_default8.enter}`,
|
|
4294
4456
|
style: {
|
|
4295
4457
|
left: hoverInfo.rect.left,
|
|
4296
4458
|
top: hoverInfo.rect.top,
|
|
@@ -4299,24 +4461,24 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4299
4461
|
}
|
|
4300
4462
|
}
|
|
4301
4463
|
),
|
|
4302
|
-
hoverInfo && !pendingAnnotation && /* @__PURE__ */ (0,
|
|
4464
|
+
hoverInfo && !pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
4303
4465
|
"div",
|
|
4304
4466
|
{
|
|
4305
|
-
className: `${
|
|
4467
|
+
className: `${styles_module_default8.hoverTooltip} ${styles_module_default8.enter}`,
|
|
4306
4468
|
style: {
|
|
4307
4469
|
left: Math.min(hoverPosition.x + 14, window.innerWidth - 200),
|
|
4308
4470
|
top: hoverPosition.y + 14
|
|
4309
4471
|
},
|
|
4310
4472
|
children: [
|
|
4311
|
-
hoverInfo.reactComponents && /* @__PURE__ */ (0,
|
|
4312
|
-
/* @__PURE__ */ (0,
|
|
4473
|
+
hoverInfo.reactComponents && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.hoverReactPath, children: hoverInfo.reactComponents }),
|
|
4474
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.hoverElementName, children: hoverInfo.elementName })
|
|
4313
4475
|
]
|
|
4314
4476
|
}
|
|
4315
4477
|
),
|
|
4316
|
-
hoveredRect && hoveredMarkerId && /* @__PURE__ */ (0,
|
|
4478
|
+
hoveredRect && hoveredMarkerId && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4317
4479
|
"div",
|
|
4318
4480
|
{
|
|
4319
|
-
className: `${
|
|
4481
|
+
className: `${styles_module_default8.singleSelectOutline} ${styles_module_default8.enter}`,
|
|
4320
4482
|
style: {
|
|
4321
4483
|
left: hoveredRect.left,
|
|
4322
4484
|
top: hoveredRect.top,
|
|
@@ -4327,16 +4489,16 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4327
4489
|
),
|
|
4328
4490
|
pendingAnnotation?.targetElement && (() => {
|
|
4329
4491
|
const r = pendingAnnotation.targetElement.getBoundingClientRect();
|
|
4330
|
-
return /* @__PURE__ */ (0,
|
|
4492
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4331
4493
|
"div",
|
|
4332
4494
|
{
|
|
4333
|
-
className: `${
|
|
4495
|
+
className: `${styles_module_default8.singleSelectOutline} ${styles_module_default8.enter}`,
|
|
4334
4496
|
style: { left: r.left, top: r.top, width: r.width, height: r.height }
|
|
4335
4497
|
}
|
|
4336
4498
|
);
|
|
4337
4499
|
})()
|
|
4338
4500
|
] }),
|
|
4339
|
-
/* @__PURE__ */ (0,
|
|
4501
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.markersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: visibleAnnotations.filter((a) => !a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4340
4502
|
AnnotationMarker,
|
|
4341
4503
|
{
|
|
4342
4504
|
annotation,
|
|
@@ -4354,8 +4516,8 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4354
4516
|
},
|
|
4355
4517
|
annotation.id
|
|
4356
4518
|
)) }),
|
|
4357
|
-
/* @__PURE__ */ (0,
|
|
4358
|
-
visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0,
|
|
4519
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.fixedMarkersLayer, "data-impakers-debug": "", style: { display: settings.markersVisible ? void 0 : "none" }, children: [
|
|
4520
|
+
visibleAnnotations.filter((a) => a.isFixed).map((annotation, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4359
4521
|
AnnotationMarker,
|
|
4360
4522
|
{
|
|
4361
4523
|
annotation,
|
|
@@ -4373,7 +4535,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4373
4535
|
},
|
|
4374
4536
|
annotation.id
|
|
4375
4537
|
)),
|
|
4376
|
-
pendingAnnotation && /* @__PURE__ */ (0,
|
|
4538
|
+
pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4377
4539
|
PendingMarker,
|
|
4378
4540
|
{
|
|
4379
4541
|
x: pendingAnnotation.x,
|
|
@@ -4383,7 +4545,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4383
4545
|
}
|
|
4384
4546
|
)
|
|
4385
4547
|
] }),
|
|
4386
|
-
pendingAnnotation && /* @__PURE__ */ (0,
|
|
4548
|
+
pendingAnnotation && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4387
4549
|
AnnotationPopupCSS,
|
|
4388
4550
|
{
|
|
4389
4551
|
ref: popupRef,
|
|
@@ -4418,7 +4580,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4418
4580
|
createdAt: taskData?.createdAt || new Date(annotation.timestamp).toISOString(),
|
|
4419
4581
|
comments: threadComments[annotation.id] || []
|
|
4420
4582
|
};
|
|
4421
|
-
return /* @__PURE__ */ (0,
|
|
4583
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4422
4584
|
CommentThread,
|
|
4423
4585
|
{
|
|
4424
4586
|
task,
|
|
@@ -4426,18 +4588,19 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4426
4588
|
currentUserId: getUser?.()?.id ? String(getUser().id) : void 0,
|
|
4427
4589
|
left: threadLeft,
|
|
4428
4590
|
top: threadTop,
|
|
4591
|
+
loading: threadLoading,
|
|
4429
4592
|
onClose: handleThreadClose,
|
|
4430
4593
|
onReply: handleThreadReply
|
|
4431
4594
|
}
|
|
4432
4595
|
);
|
|
4433
4596
|
})(),
|
|
4434
|
-
delayCountdown !== null && /* @__PURE__ */ (0,
|
|
4435
|
-
/* @__PURE__ */ (0,
|
|
4436
|
-
/* @__PURE__ */ (0,
|
|
4437
|
-
/* @__PURE__ */ (0,
|
|
4597
|
+
delayCountdown !== null && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.countdownOverlay, "data-impakers-debug": "", children: [
|
|
4598
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.countdownNumber, children: delayCountdown }),
|
|
4599
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: styles_module_default8.countdownLabel, children: "\uD53C\uB4DC\uBC31 \uBAA8\uB4DC \uD65C\uC131\uD654\uAE4C\uC9C0..." }),
|
|
4600
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
4438
4601
|
"button",
|
|
4439
4602
|
{
|
|
4440
|
-
className:
|
|
4603
|
+
className: styles_module_default8.countdownCancel,
|
|
4441
4604
|
onClick: () => {
|
|
4442
4605
|
if (delayTimerRef.current) clearTimeout(delayTimerRef.current);
|
|
4443
4606
|
setDelayCountdown(null);
|
|
@@ -4447,17 +4610,17 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4447
4610
|
}
|
|
4448
4611
|
)
|
|
4449
4612
|
] }),
|
|
4450
|
-
showToast && /* @__PURE__ */ (0,
|
|
4451
|
-
/* @__PURE__ */ (0,
|
|
4452
|
-
/* @__PURE__ */ (0,
|
|
4613
|
+
showToast && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: styles_module_default8.toast, "data-impakers-debug": "", children: [
|
|
4614
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#16a34a", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("polyline", { points: "20 6 9 17 4 12" }) }),
|
|
4615
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: "\uD0DC\uC2A4\uD06C \uC0DD\uC131\uC774 \uC644\uB8CC\uB418\uC5C8\uC2B5\uB2C8\uB2E4" })
|
|
4453
4616
|
] }),
|
|
4454
|
-
toastError && /* @__PURE__ */ (0,
|
|
4455
|
-
/* @__PURE__ */ (0,
|
|
4456
|
-
/* @__PURE__ */ (0,
|
|
4457
|
-
/* @__PURE__ */ (0,
|
|
4458
|
-
/* @__PURE__ */ (0,
|
|
4617
|
+
toastError && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: `${styles_module_default8.toast} ${styles_module_default8.toastError}`, "data-impakers-debug": "", children: [
|
|
4618
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "#ef4444", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", children: [
|
|
4619
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("circle", { cx: "12", cy: "12", r: "10" }),
|
|
4620
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "15", y1: "9", x2: "9", y2: "15" }),
|
|
4621
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("line", { x1: "9", y1: "9", x2: "15", y2: "15" })
|
|
4459
4622
|
] }),
|
|
4460
|
-
/* @__PURE__ */ (0,
|
|
4623
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: toastError })
|
|
4461
4624
|
] })
|
|
4462
4625
|
] }),
|
|
4463
4626
|
document.body
|
|
@@ -4467,7 +4630,7 @@ function DebugWidget({ endpoint, getUser, onHide }) {
|
|
|
4467
4630
|
// src/ui/AuthPromptPortal.tsx
|
|
4468
4631
|
var import_react8 = require("react");
|
|
4469
4632
|
var import_react_dom4 = require("react-dom");
|
|
4470
|
-
var
|
|
4633
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
4471
4634
|
function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
4472
4635
|
const [code, setCode] = (0, import_react8.useState)("");
|
|
4473
4636
|
const [loading, setLoading] = (0, import_react8.useState)(false);
|
|
@@ -4491,7 +4654,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4491
4654
|
);
|
|
4492
4655
|
if (typeof document === "undefined") return null;
|
|
4493
4656
|
return (0, import_react_dom4.createPortal)(
|
|
4494
|
-
/* @__PURE__ */ (0,
|
|
4657
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { "data-impakers-debug": "", style: {
|
|
4495
4658
|
position: "fixed",
|
|
4496
4659
|
inset: 0,
|
|
4497
4660
|
zIndex: 2147483647,
|
|
@@ -4500,7 +4663,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4500
4663
|
justifyContent: "center",
|
|
4501
4664
|
fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif"
|
|
4502
4665
|
}, children: [
|
|
4503
|
-
/* @__PURE__ */ (0,
|
|
4666
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4504
4667
|
"div",
|
|
4505
4668
|
{
|
|
4506
4669
|
onClick: onClose,
|
|
@@ -4511,7 +4674,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4511
4674
|
}
|
|
4512
4675
|
}
|
|
4513
4676
|
),
|
|
4514
|
-
/* @__PURE__ */ (0,
|
|
4677
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: {
|
|
4515
4678
|
position: "relative",
|
|
4516
4679
|
width: 360,
|
|
4517
4680
|
background: "white",
|
|
@@ -4519,15 +4682,15 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4519
4682
|
boxShadow: "0 16px 48px rgba(0,0,0,0.16)",
|
|
4520
4683
|
overflow: "hidden"
|
|
4521
4684
|
}, children: [
|
|
4522
|
-
/* @__PURE__ */ (0,
|
|
4685
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: {
|
|
4523
4686
|
display: "flex",
|
|
4524
4687
|
alignItems: "center",
|
|
4525
4688
|
justifyContent: "space-between",
|
|
4526
4689
|
padding: "16px 20px",
|
|
4527
4690
|
borderBottom: "1px solid #e5e5e5"
|
|
4528
4691
|
}, children: [
|
|
4529
|
-
/* @__PURE__ */ (0,
|
|
4530
|
-
/* @__PURE__ */ (0,
|
|
4692
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { style: { fontSize: 15, fontWeight: 600, color: "#18181b", margin: 0 }, children: "\uD53C\uB4DC\uBC31 \uC704\uC82F \uC778\uC99D" }),
|
|
4693
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4531
4694
|
"button",
|
|
4532
4695
|
{
|
|
4533
4696
|
onClick: onClose,
|
|
@@ -4544,12 +4707,12 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4544
4707
|
borderRadius: 6,
|
|
4545
4708
|
color: "#71717a"
|
|
4546
4709
|
},
|
|
4547
|
-
children: /* @__PURE__ */ (0,
|
|
4710
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("path", { d: "M18 6L6 18M6 6l12 12" }) })
|
|
4548
4711
|
}
|
|
4549
4712
|
)
|
|
4550
4713
|
] }),
|
|
4551
|
-
/* @__PURE__ */ (0,
|
|
4552
|
-
/* @__PURE__ */ (0,
|
|
4714
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { style: { padding: 20 }, children: [
|
|
4715
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { style: {
|
|
4553
4716
|
fontSize: 13,
|
|
4554
4717
|
color: "#71717a",
|
|
4555
4718
|
textAlign: "center",
|
|
@@ -4557,10 +4720,10 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4557
4720
|
lineHeight: 1.5
|
|
4558
4721
|
}, children: [
|
|
4559
4722
|
"\uC11C\uBE44\uC2A4 \uC2DC\uD06C\uB9BF \uCF54\uB4DC\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694.",
|
|
4560
|
-
/* @__PURE__ */ (0,
|
|
4723
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("br", {}),
|
|
4561
4724
|
"\uCF54\uB4DC\uB294 \uC784\uD328\uCEE4\uC2A4 OS\uC5D0\uC11C \uD655\uC778\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4."
|
|
4562
4725
|
] }),
|
|
4563
|
-
error && /* @__PURE__ */ (0,
|
|
4726
|
+
error && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { style: {
|
|
4564
4727
|
background: "#fef2f2",
|
|
4565
4728
|
border: "1px solid #fecaca",
|
|
4566
4729
|
color: "#dc2626",
|
|
@@ -4569,8 +4732,8 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4569
4732
|
fontSize: 13,
|
|
4570
4733
|
marginBottom: 12
|
|
4571
4734
|
}, children: error }),
|
|
4572
|
-
/* @__PURE__ */ (0,
|
|
4573
|
-
/* @__PURE__ */ (0,
|
|
4735
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("form", { onSubmit: handleSubmit, children: [
|
|
4736
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4574
4737
|
"input",
|
|
4575
4738
|
{
|
|
4576
4739
|
type: "text",
|
|
@@ -4597,7 +4760,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4597
4760
|
}
|
|
4598
4761
|
}
|
|
4599
4762
|
),
|
|
4600
|
-
/* @__PURE__ */ (0,
|
|
4763
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
4601
4764
|
"button",
|
|
4602
4765
|
{
|
|
4603
4766
|
type: "submit",
|
|
@@ -4627,7 +4790,7 @@ function AuthPromptPortal({ endpoint, onSuccess, onClose }) {
|
|
|
4627
4790
|
}
|
|
4628
4791
|
|
|
4629
4792
|
// src/react.tsx
|
|
4630
|
-
var
|
|
4793
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
4631
4794
|
function ImpakersDebugProvider({ endpoint, getUser }) {
|
|
4632
4795
|
const [authenticated, setAuthenticated] = (0, import_react9.useState)(false);
|
|
4633
4796
|
const [showAuth, setShowAuth] = (0, import_react9.useState)(false);
|
|
@@ -4701,9 +4864,9 @@ function ImpakersDebugProvider({ endpoint, getUser }) {
|
|
|
4701
4864
|
} catch {
|
|
4702
4865
|
}
|
|
4703
4866
|
}, []);
|
|
4704
|
-
return /* @__PURE__ */ (0,
|
|
4705
|
-
authenticated && !hidden && /* @__PURE__ */ (0,
|
|
4706
|
-
showAuth && !authenticated && /* @__PURE__ */ (0,
|
|
4867
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
|
|
4868
|
+
authenticated && !hidden && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DebugWidget, { endpoint, getUser, onHide: handleHide }),
|
|
4869
|
+
showAuth && !authenticated && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
4707
4870
|
AuthPromptPortal,
|
|
4708
4871
|
{
|
|
4709
4872
|
endpoint,
|