voice-diagram-comment/public/widget.js
snc 6cba1f1351 initial commit
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-30 21:22:21 +09:00

3 lines
56 KiB
JavaScript

"use strict";(()=>{var k={must:{bg:"#ef4444",text:"#fff",light:"rgba(239,68,68,0.1)",border:"rgba(239,68,68,0.3)"},better:{bg:"#f59e0b",text:"#fff",light:"rgba(245,158,11,0.1)",border:"rgba(245,158,11,0.3)"},want:{bg:"#22c55e",text:"#fff",light:"rgba(34,197,94,0.1)",border:"rgba(34,197,94,0.3)"}};var re={must:"better",better:"want",want:"must"};var H="fb-username",O="fb-sidebar-width";function ie(e){return e.replace(/^https?:\/\//,"").replace(/[^a-zA-Z0-9\u3040-\u309F\u30A0-\u30FF\u4E00-\u9FFF]/g,"_").substring(0,100)}function B(){return Date.now().toString(36)+Math.random().toString(36).substring(2,8)}function j(e){let t={"Content-Type":"application/json"};return e&&(t.Authorization="Bearer "+e),t}var Y="",U="";function ae(e,t){Y=e,U=t}function E(e,t){let r=Y+"/api/comments",n=j(U),i={method:e,headers:n};return e==="GET"?r+="?slug="+encodeURIComponent(t.slug):e==="DELETE"?r+="?id="+encodeURIComponent(t.id):i.body=JSON.stringify(t),fetch(r,i).then(a=>a.json())}function se(e,t,r){return fetch(Y+"/api/voice-analyze",{method:"POST",headers:j(U),body:JSON.stringify({audioBase64:e,mimeType:t,targets:r})}).then(n=>n.json())}var o={username:localStorage.getItem(H)||"",comments:[],filter:"unresolved",sidebarOpen:!1,selectedText:"",selectedQuoteContext:{beforeText:"",afterText:""},selectedRect:null,popupContent:"",editingId:null,editContent:"",editPriority:"want",replyingTo:null,replyText:"",editingName:!1,nameInput:"",popupPriority:"must",sidebarWidth:parseInt(localStorage.getItem(O)||"",10)||400,pinMode:!1,pinPopupPos:null,editingPinId:null,voiceRecording:!1,voiceProcessing:!1,voiceError:null},M=ie(window.location.href);function de(){let e=document.createElement("style");e.id="fb-widget-styles";let t=`url('data:image/svg+xml,%3Csvg%20xmlns="http://www.w3.org/2000/svg"%20width="28"%20height="28"%20viewBox="0%200%2028%2028"%3E%3Cpath%20d="M14%202a8%208%200%200%200-8%208c0%205.5%208%2016%208%2016s8-10.5%208-16a8%208%200%200%200-8-8Z"%20fill="%233b82f6"%20stroke="%23ffffff"%20stroke-width="1.6"%20stroke-linejoin="round"/%3E%3Ccircle%20cx="14"%20cy="10"%20r="3"%20fill="%23ffffff"/%3E%3C/svg%3E') 14 26, auto`;e.textContent=[':root{--fb-bg:#ffffff;--fb-fg:#0a0a0a;--fb-muted:#f5f5f5;--fb-muted-fg:#737373;--fb-border:#e5e5e5;--fb-primary:#171717;--fb-primary-fg:#fafafa;--fb-accent:#3b82f6;--fb-destructive:#ef4444;--fb-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Hiragino Sans",sans-serif}',"#fb-toggle{position:fixed;right:0;top:50%;transform:translateY(-50%);width:36px;background:var(--fb-bg);border:1px solid var(--fb-border);border-right:none;border-radius:8px 0 0 8px;cursor:pointer;z-index:99999;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-family:var(--fb-font);transition:all .15s;box-shadow:-2px 0 8px rgba(0,0,0,0.06);padding:8px 0}","#fb-toggle:hover{background:var(--fb-muted);box-shadow:-2px 0 12px rgba(0,0,0,0.1)}","#fb-toggle .fb-toggle-icon{color:var(--fb-muted-fg);display:flex;align-items:center;justify-content:center;position:relative}","#fb-toggle .fb-toggle-label{font-size:10px;color:var(--fb-accent);font-weight:700;writing-mode:vertical-rl;letter-spacing:1px;line-height:1;white-space:nowrap}","#fb-toggle .fb-badge{position:absolute;top:-6px;left:-6px;background:var(--fb-destructive);color:#fff;font-size:9px;font-weight:700;min-width:16px;height:16px;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}","#fb-sidebar{position:fixed;top:0;height:100vh;background:rgba(245,245,245,0.5);border-left:1px solid var(--fb-border);z-index:99998;transition:right .3s ease;display:flex;flex-direction:column;font-family:var(--fb-font);font-size:14px;color:var(--fb-fg)}","#fb-sidebar *{box-sizing:border-box}",".fb-resize-handle{position:absolute;left:-3px;top:0;width:6px;height:100%;cursor:col-resize;z-index:1}",".fb-resize-handle:hover{background:rgba(59,130,246,0.15)}",".fb-resize-handle.active{background:rgba(59,130,246,0.3)}","body.fb-resizing{cursor:col-resize !important;-webkit-user-select:none !important;user-select:none !important}","body.fb-resizing *{cursor:col-resize !important}",".fb-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--fb-border)}",".fb-header-left{display:flex;align-items:center;gap:8px}",".fb-header-title{font-size:14px;font-weight:700;color:var(--fb-accent)}",".fb-header-count{background:var(--fb-muted);color:var(--fb-muted-fg);font-size:11px;padding:1px 7px;border-radius:10px}",".fb-header-actions{display:flex;align-items:center;gap:2px}",".fb-hdr-btn{background:none;border:none;cursor:pointer;padding:6px;border-radius:6px;color:var(--fb-muted-fg);transition:all .15s;display:inline-flex;align-items:center;gap:4px;font-family:var(--fb-font);font-size:12px}",".fb-hdr-btn:hover{background:var(--fb-muted);color:var(--fb-fg)}",".fb-user-row{display:flex;align-items:center;padding:8px 16px;border-bottom:1px solid var(--fb-border);font-size:13px;color:var(--fb-muted-fg);cursor:pointer;transition:color .15s;gap:6px}",".fb-user-row:hover{color:var(--fb-fg)}",".fb-filters{display:flex;border-bottom:1px solid var(--fb-border)}",".fb-filter{flex:1;padding:10px 0;text-align:center;font-size:13px;color:var(--fb-muted-fg);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;font-family:var(--fb-font)}",".fb-filter:hover{color:var(--fb-fg)}",".fb-filter.active{color:var(--fb-fg);border-bottom-color:var(--fb-accent)}",".fb-filter .cnt{font-size:11px;margin-left:4px;padding:1px 5px;border-radius:8px;background:var(--fb-muted);color:var(--fb-muted-fg)}",".fb-filter.active .cnt{background:rgba(59,130,246,0.1);color:var(--fb-accent)}",".fb-list{flex:1;overflow-y:auto;padding:8px}",".fb-empty{text-align:center;padding:60px 20px;color:var(--fb-muted-fg);font-size:13px}",".fb-empty svg{margin:0 auto 12px;display:block;color:var(--fb-border)}",".fb-card{background:var(--fb-bg);border:1px solid var(--fb-border);border-left:3px solid var(--fb-border);border-radius:12px;padding:14px;margin-bottom:6px;transition:box-shadow .3s,background .3s;cursor:pointer}",".fb-card:hover{box-shadow:0 1px 3px rgba(0,0,0,0.05)}",".fb-card.resolved{opacity:.5}",".fb-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}",".fb-card-head-left{display:flex;align-items:center;gap:6px}",".fb-avatar{width:22px;height:22px;border-radius:50%;background:var(--fb-primary);color:var(--fb-primary-fg);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0}",".fb-author{font-size:13px;font-weight:700;color:var(--fb-fg)}",".fb-time{font-size:11px;color:var(--fb-muted-fg)}",".fb-resolved-mark{font-size:11px;color:#22c55e;margin-left:4px;display:inline-flex;align-items:center;gap:2px}",".fb-badge-p{font-size:11px;font-weight:700;padding:2px 8px;border-radius:4px;color:#fff;cursor:default;transition:all .15s}",".fb-badge-p.own{cursor:pointer}",".fb-badge-p.own:hover{transform:scale(1.1);box-shadow:0 0 0 2px rgba(0,0,0,0.08)}",".fb-quote{font-size:12px;color:var(--fb-muted-fg);padding:6px 10px;background:var(--fb-muted);border-left:2px solid var(--fb-primary);border-radius:0 4px 4px 0;margin-bottom:8px;font-style:italic;line-height:1.5;cursor:pointer;transition:background .15s}",".fb-quote:hover{background:var(--fb-border)}",".fb-body{font-size:13px;color:var(--fb-muted-fg);line-height:1.6;margin-bottom:6px;white-space:pre-wrap}",".fb-actions{display:flex;gap:2px;flex-wrap:wrap}",".fb-act{font-size:12px;color:#a3a3a3;background:none;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:3px;font-family:var(--fb-font)}",".fb-act:hover{color:var(--fb-fg)}",".fb-act.del:hover{color:var(--fb-destructive)}",".fb-act.res:hover{color:#22c55e}",".fb-replies{margin-top:8px;padding-top:8px;border-top:1px solid var(--fb-muted)}",".fb-reply-item{display:flex;gap:8px;padding:6px 0}",".fb-reply-item+.fb-reply-item{border-top:1px solid var(--fb-muted)}",".fb-reply-avatar{width:20px;height:20px;border-radius:50%;background:var(--fb-primary);color:var(--fb-primary-fg);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;flex-shrink:0;margin-top:2px}",".fb-reply-meta{font-size:12px;color:var(--fb-muted-fg);margin-bottom:2px}",".fb-reply-meta strong{color:#525252;font-weight:700}",".fb-reply-text{font-size:13px;color:var(--fb-muted-fg);line-height:1.5}",".fb-reply-input{display:flex;gap:8px;margin-top:8px}",".fb-reply-input textarea{flex:1;padding:8px 10px;border:1px solid var(--fb-border);border-radius:6px;font-size:13px;font-family:var(--fb-font);resize:none;outline:none;min-height:36px;color:var(--fb-fg)}",".fb-reply-input textarea:focus{border-color:var(--fb-accent)}",".fb-reply-input button{padding:6px 14px;background:var(--fb-primary);color:var(--fb-primary-fg);border:none;border-radius:6px;font-size:12px;cursor:pointer;font-family:var(--fb-font);align-self:flex-end}",".fb-reply-input button:disabled{opacity:.4;cursor:default}",".fb-edit-area textarea{width:100%;padding:8px 10px;border:1px solid var(--fb-border);border-radius:6px;font-size:13px;font-family:var(--fb-font);resize:vertical;outline:none;min-height:50px;margin-bottom:6px;color:var(--fb-fg)}",".fb-edit-area textarea:focus{border-color:var(--fb-accent)}",".fb-edit-btns{display:flex;gap:6px}",".fb-edit-btns button{padding:4px 12px;border-radius:6px;font-size:12px;cursor:pointer;border:1px solid var(--fb-border);background:var(--fb-bg);color:var(--fb-muted-fg);font-family:var(--fb-font)}",".fb-edit-btns button.save{background:var(--fb-primary);color:var(--fb-primary-fg);border-color:var(--fb-primary)}",".fb-edit-pri{display:flex;gap:4px;margin-bottom:6px}",".fb-edit-pri button{padding:2px 10px;border-radius:4px;font-size:11px;font-weight:700;cursor:pointer;border:1px solid var(--fb-border);background:var(--fb-bg);color:var(--fb-muted-fg);font-family:var(--fb-font);transition:all .15s}",".fb-popup{position:fixed;z-index:100000;width:400px;background:var(--fb-bg);border:1px solid var(--fb-border);border-radius:12px;padding:16px;box-shadow:0 10px 25px rgba(0,0,0,0.1);font-family:var(--fb-font);display:none}",".fb-popup.show{display:block}",".fb-popup-head{margin-bottom:10px}",".fb-popup-head span{font-size:14px;font-weight:700;color:var(--fb-fg)}",".fb-popup-quote{font-size:13px;color:var(--fb-muted-fg);padding:8px 12px;background:var(--fb-muted);border-left:2px solid var(--fb-accent);border-radius:0 6px 6px 0;margin-bottom:10px;font-style:italic;line-height:1.5}",".fb-popup textarea{width:100%;min-height:70px;padding:10px 12px;border:1px solid var(--fb-border);border-radius:8px;font-size:14px;font-family:var(--fb-font);resize:vertical;outline:none;margin-bottom:10px;color:var(--fb-fg)}",".fb-popup textarea:focus{border-color:var(--fb-accent)}",".fb-popup textarea::placeholder{color:var(--fb-muted-fg)}",".fb-popup-pri{display:flex;gap:6px;margin-bottom:10px}",".fb-popup-pri button{flex:1;padding:7px 8px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:2px solid transparent;transition:all .15s;font-family:var(--fb-font)}",".fb-popup-actions{display:flex;gap:8px;justify-content:flex-end}",".fb-popup-actions button{padding:8px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;font-family:var(--fb-font)}",".fb-popup-actions .cancel{background:none;border:1px solid var(--fb-border);color:var(--fb-muted-fg)}",".fb-popup-actions .cancel:hover{background:var(--fb-muted);color:var(--fb-fg)}",".fb-popup-actions .submit{border:none;color:#fff}",".fb-name-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.4);display:flex;align-items:center;justify-content:center;z-index:100001}",".fb-name-box{background:var(--fb-bg);border-radius:12px;padding:28px;width:360px;box-shadow:0 20px 40px rgba(0,0,0,0.15)}",".fb-name-box h2{font-size:18px;font-weight:700;margin:0 0 6px;color:var(--fb-fg)}",".fb-name-box p{font-size:14px;color:var(--fb-muted-fg);margin:0 0 16px}",".fb-name-box input{width:100%;padding:10px 14px;border:1px solid var(--fb-border);border-radius:8px;font-size:15px;outline:none;margin-bottom:12px;font-family:var(--fb-font);color:var(--fb-fg)}",".fb-name-box input:focus{border-color:var(--fb-accent)}",".fb-name-box input::placeholder{color:var(--fb-muted-fg)}",".fb-name-box button{width:100%;padding:10px;background:var(--fb-primary);color:var(--fb-primary-fg);border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:var(--fb-font)}",".fb-name-box button:disabled{opacity:.4;cursor:default}",".fb-name-input{width:100%;padding:4px 8px;border:1px solid var(--fb-border);border-radius:4px;font-size:12px;outline:none;font-family:var(--fb-font);color:var(--fb-fg)}",".fb-name-input:focus{border-color:var(--fb-accent)}",".fb-highlight{padding:1px 0;cursor:pointer;transition:background .15s}",".fb-highlight-must{background:rgba(239,68,68,0.15);border-bottom:2px solid #ef4444}",".fb-highlight-must:hover{background:rgba(239,68,68,0.25)}",".fb-highlight-better{background:rgba(245,158,11,0.15);border-bottom:2px solid #f59e0b}",".fb-highlight-better:hover{background:rgba(245,158,11,0.25)}",".fb-highlight-want{background:rgba(34,197,94,0.15);border-bottom:2px solid #22c55e}",".fb-highlight-want:hover{background:rgba(34,197,94,0.25)}","@keyframes fb-pulse{0%,100%{opacity:1}50%{opacity:0.4}}",".fb-highlight.fb-pulse{animation:fb-pulse 1s ease-in-out infinite}",".fb-card.fb-focused{box-shadow:0 0 0 2px var(--fb-accent);background:rgba(59,130,246,0.04)}","#fb-sidebar svg,#fb-toggle svg,.fb-popup svg{pointer-events:none}","body.fb-pin-mode{cursor:"+t+"}","body.fb-pin-mode *:not(#fb-toggle):not(#fb-toggle *):not(#fb-sidebar):not(#fb-sidebar *):not(#fb-pin-popup):not(#fb-pin-popup *):not(.fb-pin-marker):not(.fb-pin-marker *){cursor:"+t+"}",".fb-toggle-pin{display:flex;align-items:center;justify-content:center;padding:4px;cursor:pointer;transition:all .15s}",".fb-toggle-pin:hover{color:var(--fb-accent)}",".fb-toggle-voice{display:flex;align-items:center;justify-content:center;padding:4px;cursor:pointer;color:var(--fb-muted-fg);border-radius:4px;transition:all .15s}",".fb-toggle-voice:hover{color:var(--fb-accent)}",".fb-toggle-voice.recording{color:#ef4444;background:rgba(239,68,68,0.12);animation:fb-mic-pulse 1.1s ease-in-out infinite}",".fb-toggle-voice.processing{color:var(--fb-accent)}",".fb-toggle-voice.processing svg{animation:fb-mic-spin .8s linear infinite;transform-origin:center}","@keyframes fb-mic-pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0.5)}50%{box-shadow:0 0 0 5px rgba(239,68,68,0)}}","@keyframes fb-mic-spin{to{transform:rotate(360deg)}}",".fb-voice-toast{position:fixed;right:16px;bottom:70px;z-index:100001;max-width:320px;padding:10px 14px;border-radius:8px;background:var(--fb-fg);color:var(--fb-bg);font-family:var(--fb-font);font-size:13px;line-height:1.5;box-shadow:0 6px 20px rgba(0,0,0,0.2);opacity:0;transform:translateY(6px);transition:opacity .2s,transform .2s;pointer-events:none}",".fb-voice-toast.show{opacity:1;transform:translateY(0)}",".fb-pin-marker{position:absolute;transform:translate(-50%,-100%);cursor:grab;z-index:99990;transition:transform .15s}",".fb-pin-marker:hover{transform:translate(-50%,-100%) scale(1.15)}",".fb-pin-marker.resolved{opacity:.4}",".fb-pin-marker.fb-pin-flash .fb-pin-icon{animation:fb-pin-ring 1.4s ease}","@keyframes fb-pin-ring{0%,100%{box-shadow:0 2px 6px rgba(0,0,0,0.25)}30%,60%{box-shadow:0 0 0 8px rgba(59,130,246,0.45)}}",".fb-pin-ref{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--fb-muted-fg);padding:6px 10px;background:var(--fb-muted);border-radius:6px;margin-bottom:8px;cursor:pointer;transition:background .15s}",".fb-pin-ref:hover{background:var(--fb-border)}",".fb-pin-ref-badge{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;color:#fff;font-size:10px;font-weight:700;flex-shrink:0}","body.fb-dragging-pin,body.fb-dragging-pin *{cursor:grabbing !important;-webkit-user-select:none !important;user-select:none !important}","body.fb-dragging-pin .fb-pin-marker{transition:none}","body.fb-dragging-pin .fb-pin-tooltip{display:none !important}",".fb-pin-badge{cursor:pointer;transition:transform .1s}",".fb-pin-badge:hover{transform:scale(1.08)}",".fb-pin-badge.readonly{cursor:default}",".fb-pin-icon{width:24px;height:24px;border-radius:50%;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,0.25);position:relative}",'.fb-pin-icon::after{content:"";position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid var(--pin-color,#3b82f6)}',".fb-pin-tooltip{display:none;position:absolute;top:8px;left:28px;background:var(--fb-bg);border:1px solid var(--fb-border);border-radius:8px;padding:10px 12px;box-shadow:0 4px 12px rgba(0,0,0,0.1);min-width:180px;max-width:280px;z-index:99995;font-family:var(--fb-font)}",".fb-pin-marker:hover .fb-pin-tooltip{display:block}",".fb-pin-delete{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:50%;background:rgba(0,0,0,0.5);color:#fff;border:none;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}",".fb-pin-tooltip:hover .fb-pin-delete{opacity:1}",".fb-pin-popup{position:fixed;z-index:100000;width:300px;background:var(--fb-bg);border:1px solid var(--fb-border);border-radius:12px;padding:16px;box-shadow:0 10px 25px rgba(0,0,0,0.12);font-family:var(--fb-font);display:none}",".fb-pin-popup.show{display:block}",".fb-pin-popup-head{font-size:14px;font-weight:700;color:var(--fb-fg);margin-bottom:10px}",".fb-pin-popup textarea{width:100%;min-height:60px;padding:10px 12px;border:1px solid var(--fb-border);border-radius:8px;font-size:14px;font-family:var(--fb-font);resize:vertical;outline:none;margin-bottom:10px;color:var(--fb-fg);box-sizing:border-box}",".fb-pin-popup textarea:focus{border-color:var(--fb-accent)}",".fb-pin-popup textarea::placeholder{color:var(--fb-muted-fg)}",".fb-pin-popup-pri{display:flex;gap:6px;margin-bottom:10px}",".fb-pin-pri-btn{flex:1;padding:6px 8px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;border:none;transition:opacity .15s}",".fb-pin-popup-actions{display:flex;gap:8px;justify-content:flex-end}",".fb-pin-popup-actions button{padding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;font-family:var(--fb-font)}",".fb-pin-cancel{background:none;border:1px solid var(--fb-border);color:var(--fb-muted-fg)}",".fb-pin-cancel:hover{background:var(--fb-muted);color:var(--fb-fg)}",".fb-pin-submit{background:var(--fb-accent);border:none;color:#fff}",".fb-pin-submit:hover{background:#2563eb}"].join(`
`),document.head.appendChild(e)}function C(e,t,r){let n=document.createElement(e);return t&&Object.keys(t).forEach(i=>{let a=t[i];i==="className"?n.className=a:i==="innerHTML"?n.innerHTML=a:i.startsWith("on")&&typeof a=="function"?n.addEventListener(i.substring(2).toLowerCase(),a):n.setAttribute(i,String(a))}),r!=null&&(typeof r=="string"?n.textContent=r:Array.isArray(r)?r.forEach(i=>{i&&n.appendChild(i)}):n.appendChild(r)),n}function x(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}var Ze={message:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z"/></svg>',check:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M20 6 9 17l-5-5"/></svg>',rotateCcw:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"/><path d="M3 3v5h5"/></svg>',pencil:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/><path d="m15 5 4 4"/></svg>',trash:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M10 11v6"/><path d="M14 11v6"/><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6"/><path d="M3 6h18"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/></svg>',user:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>',x:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M18 6 6 18"/><path d="m6 6 12 12"/></svg>',panelRight:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><rect width="18" height="18" x="3" y="3" rx="2"/><path d="M15 3v18"/></svg>',mic:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3Z"/><path d="M19 10v2a7 7 0 0 1-14 0v-2"/><line x1="12" x2="12" y1="19" y2="22"/></svg>',loader:'<svg width="SIZE" height="SIZE" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="SW" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12a9 9 0 1 1-6.219-8.56"/></svg>'};function h(e,t=14,r=2){return(Ze[e]||"").replace(/SIZE/g,String(t)).replace(/SW/g,String(r))}var le=null,ce=null;function pe(e){le=e}function fe(e){ce=e}function ue(e){let t=document.getElementById("fb-toggle");t||(t=C("button",{id:"fb-toggle"}),t.addEventListener("click",c=>{let f=c.target.closest("[data-action]");f?.dataset.action==="area-mode"?le?.():f?.dataset.action==="voice"?ce?.():e()}),document.body.appendChild(t));let r=o.comments.filter(c=>!c.parentId&&!c.resolved).length,n=o.comments.filter(c=>c.type==="pin"&&!c.parentId).length,i='<span class="fb-toggle-icon">'+h("panelRight",16);r>0&&(i+='<span class="fb-badge">'+r+"</span>"),i+="</span>";let a=o.pinMode?"color:var(--fb-accent);background:rgba(59,130,246,0.1);border-radius:4px":"",d=o.pinMode?"\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30E2\u30FC\u30C9 ON\uFF08\u30AF\u30EA\u30C3\u30AF\u3067\u7D42\u4E86\uFF09\uFF0F\u30AF\u30EA\u30C3\u30AF=\u30D4\u30F3\u30FB\u30C9\u30E9\u30C3\u30B0=\u5F15\u7528":"\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u30E2\u30FC\u30C9 OFF\uFF08\u30AF\u30EA\u30C3\u30AF\u3067\u958B\u59CB\uFF09";i+='<span class="fb-toggle-pin" data-action="area-mode" style="'+a+'" title="'+d+'"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v10"/><circle cx="12" cy="14" r="2"/><path d="M12 16v6"/></svg>',n>0&&(i+='<span style="font-size:9px;font-weight:700;color:var(--fb-accent);margin-left:1px">'+n+"</span>"),i+="</span>";let s=o.voiceRecording?" recording":o.voiceProcessing?" processing":"",l=o.voiceRecording?"\u9332\u97F3\u4E2D\uFF08\u30AF\u30EA\u30C3\u30AF\u3067\u505C\u6B62\u3057\u3066\u89E3\u6790\uFF09":o.voiceProcessing?"\u89E3\u6790\u4E2D...":"\u97F3\u58F0\u3067\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF",p=o.voiceProcessing?h("loader",14):h("mic",14);i+='<span class="fb-toggle-voice'+s+'" data-action="voice" title="'+l+'">'+p+"</span>",i+='<span class="fb-toggle-label">\u30B3\u30E1\u30F3\u30C8</span>',t.innerHTML=i,t.style.display=o.sidebarOpen?"none":""}function X(e){let t=Date.now()-e;return t<6e4?"\u305F\u3063\u305F\u4ECA":t<36e5?Math.floor(t/6e4)+"\u5206\u524D":t<864e5?Math.floor(t/36e5)+"\u6642\u9593\u524D":new Date(e).toLocaleDateString("ja-JP",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}function S(){return document.querySelector("main")||document.body}var Z=null;function be(e){let t=i=>window.CSS&&CSS.escape?CSS.escape(i):i,r=[],n=e;for(;n&&n.nodeType===1&&n!==document.body;){if(n.id){r.unshift("#"+t(n.id));break}let i=n.tagName.toLowerCase(),a=n.parentElement;if(a){let d=Array.from(a.children).filter(s=>s.tagName===n.tagName);d.length>1&&(i+=":nth-of-type("+(d.indexOf(n)+1)+")")}r.unshift(i),n=a}return r.join(">")}var Ve="#fb-sidebar,#fb-toggle,#fb-pin-popup,.fb-pin-marker,.fb-pin-tooltip";function ge(e,t){let r=S(),i=document.elementsFromPoint(e,t).find(d=>!d.closest(Ve)&&d!==r&&d!==document.body&&r.contains(d));if(!i)return null;let a=i.getBoundingClientRect();return{selector:be(i),dx:e-a.left,dy:t-a.top}}function Ke(e,t){return document.elementsFromPoint(e,t).some(r=>r.closest("#fb-sidebar,#fb-toggle,#fb-pin-popup"))}function Qe(e){try{let t=document.createRange();t.selectNodeContents(e);let r=t.getBoundingClientRect();if(r.width>=1&&r.height>=1)return r}catch{}return e.getBoundingClientRect()}function me(e){let t=Qe(e);return{x:t.left+t.width/2,y:t.top}}function Ge(e,t,r){let n=e.getBoundingClientRect();return{x:n.left+t,y:n.top+r}}function xe(e){return{selector:be(e),dx:null,dy:null}}function ve(e){let r=S().getBoundingClientRect();if(e.anchorSelector){let i=null;try{i=document.querySelector(e.anchorSelector)}catch{i=null}if(i){let a=e.anchorDx==null||e.anchorDy==null?me(i):Ge(i,e.anchorDx,e.anchorDy),d=(a.x-r.left)/r.width*100;return d<5&&(d=5),d>95&&(d=95),{xPct:d,yPx:a.y-r.top}}}let n=e.pinX??50;return n<5&&(n=5),n>95&&(n=95),{xPct:n,yPx:e.pinY??0}}function D(){return o.comments.filter(e=>e.type==="pin"&&!e.parentId)}function he(e){return D().findIndex(t=>t.id===e)+1}function ye(e){let r=S().getBoundingClientRect(),n=me(e),i=(n.x-r.left)/r.width*100;return i<5&&(i=5),i>95&&(i=95),{x:i,y:n.y-r.top}}function we(){o.pinMode=!0,o.pinPopupPos=null,document.body.classList.add("fb-pin-mode")}function V(){o.pinMode=!1,o.pinPopupPos=null,document.body.classList.remove("fb-pin-mode")}function Ee(e){if(e.target.closest("#fb-sidebar,#fb-toggle,#fb-pin-popup,.fb-pin-marker,.fb-pin-tooltip"))return;let r=S().getBoundingClientRect(),i=(e.clientX-r.left)/r.width*100,a=e.pageY-(r.top+window.scrollY);o.editingPinId=null,o.pinPopupPos={x:i,y:a},Z=ge(e.clientX,e.clientY)}function K(e,t,r,n,i){let a={id:B(),author:o.username||"\u533F\u540D",type:"pin",quote:"",quoteContext:{beforeText:"",afterText:""},content:r.trim()||"(\u30B3\u30E1\u30F3\u30C8\u306A\u3057)",priority:n,parentId:null,pageUrl:window.location.href,projectSlug:M,timestamp:Date.now(),resolved:!1,resolvedBy:null,resolvedAt:null,updatedAt:null,pinX:e,pinY:t,anchorSelector:i?.selector??null,anchorDx:i?.dx??null,anchorDy:i?.dy??null};return o.comments.push(a),E("POST",a),a}function Je(e,t){o.pinPopupPos&&(K(o.pinPopupPos.x,o.pinPopupPos.y,e,t,Z),Z=null,o.pinPopupPos=null,y())}function Te(){o.pinPopupPos=null}function $e(e){o.comments=o.comments.filter(t=>t.id!==e&&t.parentId!==e),E("DELETE",{id:e}),y()}function et(e,t,r,n){let i=o.comments.find(a=>a.id===e);i&&(i.pinX=t,i.pinY=r,i.anchorSelector=n?.selector??null,i.anchorDx=n?.dx??null,i.anchorDy=n?.dy??null,E("PUT",{id:e,action:"move",pinX:t,pinY:r,anchorSelector:i.anchorSelector,anchorDx:i.anchorDx,anchorDy:i.anchorDy}),y())}function tt(e,t,r){let n=o.comments.find(i=>i.id===e);n&&(n.content=t.trim()||"(\u30B3\u30E1\u30F3\u30C8\u306A\u3057)",n.priority=r,E("PUT",{id:e,action:"edit",content:n.content,priority:r}),y())}function nt(e,t){let r=D().find(i=>i.id===e);if(!r)return;o.editingPinId=e;let n=ve(r);o.pinPopupPos={x:n.xPct,y:n.yPx},Q(t)}function Pe(e){document.addEventListener("mousedown",t=>{let n=t.target.closest(".fb-pin-marker");if(!n)return;let i=n.dataset.pinId;if(!i)return;let a=t.clientX,d=t.clientY,s=!1;function l(u){if(!s&&Math.hypot(u.clientX-a,u.clientY-d)<6)return;s||(s=!0,document.body.classList.add("fb-dragging-pin")),u.preventDefault();let b=S().getBoundingClientRect(),g=(u.clientX-b.left)/b.width*100;g<5&&(g=5),g>95&&(g=95),n.style.left=g+"%",n.style.top=u.clientY-b.top+"px"}function p(){document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",f),window.removeEventListener("blur",c),document.body.classList.remove("fb-dragging-pin")}function c(){let u=s;p(),u&&y()}function f(u){let w=s;if(p(),!w){nt(i,e);return}if(Ke(u.clientX,u.clientY)){y();return}let g=S().getBoundingClientRect(),P=(u.clientX-g.left)/g.width*100;P<5&&(P=5),P>95&&(P=95);let A=u.clientY-g.top,v=ge(u.clientX,u.clientY);et(i,P,A,v)}document.addEventListener("mousemove",l),document.addEventListener("mouseup",f),window.addEventListener("blur",c)})}function y(){document.querySelectorAll(".fb-pin-marker").forEach(l=>l.remove());let e=S();getComputedStyle(e).position==="static"&&(e.style.position="relative");let t=D(),r=t.map(l=>ve(l)),n=26,i=16,a=e.getBoundingClientRect().width,d=[];r.forEach((l,p)=>{let c=d.find(f=>Math.abs(f.x-l.xPct)<2&&Math.abs(f.y-l.yPx)<24);c||(c={x:l.xPct,y:l.yPx,items:[]},d.push(c)),c.items.push(p)});let s={};d.forEach(l=>{let p=l.items.length;l.items.forEach((c,f)=>{s[c]=(f-(p-1)/2)*n})}),t.forEach((l,p)=>{let c=document.createElement("div");c.className="fb-pin-marker"+(l.resolved?" resolved":""),c.dataset.pinId=l.id;let f=k[l.priority]||k.want,u=r[p].xPct,w=u/100*a,b=Math.min(Math.max(w+(s[p]||0),i),a-i),g=Math.round(b-w);c.style.left=g?"calc("+u+"% + "+g+"px)":u+"%",c.style.top=r[p].yPx+"px",c.style.setProperty("--pin-color",f.bg),c.innerHTML='<div class="fb-pin-icon" style="background:'+f.bg+'">'+(p+1)+"</div>";let P=document.createElement("div");P.className="fb-pin-tooltip";let A=l.priority.charAt(0).toUpperCase()+l.priority.slice(1),v='<span style="display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:700;color:#fff;background:'+f.bg+'">'+A+"</span>",W='<div style="font-size:11px;color:#a3a3a3;margin-top:6px">\u30AF\u30EA\u30C3\u30AF\u3067\u7DE8\u96C6 / \u30C9\u30E9\u30C3\u30B0\u3067\u79FB\u52D5</div>';P.innerHTML='<div style="display:flex;align-items:center;gap:6px;margin-bottom:4px">'+v+'<span style="font-size:11px;color:#737373">'+x(l.author)+'</span></div><div style="font-size:13px;color:#0a0a0a;white-space:pre-wrap">'+x(l.content)+"</div>"+W,c.appendChild(P),e.appendChild(c)})}function Q(e){let t=document.getElementById("fb-pin-popup");if(t||(t=document.createElement("div"),t.id="fb-pin-popup",t.className="fb-pin-popup",document.body.appendChild(t)),!o.pinPopupPos){t.classList.remove("show");return}t.classList.add("show");let r=o.editingPinId&&D().find(v=>v.id===o.editingPinId)||null,i=S().getBoundingClientRect(),a=o.pinPopupPos.x/100*i.width+i.left,d=o.pinPopupPos.y+i.top+window.scrollY,s='<div class="fb-pin-popup-head">'+(r?"\u30B3\u30E1\u30F3\u30C8\u3092\u7DE8\u96C6":"\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0")+"</div>";s+='<textarea id="fb-pin-textarea" placeholder="\u30B3\u30E1\u30F3\u30C8\u3092\u5165\u529B...\uFF08\u512A\u5148\u5EA6\u3092\u62BC\u3059\u3068'+(r?"\u4FDD\u5B58":"\u9001\u4FE1")+'\uFF09"></textarea>',s+='<div class="fb-pin-popup-pri">',["must","better","want"].forEach(v=>{let W=k[v];s+='<button class="fb-pin-pri-btn" data-pri="'+v+'" style="background:'+W.bg+';color:#fff;border:none">'+v.charAt(0).toUpperCase()+v.slice(1)+"</button>"}),s+="</div>",r&&(s+='<div class="fb-pin-popup-actions"><button class="fb-pin-delete-btn">\u524A\u9664</button></div>'),t.innerHTML=s;let l=300,p=8,c=d+24-window.scrollY;c+220>window.innerHeight&&(c=d-220-p-window.scrollY);let f=a-l/2;f<p&&(f=p),f+l>window.innerWidth-p&&(f=window.innerWidth-l-p),t.style.position="fixed",t.style.top=c+"px",t.style.left=f+"px";let u=t.querySelector("#fb-pin-textarea");u.value=r?r.content:"",setTimeout(()=>u?.focus(),50);let w=t.querySelectorAll(".fb-pin-pri-btn"),b=r?r.priority:"better",g=()=>w.forEach(v=>{v.style.opacity=v.dataset.pri===b?"1":"0.4"});w.forEach(v=>{v.addEventListener("click",()=>{b=v.dataset.pri,A()})}),g();let P=()=>{o.editingPinId=null,o.pinPopupPos=null,t.classList.remove("show"),e()},A=()=>{r?tt(r.id,u.value,b):Je(u.value,b),P()};r&&t.querySelector(".fb-pin-delete-btn").addEventListener("click",()=>{$e(r.id),P()}),u.addEventListener("keydown",v=>{(v.metaKey||v.ctrlKey)&&v.key==="Enter"&&A()})}function ke(e){let t=e.author===o.username,r=k[e.priority]||k.want,n='<div class="fb-card'+(e.resolved?" resolved":"")+'" style="border-left-color:'+r.bg+'" data-id="'+e.id+'">';if(n+='<div class="fb-card-head"><div class="fb-card-head-left">',n+='<div class="fb-avatar">'+x(e.author.charAt(0))+"</div>",n+='<span class="fb-author">'+x(e.author)+"</span>",n+='<span class="fb-time">'+X(e.timestamp)+"</span>",e.resolved&&(n+='<span class="fb-resolved-mark">'+h("check",12)+" \u89E3\u6C7A\u6E08</span>"),n+="</div>",n+='<span class="fb-badge-p'+(t?" own":"")+'" style="background:'+r.bg+'" data-action="cycle" data-id="'+e.id+'">'+x(e.priority.charAt(0).toUpperCase()+e.priority.slice(1))+"</span>",n+="</div>",e.type==="pin")n+='<div class="fb-pin-ref" data-action="scroll-pin" data-id="'+e.id+'"><span class="fb-pin-ref-badge" style="background:'+r.bg+'">'+he(e.id)+"</span>\u30D4\u30F3\u3092\u8868\u793A</div>";else if(e.quote){let a=e.quote.length>100?e.quote.substring(0,100)+"...":e.quote;n+='<div class="fb-quote" style="border-left-color:'+r.bg+'" data-action="scroll-quote" data-id="'+e.id+'">'+x(a)+"</div>"}o.editingId===e.id?(n+='<div class="fb-edit-area">',n+='<div class="fb-edit-pri">',["must","better","want"].forEach(a=>{let d=o.editPriority===a,s=k[a];n+='<button data-action="set-edit-pri" data-pri="'+a+'" style="'+(d?"background:"+s.bg+";color:#fff;border-color:"+s.bg:"")+'">'+a.charAt(0).toUpperCase()+a.slice(1)+"</button>"}),n+="</div>",n+='<textarea data-action="edit-textarea">'+x(o.editContent)+"</textarea>",n+='<div class="fb-edit-btns"><button data-action="cancel-edit">\u30AD\u30E3\u30F3\u30BB\u30EB</button><button class="save" data-action="save-edit" data-id="'+e.id+'">\u4FDD\u5B58</button></div>',n+="</div>"):n+='<div class="fb-body">'+x(e.content)+"</div>",o.editingId!==e.id&&(n+='<div class="fb-actions">',n+='<button class="fb-act" data-action="reply" data-id="'+e.id+'">'+h("message",12)+"\u8FD4\u4FE1</button>",n+='<button class="fb-act res" data-action="resolve" data-id="'+e.id+'">'+(e.resolved?h("rotateCcw",12):h("check",12))+(e.resolved?"\u623B\u3059":"\u89E3\u6C7A")+"</button>",t&&(n+='<button class="fb-act" data-action="edit" data-id="'+e.id+'">'+h("pencil",12)+"\u7DE8\u96C6</button>"),t&&(n+='<button class="fb-act del" data-action="delete" data-id="'+e.id+'">'+h("trash",12)+"\u524A\u9664</button>"),n+="</div>");let i=o.comments.filter(a=>a.parentId===e.id).sort((a,d)=>a.timestamp-d.timestamp);return i.length>0&&(n+='<div class="fb-replies">',i.forEach(a=>{let d=a.author===o.username;n+='<div class="fb-reply-item"><div class="fb-reply-avatar">'+x(a.author.charAt(0))+'</div><div style="flex:1;min-width:0"><div class="fb-reply-meta"><strong>'+x(a.author)+"</strong> &middot; "+X(a.timestamp)+"</div>",o.editingId===a.id?n+='<div class="fb-edit-area"><textarea data-action="edit-textarea">'+x(o.editContent)+'</textarea><div class="fb-edit-btns"><button data-action="cancel-edit">\u30AD\u30E3\u30F3\u30BB\u30EB</button><button class="save" data-action="save-edit" data-id="'+a.id+'">\u4FDD\u5B58</button></div></div>':(n+='<div class="fb-reply-text">'+x(a.content)+"</div>",n+='<div class="fb-actions" style="margin-top:4px">',n+='<button class="fb-act" data-action="reply" data-id="'+e.id+'">'+h("message",12)+"\u8FD4\u4FE1</button>",d&&(n+='<button class="fb-act" data-action="edit" data-id="'+a.id+'">'+h("pencil",12)+"\u7DE8\u96C6</button>"),d&&(n+='<button class="fb-act del" data-action="delete-reply" data-id="'+a.id+'">'+h("trash",12)+"\u524A\u9664</button>"),n+="</div>"),n+="</div></div>"}),n+="</div>"),o.replyingTo===e.id&&(n+='<div class="fb-reply-input"><textarea placeholder="\u8FD4\u4FE1\u3092\u5165\u529B..." data-action="reply-textarea">'+x(o.replyText)+'</textarea><button data-action="submit-reply" data-id="'+e.id+'"'+(o.replyText.trim()?"":" disabled")+">\u9001\u4FE1</button></div>"),n+="</div>",n}function Ce(){let e=document.getElementById("fb-sidebar");if(!e)return;let t=o.sidebarWidth;e.style.width=t+"px",e.style.right=o.sidebarOpen?"0px":-(t+20)+"px",document.body.style.marginRight=o.sidebarOpen?t+"px":""}function N(){o.sidebarOpen=!o.sidebarOpen;let e=document.getElementById("fb-toggle");e&&(e.style.display=o.sidebarOpen?"none":""),document.body.style.transition="margin-right 0.3s ease",Ce()}function Se(){return o.comments.filter(e=>!e.parentId)}function ot(){let e=Se();return o.filter==="resolved"?e.filter(t=>t.resolved):o.filter==="all"?e:e.filter(t=>!t.resolved)}function Le(e){let t=document.getElementById("fb-sidebar"),r=!t;r&&(t=C("div",{id:"fb-sidebar"}),document.body.appendChild(t),t.addEventListener("mouseover",s=>{let l=s.target.closest(".fb-card");if(!l)return;let p=document.querySelector('.fb-highlight[data-comment-id="'+l.dataset.id+'"]');p&&p.classList.add("fb-pulse")}),t.addEventListener("mouseout",s=>{let l=s.target.closest(".fb-card");if(!l||s.relatedTarget&&l.contains(s.relatedTarget))return;let p=document.querySelector('.fb-highlight[data-comment-id="'+l.dataset.id+'"]');p&&p.classList.remove("fb-pulse")})),Ce();let n=Se(),i={unresolved:n.filter(s=>!s.resolved).length,resolved:n.filter(s=>s.resolved).length,all:n.length},a='<div class="fb-resize-handle"></div>';a+='<div class="fb-header">',a+='<div class="fb-header-left"><span class="fb-header-title">\u30B3\u30E1\u30F3\u30C8</span><span class="fb-header-count">'+i.all+"</span></div>",a+='<div class="fb-header-actions">',a+='<button class="fb-hdr-btn" data-action="close" title="\u9589\u3058\u308B">'+h("x",18)+"</button>",a+="</div></div>",o.username&&(o.editingName?a+='<div class="fb-user-row"><input class="fb-name-input" value="'+x(o.nameInput)+'" data-action="name-input" autofocus></div>':a+='<div class="fb-user-row" data-action="edit-name">'+h("user",14)+x(o.username)+"</div>"),a+='<div class="fb-filters">',["unresolved","resolved","all"].forEach(s=>{let l=s==="unresolved"?"\u672A\u89E3\u6C7A":s==="resolved"?"\u89E3\u6C7A\u6E08":"\u3059\u3079\u3066";a+='<button class="fb-filter'+(o.filter===s?" active":"")+'" data-filter="'+s+'">'+l+'<span class="cnt">'+i[s]+"</span></button>"}),a+="</div>";let d=ot().sort((s,l)=>l.timestamp-s.timestamp);a+='<div class="fb-list">',d.length===0?a+='<div class="fb-empty">'+h("message",40)+'\u30B3\u30E1\u30F3\u30C8\u306F\u307E\u3060\u3042\u308A\u307E\u305B\u3093<br><span style="font-size:11px">\u30C6\u30AD\u30B9\u30C8\u3092\u9078\u629E\u3057\u3066\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0</span></div>':d.forEach(s=>{a+=ke(s)}),a+="</div>",t.innerHTML=a,r&&rt(t,e)}var T=null;function Me(e){T=e}function rt(e,t){e.addEventListener("click",r=>{let n=r.target.closest("[data-action]");if(n){let d=n.dataset.action,s=n.dataset.id;if(d==="close")T?.toggleSidebar();else if(d==="edit-name")o.editingName=!0,o.nameInput=o.username,t();else if(d==="cycle"&&s)T?.cyclePriority(s);else if(d==="scroll-quote"&&s)T?.scrollToQuote(s);else if(d==="scroll-pin"&&s)T?.scrollToPin(s);else if(d==="reply"&&s)o.replyingTo=o.replyingTo===s?null:s,o.replyText="",t();else if(d==="resolve"&&s)T?.resolveComment(s);else if(d==="edit"&&s){let l=o.comments.find(p=>p.id===s);l&&(o.editingId=s,o.editContent=l.content,o.editPriority=l.priority,t())}else d==="delete"&&s?T?.deleteComment(s):d==="delete-reply"&&s?T?.deleteReply(s):d==="cancel-edit"?(o.editingId=null,t()):d==="save-edit"&&s?T?.saveEdit(s):d==="submit-reply"&&s?T?.submitReply(s):d==="set-edit-pri"&&(o.editPriority=n.dataset.pri,t());return}let i=r.target.closest("[data-filter]");if(i){o.filter=i.dataset.filter,t();return}let a=r.target.closest(".fb-card");a&&a.dataset.id&&(o.comments.find(s=>s.id===a.dataset.id)?.type==="pin"?T?.scrollToPin(a.dataset.id):T?.scrollToQuote(a.dataset.id))}),e.addEventListener("mousedown",r=>{if(!r.target.closest(".fb-resize-handle"))return;r.preventDefault();let n=r.clientX,i=o.sidebarWidth,a=r.target.closest(".fb-resize-handle");document.body.classList.add("fb-resizing"),a.classList.add("active");function d(l){o.sidebarWidth=Math.min(800,Math.max(300,i+(n-l.clientX)));let p=document.getElementById("fb-sidebar");p&&(p.style.width=o.sidebarWidth+"px"),document.body.style.transition="none",document.body.style.marginRight=o.sidebarWidth+"px"}function s(){document.removeEventListener("mousemove",d),document.removeEventListener("mouseup",s),document.body.classList.remove("fb-resizing"),a.classList.remove("active"),document.body.style.transition="",localStorage.setItem(O,String(o.sidebarWidth))}document.addEventListener("mousemove",d),document.addEventListener("mouseup",s)}),e.addEventListener("input",r=>{let n=r.target;if(n.dataset.action==="name-input")o.nameInput=n.value;else if(n.dataset.action==="edit-textarea")o.editContent=n.value;else if(n.dataset.action==="reply-textarea"){o.replyText=n.value;let i=e.querySelector('[data-action="submit-reply"]');i&&(i.disabled=!o.replyText.trim())}}),e.addEventListener("keydown",r=>{let n=r.target;if(n.dataset.action==="name-input"&&(r.key==="Enter"?T?.finishNameEdit():r.key==="Escape"&&(o.editingName=!1,t())),n.dataset.action==="reply-textarea"&&(r.metaKey||r.ctrlKey)&&r.key==="Enter"){let i=e.querySelector('[data-action="submit-reply"]')?.dataset.id;i&&T?.submitReply(i)}}),e.addEventListener("blur",r=>{r.target.dataset?.action==="name-input"&&T?.finishNameEdit()},!0)}function Ie(e,t,r){let n=document.getElementById("fb-popup");if(!n&&(n=C("div",{id:"fb-popup",className:"fb-popup"}),document.body.appendChild(n),n.addEventListener("click",b=>{let g=b.target.closest("[data-action]");g&&(g.dataset.action==="cancel-popup"?t():g.dataset.action==="set-popup-pri"?(o.popupPriority=g.dataset.pri,r(o.popupPriority)):g.dataset.action==="submit-popup"&&r(o.popupPriority))}),n.addEventListener("input",b=>{b.target.dataset.action==="popup-textarea"&&(o.popupContent=b.target.value)}),n.addEventListener("keydown",b=>{b.target.dataset.action==="popup-textarea"&&(b.metaKey||b.ctrlKey)&&b.key==="Enter"&&r(o.popupPriority)})),!o.selectedRect){n.classList.remove("show");return}n.classList.add("show");let a=o.selectedText.length>120?o.selectedText.substring(0,120)+"...":o.selectedText,d='<div class="fb-popup-head"><span>\u30B3\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0</span></div>';d+='<div class="fb-popup-quote">'+x(a)+"</div>",d+='<textarea placeholder="\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u5165\u529B...\uFF08\u512A\u5148\u5EA6\u3092\u62BC\u3059\u3068\u9001\u4FE1\uFF09" data-action="popup-textarea">'+x(o.popupContent)+"</textarea>",d+='<div class="fb-popup-pri">',["must","better","want"].forEach(b=>{let g=k[b];d+='<button class="fb-pin-pri-btn" style="background:'+g.bg+';color:#fff;border:none" data-action="set-popup-pri" data-pri="'+b+'">'+b.charAt(0).toUpperCase()+b.slice(1)+"</button>"}),d+="</div>",n.innerHTML=d;let s=o.selectedRect,l=320,p=230,c=12,f=s.bottom+c;f+p>window.innerHeight&&(f=s.top-p-c),f<c&&(f=Math.max(c,(window.innerHeight-p)/2));let u=o.sidebarOpen?window.innerWidth-o.sidebarWidth:window.innerWidth,w=Math.max(c,Math.min(s.left,u-l-c));n.style.top=f+"px",n.style.left=w+"px"}function Ae(e){let t=document.getElementById("fb-name-overlay");if(o.username){t&&t.remove();return}if(t)return;let r=C("div",{id:"fb-name-overlay",className:"fb-name-overlay"});r.innerHTML='<div class="fb-name-box"><h2>\u3088\u3046\u3053\u305D</h2><p>\u30B3\u30E1\u30F3\u30C8\u306B\u8868\u793A\u3055\u308C\u308B\u540D\u524D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002</p><input placeholder="\u4F8B: \u7530\u4E2D\u592A\u90CE" id="fb-name-field"><button id="fb-name-submit" disabled>\u59CB\u3081\u308B</button></div>',document.body.appendChild(r);let n=document.getElementById("fb-name-field"),i=document.getElementById("fb-name-submit");n.addEventListener("input",()=>{i.disabled=!n.value.trim()}),n.addEventListener("keydown",a=>{a.key==="Enter"&&n.value.trim()&&Re(n.value.trim(),e)}),i.addEventListener("click",()=>{n.value.trim()&&Re(n.value.trim(),e)}),setTimeout(()=>{n.focus()},100)}function Re(e,t){o.username=e,localStorage.setItem(H,e);let r=document.getElementById("fb-name-overlay");r&&r.remove(),t()}var He=null,ze=null;function Be(e,t){He=e,ze=t}function m(){ue(N),Le(m),Ie(m,He,ze),Ae(m)}function it(){let e=[],t=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,{acceptNode(n){let i=n.parentElement;return!i||i.tagName==="SCRIPT"||i.tagName==="STYLE"||i.closest("#fb-sidebar,#fb-toggle,#fb-popup,.fb-highlight")?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),r;for(;r=t.nextNode();)e.push(r);return e}function Ne(e,t,r){let n=e.replace(/[\s\u00A0]+/g," ");if(t>=n.length)return null;let i=0,a=0,d=-1,s=-1;for(;i<e.length;){if(a===t&&d===-1&&(d=i),a===r){s=i;break}a<n.length&&e[i]===n[a]?(i++,a++):i++}return s===-1&&a>=r&&(s=i),d===-1||s===-1||d>=s?null:[d,s]}function G(e,t,r,n,i){let a=e.textContent,d=document.createTextNode(a.substring(0,t)),s=document.createElement("mark");s.className="fb-highlight fb-highlight-"+n.priority,s.dataset.commentId=n.id,s.textContent=a.substring(t,r),s.addEventListener("click",()=>{i(n.id)});let l=document.createTextNode(a.substring(r));e.parentNode.insertBefore(d,e),e.parentNode.insertBefore(s,e),e.parentNode.insertBefore(l,e),e.parentNode.removeChild(e)}function L(e){document.querySelectorAll(".fb-highlight").forEach(t=>{let r=document.createTextNode(t.textContent||"");t.parentNode.replaceChild(r,t)}),document.body.normalize(),o.comments.filter(t=>!t.parentId&&!t.resolved&&t.quote&&t.quote.length>=2).forEach(t=>{let r=t.quote.replace(/[\s\u00A0]+/g," ").trim(),n=it(),i=!1;for(let a=0;a<n.length;a++){let d=n[a],s=d.textContent,l=s.indexOf(r);if(l!==-1){try{G(d,l,l+r.length,t,e),i=!0}catch{}break}let c=s.replace(/[\s\u00A0]+/g," ").indexOf(r);if(c===-1)continue;let f=Ne(s,c,c+r.length);if(f){try{G(d,f[0],f[1],t,e),i=!0}catch{}break}}if(!i){let a="",d=[];for(let p=0;p<n.length;p++){let c=a.length;a+=n[p].textContent,d.push({node:n[p],start:c,end:a.length})}let l=a.replace(/[\s\u00A0]+/g," ").indexOf(r);if(l!==-1){let p=Ne(a,l,l+r.length);if(p){let c=p[0],f=p[1];for(let u=d.length-1;u>=0;u--){let w=d[u];if(w.end<=c||w.start>=f)continue;let b=Math.max(0,c-w.start),g=Math.min(w.node.textContent.length,f-w.start);try{G(w.node,b,g,t,e)}catch{}}}}}})}var J={must:"rgba(239,68,68,0.4)",better:"rgba(245,158,11,0.4)",want:"rgba(34,197,94,0.4)"};function Oe(e){let t=document.querySelector('.fb-highlight[data-comment-id="'+e+'"]');if(!t)return;t.scrollIntoView({behavior:"smooth",block:"center"});let r=o.comments.find(a=>a.id===e),n=r&&J[r.priority]||J.want,i=t.style.backgroundColor;t.style.backgroundColor=n,t.style.transition="background-color 0.3s",setTimeout(()=>{t.style.backgroundColor=i},1500)}function De(e){let t=document.querySelector('.fb-pin-marker[data-pin-id="'+e+'"]');t&&(t.scrollIntoView({behavior:"smooth",block:"center"}),t.classList.add("fb-pin-flash"),setTimeout(()=>{t.classList.remove("fb-pin-flash")},1500))}function _e(e,t){let r=!o.sidebarOpen;r&&t(),setTimeout(()=>{let n=document.querySelector('.fb-card[data-id="'+e+'"]');n&&(n.scrollIntoView({behavior:"smooth",block:"center"}),n.classList.add("fb-focused"),setTimeout(()=>{n.classList.remove("fb-focused")},1500))},r?350:0)}function at(e){let t="",r="";try{let n=document.createRange();n.setStart(document.body,0),n.setEnd(e.startContainer,e.startOffset),t=n.toString().slice(-50).replace(/[\s\u00A0]+/g," ").trim();let i=document.createRange();i.setStart(e.endContainer,e.endOffset),i.setEnd(document.body,document.body.childNodes.length),r=i.toString().slice(0,50).replace(/[\s\u00A0]+/g," ").trim()}catch{}return{beforeText:t,afterText:r}}function qe(e,t){document.addEventListener("mouseup",r=>{if(r.target.closest("#fb-sidebar,#fb-toggle,#fb-popup,#fb-name-overlay"))return;let n=window.getSelection(),i=n?.toString().trim();if(!i||!n||n.rangeCount===0)return;let a=n.getRangeAt(0);o.selectedText=i.replace(/[\s\u00A0]+/g," ").substring(0,200),o.selectedRect=a.getBoundingClientRect(),o.selectedQuoteContext=at(a),o.popupContent="",e()}),document.addEventListener("mousedown",r=>{r.target.closest("#fb-popup")||o.selectedRect&&t()})}var I=null,_=[],q=null,z=()=>{};function je(e){z=e}function st(){return document.querySelector("main")||document.body}var dt="div,p,li,td,th,dt,dd,figcaption,blockquote,h1,h2,h3,h4,h5,h6",lt=["H1","H2","H3","H4","H5","H6"],ct="#fb-sidebar,#fb-toggle,#fb-pin-popup,.fb-pin-marker,.fb-pin-tooltip,.fb-voice-toast",pt=2,ft=120,$=600;function ut(){let e=st(),t=Array.from(e.querySelectorAll(dt)).filter(a=>(a.textContent||"").trim()&&!a.closest(ct)),r=new Set(t.filter(a=>!t.some(d=>d!==a&&a.contains(d)))),n=[],i="";return Array.from(e.querySelectorAll("*")).forEach(a=>{let d=lt.includes(a.tagName);if(d){let f=Fe(a.textContent||"");f&&(i=f)}if(!r.has(a)||n.length>=$)return;let s=Fe(a.textContent||"");if(s.length<pt||s.length>ft)return;let l=a.getBoundingClientRect();if(l.width<4||l.height<4)return;let{x:p,y:c}=ye(a);n.push({index:n.length,text:s,heading:d?"":i,isHeading:d,x:p,y:c,anchor:xe(a)})}),n}function Fe(e){return e.replace(/\s+/g," ").trim()}function Ye(){o.voiceProcessing||(o.voiceRecording?gt():bt())}async function bt(){if(o.voiceRecording||o.voiceProcessing)return;o.voiceError=null;try{q=await navigator.mediaDevices.getUserMedia({audio:!0})}catch{o.voiceError="\u30DE\u30A4\u30AF\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F",z();return}_=[];let e=Tt();I=new MediaRecorder(q,e?{mimeType:e}:void 0),I.ondataavailable=t=>{t.data.size>0&&_.push(t.data)},I.onstop=()=>{mt()},I.start(),o.voiceRecording=!0,z()}function gt(){!o.voiceRecording||!I||(I.stop(),o.voiceRecording=!1,o.voiceProcessing=!0,z())}async function mt(){q?.getTracks().forEach(r=>r.stop()),q=null;let e=new Blob(_,{type:I?.mimeType||"audio/webm"});_=[];let t=ut();if(t.length===0){o.voiceError="\u30D4\u30F3\u3092\u7F6E\u3051\u308B\u8981\u7D20\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F",o.voiceProcessing=!1,z();return}t.length>=$&&(o.voiceError=`\u30DA\u30FC\u30B8\u304C\u5927\u304D\u3044\u305F\u3081\u3001\u5148\u982D${$}\u7B87\u6240\u306E\u307F\u3092\u5BFE\u8C61\u306B\u3057\u3066\u3044\u307E\u3059`);try{let r=await Pt(e),n=await se(r,"audio/wav",t.map(i=>({index:i.index,text:i.text,heading:i.heading,isHeading:i.isHeading})));n.error?o.voiceError=n.error:xt(n.results||[],t)}catch{o.voiceError="\u97F3\u58F0\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F"}finally{o.voiceProcessing=!1,z()}}function xt(e,t){if(!Array.isArray(e)||e.length===0){o.voiceError="\u30D5\u30A3\u30FC\u30C9\u30D0\u30C3\u30AF\u3092\u805E\u304D\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u3082\u3046\u4E00\u5EA6\u304A\u8A66\u3057\u304F\u3060\u3055\u3044";return}let r=0;e.forEach(n=>{let i=t.find(a=>a.index===n.target_index);i||(i=yt(`${n.quote||""} ${n.comment||""}`,t)),i||(i=t[0],r++),i&&K(i.x,i.y,n.comment,Et(n.priority),i.anchor)}),r>0&&(o.voiceError=`${r}\u4EF6\u306F\u5834\u6240\u3092\u7279\u5B9A\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u5148\u982D\u306B\u7F6E\u3044\u3066\u3044\u307E\u3059\u3002\u30C9\u30E9\u30C3\u30B0\u3067\u79FB\u52D5\u3067\u304D\u307E\u3059\uFF09`),y()}var vt=.34,ht=4;function yt(e,t){let r=We(e);if(r.size===0)return;let n,i=vt;return t.forEach(a=>{if(a.text.length<ht)return;let d=wt(r,We(a.text));(d>i||n&&d===i&&a.text.length>n.text.length)&&(i=d,n=a)}),n}function We(e){let t=e.replace(/\s+/g,"").toLowerCase(),r=new Set;for(let n=0;n<t.length-1;n++)r.add(t.slice(n,n+2));return r}function wt(e,t){if(e.size===0||t.size===0)return 0;let r=0;return e.forEach(n=>{t.has(n)&&r++}),r/Math.min(e.size,t.size)}function Et(e){return e==="must"||e==="better"||e==="want"?e:"better"}function Tt(){let e=["audio/webm;codecs=opus","audio/webm","audio/ogg;codecs=opus","audio/ogg","audio/mp4"];for(let t of e)if(typeof MediaRecorder<"u"&&MediaRecorder.isTypeSupported?.(t))return t;return""}async function Pt(e){let t=await e.arrayBuffer(),r=window.AudioContext||window.webkitAudioContext,n=new r,i;try{i=await n.decodeAudioData(t)}finally{n.close()}let a=16e3,d=Math.max(1,Math.ceil(i.duration*a)),s=new OfflineAudioContext(1,d,a),l=s.createBufferSource();l.buffer=i,l.connect(s.destination),l.start();let p=await s.startRendering(),c=kt(p.getChannelData(0),a);return Ct(c)}function kt(e,t){let r=new ArrayBuffer(44+e.length*2),n=new DataView(r),i=(d,s)=>{for(let l=0;l<s.length;l++)n.setUint8(d+l,s.charCodeAt(l))};i(0,"RIFF"),n.setUint32(4,36+e.length*2,!0),i(8,"WAVE"),i(12,"fmt "),n.setUint32(16,16,!0),n.setUint16(20,1,!0),n.setUint16(22,1,!0),n.setUint32(24,t,!0),n.setUint32(28,t*2,!0),n.setUint16(32,2,!0),n.setUint16(34,16,!0),i(36,"data"),n.setUint32(40,e.length*2,!0);let a=44;for(let d=0;d<e.length;d++){let s=Math.max(-1,Math.min(1,e[d]));n.setInt16(a,s<0?s*32768:s*32767,!0),a+=2}return r}function Ct(e){let t="",r=new Uint8Array(e),n=32768;for(let i=0;i<r.length;i+=n)t+=String.fromCharCode(...r.subarray(i,i+n));return btoa(t)}var F=document.currentScript,St=F?F.src.replace(/\/widget\.js.*$/,""):"",Lt=F&&F.dataset.token||"";ae(St,Lt);function ne(){return E("GET",{slug:M}).then(e=>{Array.isArray(e)&&(o.comments=e),m(),y(),L(R)}).catch(()=>{m(),y(),L(R)})}function oe(){o.selectedText="",o.selectedRect=null,o.popupContent="",o.popupPriority="must",m()}function Mt(e){if(!o.selectedText)return;let t={id:B(),author:o.username||"\u533F\u540D",type:"comment",quote:o.selectedText,quoteContext:o.selectedQuoteContext,content:o.popupContent.trim(),priority:e,parentId:null,pageUrl:window.location.href,projectSlug:M,timestamp:Date.now(),resolved:!1,resolvedBy:null,resolvedAt:null,updatedAt:null};o.comments.push(t),oe(),L(R),E("POST",t).then(ne)}function It(e){let t=o.comments.find(n=>n.id===e);if(!t)return;let r=!t.resolved;t.resolved=r,t.resolvedBy=r?o.username:null,t.resolvedAt=r?Date.now():null,m(),y(),L(R),E("PUT",{id:e,action:"resolve",resolved:r,resolvedBy:t.resolvedBy,resolvedAt:t.resolvedAt})}function Rt(e){let t=o.comments.find(r=>r.id===e);!t||t.author!==o.username||(t.priority=re[t.priority]||"must",m(),y(),L(R),E("PUT",{id:e,action:"cyclePriority",priority:t.priority}))}function At(e){o.comments=o.comments.filter(t=>t.id!==e&&t.parentId!==e),m(),y(),L(R),E("DELETE",{id:e})}function Ht(e){o.comments=o.comments.filter(t=>t.id!==e),m(),E("DELETE",{id:e})}function zt(e){let t=o.comments.find(r=>r.id===e);t&&(t.content=o.editContent,t.priority=o.editPriority,o.editingId=null,m(),y(),L(R),E("PUT",{id:e,action:"edit",content:t.content,priority:t.priority}))}function Bt(e){if(!o.replyText.trim()||!o.username)return;let t={id:B(),author:o.username,type:"comment",quote:"",quoteContext:{beforeText:"",afterText:""},content:o.replyText.trim(),priority:"want",parentId:e,pageUrl:window.location.href,projectSlug:M,timestamp:Date.now(),resolved:!1,resolvedBy:null,resolvedAt:null,updatedAt:null};o.comments.push(t),o.replyingTo=null,o.replyText="",m(),E("POST",t)}function Nt(){if(o.nameInput.trim()&&o.nameInput.trim()!==o.username){let e=o.username;o.username=o.nameInput.trim(),localStorage.setItem(H,o.username),E("PUT",{id:"_rename",action:"rename",author:o.username,oldAuthor:e,projectSlug:M}).then(ne)}o.editingName=!1,m()}function R(e){_e(e,N)}function Ot(){o.pinMode?V():we(),m(),y()}function Dt(){Ye()}var ee=null;function _t(e){let t=document.getElementById("fb-voice-toast");t||(t=document.createElement("div"),t.id="fb-voice-toast",t.className="fb-voice-toast",document.body.appendChild(t)),t.textContent=e,t.style.right=(o.sidebarOpen?o.sidebarWidth+16:16)+"px",requestAnimationFrame(()=>t.classList.add("show")),ee&&clearTimeout(ee),ee=setTimeout(()=>t.classList.remove("show"),6e3)}Be(oe,Mt);pe(Ot);fe(Dt);je(()=>{m(),o.voiceError&&(_t(o.voiceError),o.voiceError=null)});Me({toggleSidebar:N,cyclePriority:Rt,scrollToQuote:Oe,scrollToPin:De,resolveComment:It,deleteComment:At,deleteReply:Ht,saveEdit:zt,submitReply:Bt,finishNameEdit:Nt});var qt="#fb-sidebar,#fb-toggle,#fb-pin-popup,.fb-pin-marker,.fb-pin-tooltip,.fb-pin-delete,.fb-popup",Ft=6;function Ue(){Te(),o.editingPinId=null;let e=document.getElementById("fb-pin-popup");e&&e.classList.remove("show"),m()}function Wt(){let e=0,t=0;document.addEventListener("mousedown",r=>{e=r.clientX,t=r.clientY},!0),document.addEventListener("click",r=>{let n=!!r.target.closest(qt);if(!o.pinMode){o.pinPopupPos&&!n&&Ue();return}if(n)return;let i=window.getSelection();i&&i.toString().trim()||Math.hypot(r.clientX-e,r.clientY-t)>=Ft||(r.preventDefault(),r.stopPropagation(),Ee(r),o.pinPopupPos&&Q(m),m())},!0),document.addEventListener("keydown",r=>{r.key==="Escape"&&(o.pinPopupPos?Ue():o.pinMode&&(V(),m(),y()))})}var te=null;function jt(){window.addEventListener("resize",()=>{te&&clearTimeout(te),te=setTimeout(()=>{y()},100)})}function Xe(){de(),m(),qe(m,oe),Wt(),Pe(m),jt(),ne()}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",Xe):Xe();})();