cc-viewer 1.7.6 → 1.7.8
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/README.md +20 -1
- package/cli.js +41 -31
- package/dist/assets/App-Bs6-c4Ov.css +1 -0
- package/dist/assets/App-DtsIVPu6.js +2 -0
- package/dist/assets/{MdxEditorPanel-BQ5MgI4D.js → MdxEditorPanel-DWPAEnpm.js} +1 -1
- package/dist/assets/Mobile-DHwMZG4N.js +1 -0
- package/dist/assets/ProxyStatsModal-D9lTz0-T.js +1 -0
- package/dist/assets/ProxyStatsModal-Dz5GuoUa.css +1 -0
- package/dist/assets/abnfDiagram-VRR7QNED-9ax220Vv.js +1 -0
- package/dist/assets/arc-Cshrl52z.js +1 -0
- package/dist/assets/architectureDiagram-ZJ3FMSHR-QtERolgF.js +1 -0
- package/dist/assets/blockDiagram-677ZJIJ3-BaCd4R0Z.js +1 -0
- package/dist/assets/{c4Diagram-AHTNJAMY-C7JB9PqP.js → c4Diagram-LMCZKHZV-C2QvkF2i.js} +1 -1
- package/dist/assets/{channel-BnzX9zBS.js → channel-ClOiNc35.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-CNEAHnZV.js → chunk-2Q5K7J3B-BvZ7-Ft4.js} +1 -1
- package/dist/assets/{chunk-YZCP3GAM-BOlts_Dm.js → chunk-32BRIVSS-Dg3PlJIt.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-CGL9Lo51.js → chunk-5VM5RSS4-CMJWLQsQ.js} +1 -1
- package/dist/assets/chunk-EX3LRPZG-CmoC-M2G.js +1 -0
- package/dist/assets/{chunk-4BX2VUAB-dVKiUtqe.js → chunk-JWPE2WC7-D5RR93-U.js} +1 -1
- package/dist/assets/chunk-MOJQB5TN-JXgBLjCY.js +1 -0
- package/dist/assets/chunk-RYQCIY6F-gT-v276m.js +1 -0
- package/dist/assets/chunk-V7JOEXUC-Cl-E_fxl.js +1 -0
- package/dist/assets/{chunk-EDXVE4YY-sk9g7szp.js → chunk-VR4S4FIN-BR0zG1Ep.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-BZuKI6JQ.js → chunk-XXDRQBXY-Blw-tThR.js} +1 -1
- package/dist/assets/classDiagram-OUVF2IWQ-ClkcbuHu.js +1 -0
- package/dist/assets/classDiagram-v2-EOCWNBFH-ClkcbuHu.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-DH4_YiGi.js → cose-bilkent-JH36ORCC-BnDDyyuN.js} +1 -1
- package/dist/assets/cynefin-VYW2F7L2-Ch8_Ihra.js +15 -0
- package/dist/assets/cynefinDiagram-TSTJHNR4-CuX_xTSU.js +1 -0
- package/dist/assets/cytoscape.esm-D0POlJZ1.js +9 -0
- package/dist/assets/dagre-VKFMJZFB-DHDO7DUw.js +1 -0
- package/dist/assets/diagram-FQU43EPY-CxDVpL25.js +1 -0
- package/dist/assets/diagram-G47NLZAW-DHX7L6pT.js +1 -0
- package/dist/assets/diagram-NH7WQ7WH-HlwtIdWA.js +1 -0
- package/dist/assets/diagram-OA4YK3LP-BnTSu9CG.js +1 -0
- package/dist/assets/diagram-WEI45ONY-C712tBJk.js +1 -0
- package/dist/assets/ebnfDiagram-CCIWWBDH-DzMcH3cz.js +1 -0
- package/dist/assets/erDiagram-Q63AITRT-0fyhQG92.js +1 -0
- package/dist/assets/flowDiagram-23GEKE2U-lgfs10IO.js +1 -0
- package/dist/assets/{ganttDiagram-T4ZO3ILL-BL_XQ958.js → ganttDiagram-NO4QXBWP-_4nnZ3ta.js} +1 -1
- package/dist/assets/gitGraphDiagram-IHSO6WYX-DrgEKJkZ.js +1 -0
- package/dist/assets/graph-CnJdn47S.js +1 -0
- package/dist/assets/{index-CzPHj3iF.js → index-7VeS_xrl.js} +1 -1
- package/dist/assets/{index-BgW_nP_0.js → index-BJ9Xm7_G.js} +1 -1
- package/dist/assets/{index-B3-JUU7J.js → index-BiYKFU6w.js} +1 -1
- package/dist/assets/index-By8aqIvN.js +2 -0
- package/dist/assets/{index-Do5xNTOT.js → index-CBix0zSu.js} +1 -1
- package/dist/assets/{index-DDlAMOiV.js → index-CPAQ767L.js} +1 -1
- package/dist/assets/{index-LjVy-Pzg.js → index-DuUUHxox.js} +1 -1
- package/dist/assets/{index-vImWXiMM.js → index-_pxC-jz_.js} +1 -1
- package/dist/assets/infoDiagram-FWYZ7A6U-Cki8RIbq.js +1 -0
- package/dist/assets/{ishikawaDiagram-UXIWVN3A-D3odpv9_.js → ishikawaDiagram-FXEZZL3T-DHHu_UGe.js} +1 -1
- package/dist/assets/{journeyDiagram-VCZTEJTY-Dj3NaOWF.js → journeyDiagram-5HDEW3XC-Bx06Sp3y.js} +1 -1
- package/dist/assets/{jszip.min-GmVScWAV.js → jszip.min-Bn5J9HN-.js} +1 -1
- package/dist/assets/{kanban-definition-6JOO6SKY-GKjJaLwD.js → kanban-definition-HUTT4EX6-BuEuKkQp.js} +1 -1
- package/dist/assets/layout-CCUE9ZRw.js +1 -0
- package/dist/assets/{linear-CLk9nvqn.js → linear-BJRZNsdX.js} +1 -1
- package/dist/assets/map-DQeg2hXV.js +1 -0
- package/dist/assets/mermaid.core-DH-sQJgr.js +7 -0
- package/dist/assets/{mindmap-definition-QFDTVHPH-DgDD6Jbu.js → mindmap-definition-LN4V7U3C-DYtgJ2f4.js} +1 -1
- package/dist/assets/pegDiagram-2B236MQR-BVN6OIEN.js +1 -0
- package/dist/assets/pieDiagram-ENE6RG2P-mVeQtQTD.js +1 -0
- package/dist/assets/quadrantDiagram-ABIIQ3AL-Croqf1qH.js +1 -0
- package/dist/assets/railroadDiagram-RFXS5EU6-jkGuNfMY.js +1 -0
- package/dist/assets/{requirementDiagram-MS252O5E-CtBOCtbk.js → requirementDiagram-TGXJPOKE-Cwb2FU3N.js} +1 -1
- package/dist/assets/sankeyDiagram-HTMAVEWB-D-HWOuX0.js +1 -0
- package/dist/assets/seqResourceLoaders-C-pxCjNh.js +2 -0
- package/dist/assets/sequenceDiagram-DBY2YBRQ-Bh3XgPxy.js +1 -0
- package/dist/assets/sizeCapture-X5ZJPWSS-C_acEkFf.js +1 -0
- package/dist/assets/stateDiagram-2N3HPSRC-CmbRj6R7.js +1 -0
- package/dist/assets/stateDiagram-v2-6OUMAXLB-ClrX-Ofc.js +1 -0
- package/dist/assets/swimlanes-5IMT3BWC-CIfoRrLM.js +2 -0
- package/dist/assets/swimlanesDiagram-G3AALYLV-DZuW0-dQ.js +1 -0
- package/dist/assets/{timeline-definition-GMOUNBTQ-B5cPasy_.js → timeline-definition-FHXFAJF6-CK8MkCLz.js} +1 -1
- package/dist/assets/vendor-antd-DNUTLr77.js +17 -0
- package/dist/assets/{vendor-codemirror-_NbrtdQc.js → vendor-codemirror-6ck0hLRU.js} +1 -1
- package/dist/assets/vendor-markdown-DBlfs4dR.js +3 -0
- package/dist/assets/vendor-mdxeditor-DT0rad22.js +2 -0
- package/dist/assets/vendor-qrcode-CPmWG6hm.js +6 -0
- package/dist/assets/vendor-virtuoso-YwK7i7L6.js +1 -0
- package/dist/assets/{vennDiagram-DHZGUBPP-a_ybZDST.js → vennDiagram-L72KCM5P-CWA2Gdi_.js} +1 -1
- package/dist/assets/wardleyDiagram-EHGQE667-U22kgZ8v.js +1 -0
- package/dist/assets/xychartDiagram-FW5EYKEG-BiGsMUKC.js +1 -0
- package/dist/index.html +4 -4
- package/findcc.js +281 -5
- package/package.json +1 -1
- package/server/lib/proxy-stats.js +75 -32
- package/server/pty-manager.js +3 -8
- package/server/routes/preferences.js +71 -1
- package/server/system-prompt-templates/presets/index.json +8 -0
- package/server/system-prompt-templates/presets/kimi-k3.md +68 -0
- package/src/utils/helpers.js +6 -1
- package/dist/assets/App-3VM471BO.js +0 -2
- package/dist/assets/App-CCDFxj11.css +0 -1
- package/dist/assets/Mobile-wwcXmnrU.js +0 -1
- package/dist/assets/UnifiedProxyRetryPage-BpcKIn9N.js +0 -1
- package/dist/assets/UnifiedProxyRetryPage-CFz4vOH5.css +0 -1
- package/dist/assets/_baseUniq-yiNE5Ckw.js +0 -1
- package/dist/assets/arc-M-eBYYbN.js +0 -1
- package/dist/assets/architectureDiagram-Q4EWVU46-CtweeLKi.js +0 -1
- package/dist/assets/blockDiagram-DXYQGD6D-DCVQ-go_.js +0 -1
- package/dist/assets/chunk-4TB4RGXK-CQjD9-fD.js +0 -1
- package/dist/assets/chunk-OYMX7WX6-DaN0AdQD.js +0 -1
- package/dist/assets/classDiagram-6PBFFD2Q-CumOMdO7.js +0 -1
- package/dist/assets/classDiagram-v2-HSJHXN6E-CumOMdO7.js +0 -1
- package/dist/assets/clone-C3SZDzs1.js +0 -1
- package/dist/assets/cytoscape.esm-CT1mZavR.js +0 -9
- package/dist/assets/dagre-KV5264BT-RqusStYI.js +0 -1
- package/dist/assets/diagram-5BDNPKRD-8haVbBnt.js +0 -1
- package/dist/assets/diagram-G4DWMVQ6-CsrJNUhT.js +0 -1
- package/dist/assets/diagram-MMDJMWI5-1luPOM38.js +0 -1
- package/dist/assets/diagram-TYMM5635-Dad1XR3W.js +0 -1
- package/dist/assets/erDiagram-SMLLAGMA-Br6-kbp9.js +0 -1
- package/dist/assets/flowDiagram-DWJPFMVM-DuX1mbA7.js +0 -1
- package/dist/assets/gitGraphDiagram-UUTBAWPF-DzvW5FEs.js +0 -1
- package/dist/assets/graph-CbUmu0Oe.js +0 -1
- package/dist/assets/index-BjNLFJ0z.js +0 -2
- package/dist/assets/infoDiagram-42DDH7IO-DGsgRji7.js +0 -1
- package/dist/assets/layout-Bhk66H0F.js +0 -1
- package/dist/assets/mermaid.core-DH-GfeNS.js +0 -7
- package/dist/assets/min-DQftOGfo.js +0 -1
- package/dist/assets/pieDiagram-DEJITSTG-jy1yFaxA.js +0 -1
- package/dist/assets/quadrantDiagram-34T5L4WZ-BdvMwrSD.js +0 -1
- package/dist/assets/sankeyDiagram-XADWPNL6-DEFlQp-h.js +0 -1
- package/dist/assets/seqResourceLoaders-CDRtUSxI.js +0 -2
- package/dist/assets/sequenceDiagram-FGHM5R23-0F2R8Ky0.js +0 -1
- package/dist/assets/stateDiagram-FHFEXIEX-D4xOwcSW.js +0 -1
- package/dist/assets/stateDiagram-v2-QKLJ7IA2-DSf_BSF8.js +0 -1
- package/dist/assets/vendor-antd-DeqwrDxf.js +0 -17
- package/dist/assets/vendor-markdown-DOJHsAxX.js +0 -3
- package/dist/assets/vendor-mdxeditor-DG0Nyxw5.js +0 -2
- package/dist/assets/vendor-qrcode-B3HN--HO.js +0 -6
- package/dist/assets/vendor-virtuoso-BvrezPQx.js +0 -1
- package/dist/assets/wardley-RL74JXVD-CKla3KF8.js +0 -1
- package/dist/assets/wardleyDiagram-NUSXRM2D-BKke2aih.js +0 -1
- package/dist/assets/xychartDiagram-5P7HB3ND-CozWtcdf.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j as jsxRuntimeExports}from"./vendor-codemirror-_NbrtdQc.js";import{a as reactExports,s as staticMethods}from"./vendor-antd-DeqwrDxf.js";import{M as MDXEditor,h as headingsPlugin,l as listsPlugin,q as quotePlugin,a as linkPlugin,b as linkDialogPlugin,i as imagePlugin,t as tablePlugin,c as codeBlockPlugin,d as codeMirrorPlugin,e as thematicBreakPlugin,m as markdownShortcutPlugin,f as diffSourcePlugin,g as toolbarPlugin,D as DiffSourceToggleWrapper,U as UndoRedo,S as Separator,B as BoldItalicUnderlineToggles,C as CodeToggle,j as BlockTypeSelect,L as ListsToggle,k as CreateLink,I as InsertImage,n as InsertTable,o as InsertCodeBlock,p as InsertThematicBreak}from"./vendor-mdxeditor-DG0Nyxw5.js";import{g as getLang,t}from"./index-BjNLFJ0z.js";const styles={container:"_container_odc2w_25",light:"_light_odc2w_3",contentEditable:"_contentEditable_odc2w_16"},PASSTHROUGH_TYPES=new Set(["image/png","image/gif","image/webp","image/svg+xml"]);function readAsDataURL(file){return new Promise((resolve,reject)=>{const reader=new FileReader;reader.onload=()=>resolve(reader.result),reader.onerror=()=>reject(new Error("FileReader failed")),reader.readAsDataURL(file)})}async function compressImageToDataURL(file,opts={}){if(!(file instanceof Blob))throw new Error("compressImageToDataURL: input must be a File or Blob");if(!file.type||!file.type.startsWith("image/"))throw new Error(`Unsupported file type: ${file.type||"unknown"}`);if(file.size>10485760)throw new Error(`Image too large: ${(file.size/1024/1024).toFixed(1)}MB > 10MB limit`);const maxEdge=opts.maxEdge??2e3,quality=opts.quality??.85;if(PASSTHROUGH_TYPES.has(file.type))return await readAsDataURL(file);const originalDataURL=await readAsDataURL(file),img=await(src=originalDataURL,new Promise((resolve,reject)=>{const img=new Image;img.onload=()=>resolve(img),img.onerror=()=>reject(new Error("Image decode failed")),img.src=src}));var src;const longestEdge=Math.max(img.naturalWidth,img.naturalHeight),scale=longestEdge>maxEdge?maxEdge/longestEdge:1,targetW=Math.max(1,Math.round(img.naturalWidth*scale)),targetH=Math.max(1,Math.round(img.naturalHeight*scale)),canvas=document.createElement("canvas");canvas.width=targetW,canvas.height=targetH;const ctx=canvas.getContext("2d");if(!ctx)return originalDataURL;let compressed;ctx.drawImage(img,0,0,targetW,targetH);try{compressed=canvas.toDataURL("image/jpeg",quality)}catch{return originalDataURL}return!compressed||"data:,"===compressed||compressed.length>=originalDataURL.length?originalDataURL:compressed}const TRANSLATIONS={zh:{contentArea:{editableMarkdown:"可编辑 Markdown"},dialog:{close:"关闭"},dialogControls:{cancel:"取消",save:"保存"},createLink:{text:"链接文字",textTooltip:"链接显示的文字",title:"标题",titleTooltip:"链接的 title 属性(鼠标悬停时显示)",url:"链接地址",urlPlaceholder:"请输入链接地址",saveTooltip:"保存链接",cancelTooltip:"取消编辑"},linkPreview:{open:"在新窗口打开 {{url}}",edit:"编辑链接",copyToClipboard:"复制链接到剪贴板",copied:"已复制",remove:"移除链接"},uploadImage:{dialogTitle:"插入图片",uploadInstructions:"从本地选择图片上传",addViaUrlInstructions:"或输入图片地址",addViaUrlInstructionsNoUpload:"请输入图片地址",autoCompletePlaceholder:"搜索已有图片",alt:"替代文字",title:"标题",width:"宽度",height:"高度"},imageEditor:{editImage:"编辑图片",deleteImage:"删除图片"},table:{columnMenu:"列菜单",rowMenu:"行菜单",textAlignment:"文字对齐",alignLeft:"左对齐",alignCenter:"居中",alignRight:"右对齐",insertColumnLeft:"在左侧插入列",insertColumnRight:"在右侧插入列",insertRowAbove:"在上方插入行",insertRowBelow:"在下方插入行",deleteColumn:"删除列",deleteRow:"删除行",deleteTable:"删除表格"},codeBlock:{language:"语言",inlineLanguage:"行内语言",selectLanguage:"选择语言"},codeblock:{delete:"删除代码块"},toolbar:{undo:"撤销 {{shortcut}}",redo:"重做 {{shortcut}}",bold:"加粗",italic:"斜体",underline:"下划线",removeBold:"取消加粗",removeItalic:"取消斜体",removeUnderline:"取消下划线",inlineCode:"行内代码",removeInlineCode:"取消行内代码",bulletedList:"无序列表",numberedList:"有序列表",checkList:"任务列表",toggleGroup:"列表样式",link:"插入链接",image:"插入图片",table:"插入表格",codeBlock:"插入代码块",thematicBreak:"插入分隔线",richText:"富文本",diffMode:"对比视图",source:"源代码",blockTypeSelect:{placeholder:"块类型",selectBlockTypeTooltip:"选择块类型"},blockTypes:{paragraph:"段落",heading:"标题 {{level}}",quote:"引用"}}},"zh-TW":{contentArea:{editableMarkdown:"可編輯 Markdown"},dialog:{close:"關閉"},dialogControls:{cancel:"取消",save:"儲存"},createLink:{text:"連結文字",textTooltip:"連結顯示的文字",title:"標題",titleTooltip:"連結的 title 屬性(滑鼠懸停時顯示)",url:"連結網址",urlPlaceholder:"請輸入連結網址",saveTooltip:"儲存連結",cancelTooltip:"取消編輯"},linkPreview:{open:"在新視窗開啟 {{url}}",edit:"編輯連結",copyToClipboard:"複製連結至剪貼簿",copied:"已複製",remove:"移除連結"},uploadImage:{dialogTitle:"插入圖片",uploadInstructions:"從本地選擇圖片上傳",addViaUrlInstructions:"或輸入圖片網址",addViaUrlInstructionsNoUpload:"請輸入圖片網址",autoCompletePlaceholder:"搜尋現有圖片",alt:"替代文字",title:"標題",width:"寬度",height:"高度"},imageEditor:{editImage:"編輯圖片",deleteImage:"刪除圖片"},table:{columnMenu:"欄選單",rowMenu:"列選單",textAlignment:"文字對齊",alignLeft:"靠左",alignCenter:"置中",alignRight:"靠右",insertColumnLeft:"在左側插入欄",insertColumnRight:"在右側插入欄",insertRowAbove:"在上方插入列",insertRowBelow:"在下方插入列",deleteColumn:"刪除欄",deleteRow:"刪除列",deleteTable:"刪除表格"},codeBlock:{language:"語言",inlineLanguage:"行內語言",selectLanguage:"選擇語言"},codeblock:{delete:"刪除程式碼區塊"},toolbar:{undo:"復原 {{shortcut}}",redo:"重做 {{shortcut}}",bold:"粗體",italic:"斜體",underline:"底線",removeBold:"取消粗體",removeItalic:"取消斜體",removeUnderline:"取消底線",inlineCode:"行內程式碼",removeInlineCode:"取消行內程式碼",bulletedList:"項目符號清單",numberedList:"編號清單",checkList:"工作清單",toggleGroup:"清單樣式",link:"插入連結",image:"插入圖片",table:"插入表格",codeBlock:"插入程式碼區塊",thematicBreak:"插入分隔線",richText:"所見即所得",diffMode:"比對檢視",source:"原始碼",blockTypeSelect:{placeholder:"區塊類型",selectBlockTypeTooltip:"選擇區塊類型"},blockTypes:{paragraph:"段落",heading:"標題 {{level}}",quote:"引用"}}},ja:{toolbar:{undo:"元に戻す {{shortcut}}",redo:"やり直し {{shortcut}}",bold:"太字",italic:"イタリック",underline:"下線",removeBold:"太字を解除",removeItalic:"イタリックを解除",removeUnderline:"下線を解除",inlineCode:"インラインコード",removeInlineCode:"インラインコードを解除",bulletedList:"箇条書き",numberedList:"番号付きリスト",checkList:"チェックリスト",toggleGroup:"リストスタイル",link:"リンクを挿入",image:"画像を挿入",table:"表を挿入",codeBlock:"コードブロックを挿入",thematicBreak:"区切り線を挿入",richText:"リッチテキスト",diffMode:"差分表示",source:"ソース",blockTypeSelect:{placeholder:"ブロック種別",selectBlockTypeTooltip:"ブロック種別を選択"},blockTypes:{paragraph:"段落",heading:"見出し {{level}}",quote:"引用"}}},ko:{toolbar:{undo:"실행 취소 {{shortcut}}",redo:"다시 실행 {{shortcut}}",bold:"굵게",italic:"기울임",underline:"밑줄",removeBold:"굵게 해제",removeItalic:"기울임 해제",removeUnderline:"밑줄 해제",inlineCode:"인라인 코드",removeInlineCode:"인라인 코드 해제",bulletedList:"글머리 기호 목록",numberedList:"번호 매기기 목록",checkList:"체크리스트",toggleGroup:"목록 스타일",link:"링크 삽입",image:"이미지 삽입",table:"표 삽입",codeBlock:"코드 블록 삽입",thematicBreak:"구분선 삽입",richText:"서식있는 텍스트",diffMode:"비교 보기",source:"소스",blockTypeSelect:{placeholder:"블록 유형",selectBlockTypeTooltip:"블록 유형 선택"},blockTypes:{paragraph:"단락",heading:"제목 {{level}}",quote:"인용"}}},de:{toolbar:{undo:"Rückgängig {{shortcut}}",redo:"Wiederherstellen {{shortcut}}",bold:"Fett",italic:"Kursiv",underline:"Unterstrichen",removeBold:"Fett entfernen",removeItalic:"Kursiv entfernen",removeUnderline:"Unterstrichen entfernen",inlineCode:"Inline-Code",removeInlineCode:"Inline-Code entfernen",bulletedList:"Aufzählungsliste",numberedList:"Nummerierte Liste",checkList:"Aufgabenliste",toggleGroup:"Listenstil",link:"Link einfügen",image:"Bild einfügen",table:"Tabelle einfügen",codeBlock:"Codeblock einfügen",thematicBreak:"Trennlinie einfügen",richText:"Rich-Text",diffMode:"Diff-Ansicht",source:"Quelltext",blockTypeSelect:{placeholder:"Blocktyp",selectBlockTypeTooltip:"Blocktyp auswählen"},blockTypes:{paragraph:"Absatz",heading:"Überschrift {{level}}",quote:"Zitat"}}},es:{toolbar:{undo:"Deshacer {{shortcut}}",redo:"Rehacer {{shortcut}}",bold:"Negrita",italic:"Cursiva",underline:"Subrayado",removeBold:"Quitar negrita",removeItalic:"Quitar cursiva",removeUnderline:"Quitar subrayado",inlineCode:"Código en línea",removeInlineCode:"Quitar código en línea",bulletedList:"Lista con viñetas",numberedList:"Lista numerada",checkList:"Lista de tareas",toggleGroup:"Estilo de lista",link:"Insertar enlace",image:"Insertar imagen",table:"Insertar tabla",codeBlock:"Insertar bloque de código",thematicBreak:"Insertar separador",richText:"Texto enriquecido",diffMode:"Vista comparativa",source:"Código fuente",blockTypeSelect:{placeholder:"Tipo de bloque",selectBlockTypeTooltip:"Seleccionar tipo de bloque"},blockTypes:{paragraph:"Párrafo",heading:"Encabezado {{level}}",quote:"Cita"}}},fr:{toolbar:{undo:"Annuler {{shortcut}}",redo:"Rétablir {{shortcut}}",bold:"Gras",italic:"Italique",underline:"Souligné",removeBold:"Retirer le gras",removeItalic:"Retirer l’italique",removeUnderline:"Retirer le soulignement",inlineCode:"Code en ligne",removeInlineCode:"Retirer le code en ligne",bulletedList:"Liste à puces",numberedList:"Liste numérotée",checkList:"Liste de tâches",toggleGroup:"Style de liste",link:"Insérer un lien",image:"Insérer une image",table:"Insérer un tableau",codeBlock:"Insérer un bloc de code",thematicBreak:"Insérer un séparateur",richText:"Texte enrichi",diffMode:"Vue comparative",source:"Source",blockTypeSelect:{placeholder:"Type de bloc",selectBlockTypeTooltip:"Choisir le type de bloc"},blockTypes:{paragraph:"Paragraphe",heading:"Titre {{level}}",quote:"Citation"}}},it:{toolbar:{undo:"Annulla {{shortcut}}",redo:"Ripristina {{shortcut}}",bold:"Grassetto",italic:"Corsivo",underline:"Sottolineato",removeBold:"Rimuovi grassetto",removeItalic:"Rimuovi corsivo",removeUnderline:"Rimuovi sottolineato",inlineCode:"Codice in linea",removeInlineCode:"Rimuovi codice in linea",bulletedList:"Elenco puntato",numberedList:"Elenco numerato",checkList:"Elenco di attività",toggleGroup:"Stile elenco",link:"Inserisci link",image:"Inserisci immagine",table:"Inserisci tabella",codeBlock:"Inserisci blocco di codice",thematicBreak:"Inserisci separatore",richText:"Testo formattato",diffMode:"Vista differenze",source:"Sorgente",blockTypeSelect:{placeholder:"Tipo di blocco",selectBlockTypeTooltip:"Seleziona tipo di blocco"},blockTypes:{paragraph:"Paragrafo",heading:"Titolo {{level}}",quote:"Citazione"}}},da:{toolbar:{undo:"Fortryd {{shortcut}}",redo:"Gentag {{shortcut}}",bold:"Fed",italic:"Kursiv",underline:"Understreget",removeBold:"Fjern fed",removeItalic:"Fjern kursiv",removeUnderline:"Fjern understregning",inlineCode:"Indlejret kode",removeInlineCode:"Fjern indlejret kode",bulletedList:"Punktopstilling",numberedList:"Nummereret liste",checkList:"Tjekliste",toggleGroup:"Listestil",link:"Indsæt link",image:"Indsæt billede",table:"Indsæt tabel",codeBlock:"Indsæt kodeblok",thematicBreak:"Indsæt skillelinje",richText:"Formateret tekst",diffMode:"Diff-visning",source:"Kilde",blockTypeSelect:{placeholder:"Bloktype",selectBlockTypeTooltip:"Vælg bloktype"},blockTypes:{paragraph:"Afsnit",heading:"Overskrift {{level}}",quote:"Citat"}}},pl:{toolbar:{undo:"Cofnij {{shortcut}}",redo:"Ponów {{shortcut}}",bold:"Pogrubienie",italic:"Kursywa",underline:"Podkreślenie",removeBold:"Usuń pogrubienie",removeItalic:"Usuń kursywę",removeUnderline:"Usuń podkreślenie",inlineCode:"Kod w linii",removeInlineCode:"Usuń kod w linii",bulletedList:"Lista punktowana",numberedList:"Lista numerowana",checkList:"Lista zadań",toggleGroup:"Styl listy",link:"Wstaw link",image:"Wstaw obraz",table:"Wstaw tabelę",codeBlock:"Wstaw blok kodu",thematicBreak:"Wstaw separator",richText:"Tekst sformatowany",diffMode:"Widok porównania",source:"Źródło",blockTypeSelect:{placeholder:"Typ bloku",selectBlockTypeTooltip:"Wybierz typ bloku"},blockTypes:{paragraph:"Akapit",heading:"Nagłówek {{level}}",quote:"Cytat"}}},ru:{toolbar:{undo:"Отменить {{shortcut}}",redo:"Повторить {{shortcut}}",bold:"Полужирный",italic:"Курсив",underline:"Подчёркнутый",removeBold:"Убрать полужирный",removeItalic:"Убрать курсив",removeUnderline:"Убрать подчёркивание",inlineCode:"Встроенный код",removeInlineCode:"Убрать встроенный код",bulletedList:"Маркированный список",numberedList:"Нумерованный список",checkList:"Список задач",toggleGroup:"Стиль списка",link:"Вставить ссылку",image:"Вставить изображение",table:"Вставить таблицу",codeBlock:"Вставить блок кода",thematicBreak:"Вставить разделитель",richText:"Форматированный текст",diffMode:"Вид сравнения",source:"Исходный код",blockTypeSelect:{placeholder:"Тип блока",selectBlockTypeTooltip:"Выбрать тип блока"},blockTypes:{paragraph:"Абзац",heading:"Заголовок {{level}}",quote:"Цитата"}}},ar:{toolbar:{undo:"تراجع {{shortcut}}",redo:"إعادة {{shortcut}}",bold:"عريض",italic:"مائل",underline:"تسطير",removeBold:"إزالة العريض",removeItalic:"إزالة المائل",removeUnderline:"إزالة التسطير",inlineCode:"كود مضمن",removeInlineCode:"إزالة الكود المضمن",bulletedList:"قائمة نقطية",numberedList:"قائمة مرقمة",checkList:"قائمة مهام",toggleGroup:"نمط القائمة",link:"إدراج رابط",image:"إدراج صورة",table:"إدراج جدول",codeBlock:"إدراج كتلة كود",thematicBreak:"إدراج فاصل",richText:"نص منسق",diffMode:"عرض المقارنة",source:"المصدر",blockTypeSelect:{placeholder:"نوع الكتلة",selectBlockTypeTooltip:"اختر نوع الكتلة"},blockTypes:{paragraph:"فقرة",heading:"عنوان {{level}}",quote:"اقتباس"}}},no:{toolbar:{undo:"Angre {{shortcut}}",redo:"Gjør om {{shortcut}}",bold:"Fet",italic:"Kursiv",underline:"Understreket",removeBold:"Fjern fet",removeItalic:"Fjern kursiv",removeUnderline:"Fjern understreking",inlineCode:"Inline-kode",removeInlineCode:"Fjern inline-kode",bulletedList:"Punktliste",numberedList:"Nummerert liste",checkList:"Sjekkliste",toggleGroup:"Listestil",link:"Sett inn lenke",image:"Sett inn bilde",table:"Sett inn tabell",codeBlock:"Sett inn kodeblokk",thematicBreak:"Sett inn skillelinje",richText:"Formatert tekst",diffMode:"Diff-visning",source:"Kilde",blockTypeSelect:{placeholder:"Blokktype",selectBlockTypeTooltip:"Velg blokktype"},blockTypes:{paragraph:"Avsnitt",heading:"Overskrift {{level}}",quote:"Sitat"}}},"pt-BR":{toolbar:{undo:"Desfazer {{shortcut}}",redo:"Refazer {{shortcut}}",bold:"Negrito",italic:"Itálico",underline:"Sublinhado",removeBold:"Remover negrito",removeItalic:"Remover itálico",removeUnderline:"Remover sublinhado",inlineCode:"Código em linha",removeInlineCode:"Remover código em linha",bulletedList:"Lista com marcadores",numberedList:"Lista numerada",checkList:"Lista de tarefas",toggleGroup:"Estilo da lista",link:"Inserir link",image:"Inserir imagem",table:"Inserir tabela",codeBlock:"Inserir bloco de código",thematicBreak:"Inserir separador",richText:"Texto formatado",diffMode:"Visualização de diferenças",source:"Código-fonte",blockTypeSelect:{placeholder:"Tipo de bloco",selectBlockTypeTooltip:"Selecionar tipo de bloco"},blockTypes:{paragraph:"Parágrafo",heading:"Título {{level}}",quote:"Citação"}}},th:{toolbar:{undo:"เลิกทำ {{shortcut}}",redo:"ทำซ้ำ {{shortcut}}",bold:"ตัวหนา",italic:"ตัวเอียง",underline:"ขีดเส้นใต้",removeBold:"ยกเลิกตัวหนา",removeItalic:"ยกเลิกตัวเอียง",removeUnderline:"ยกเลิกขีดเส้นใต้",inlineCode:"โค้ดในบรรทัด",removeInlineCode:"ยกเลิกโค้ดในบรรทัด",bulletedList:"รายการแบบจุด",numberedList:"รายการตัวเลข",checkList:"รายการตรวจสอบ",toggleGroup:"รูปแบบรายการ",link:"แทรกลิงก์",image:"แทรกรูปภาพ",table:"แทรกตาราง",codeBlock:"แทรกบล็อกโค้ด",thematicBreak:"แทรกเส้นคั่น",richText:"ข้อความรูปแบบ",diffMode:"มุมมองเปรียบเทียบ",source:"ซอร์ส",blockTypeSelect:{placeholder:"ประเภทบล็อก",selectBlockTypeTooltip:"เลือกประเภทบล็อก"},blockTypes:{paragraph:"ย่อหน้า",heading:"หัวข้อ {{level}}",quote:"คำพูดอ้างอิง"}}},tr:{toolbar:{undo:"Geri al {{shortcut}}",redo:"Yinele {{shortcut}}",bold:"Kalın",italic:"İtalik",underline:"Altı çizili",removeBold:"Kalını kaldır",removeItalic:"İtaliği kaldır",removeUnderline:"Altı çiziliyi kaldır",inlineCode:"Satır içi kod",removeInlineCode:"Satır içi kodu kaldır",bulletedList:"Madde işaretli liste",numberedList:"Numaralı liste",checkList:"Kontrol listesi",toggleGroup:"Liste stili",link:"Bağlantı ekle",image:"Resim ekle",table:"Tablo ekle",codeBlock:"Kod bloğu ekle",thematicBreak:"Ayraç ekle",richText:"Zengin metin",diffMode:"Karşılaştırma görünümü",source:"Kaynak",blockTypeSelect:{placeholder:"Blok türü",selectBlockTypeTooltip:"Blok türü seç"},blockTypes:{paragraph:"Paragraf",heading:"Başlık {{level}}",quote:"Alıntı"}}},uk:{toolbar:{undo:"Скасувати {{shortcut}}",redo:"Повторити {{shortcut}}",bold:"Жирний",italic:"Курсив",underline:"Підкреслений",removeBold:"Прибрати жирний",removeItalic:"Прибрати курсив",removeUnderline:"Прибрати підкреслення",inlineCode:"Вбудований код",removeInlineCode:"Прибрати вбудований код",bulletedList:"Маркований список",numberedList:"Нумерований список",checkList:"Список завдань",toggleGroup:"Стиль списку",link:"Вставити посилання",image:"Вставити зображення",table:"Вставити таблицю",codeBlock:"Вставити блок коду",thematicBreak:"Вставити роздільник",richText:"Форматований текст",diffMode:"Перегляд порівняння",source:"Джерело",blockTypeSelect:{placeholder:"Тип блоку",selectBlockTypeTooltip:"Виберіть тип блоку"},blockTypes:{paragraph:"Абзац",heading:"Заголовок {{level}}",quote:"Цитата"}}}};function mdxTranslation(key,defaultValue,interpolations){const lang=("function"==typeof getLang?getLang():"en")||"en",langTable=TRANSLATIONS[lang]||TRANSLATIONS[lang.split("-")[0]];return function(template,values){if(!values)return template;let out=template.replace(/\{\{\s*(\w+)\s*\}\}/g,(_,k)=>k in values?String(values[k]):`{{${k}}}`);return out=out.replace(/\{(\w+)\}/g,(_,k)=>k in values?String(values[k]):`{${k}}`),out}((langTable&&function(obj,path){const parts=path.split(".");let cur=obj;for(const p of parts){if(!cur||"object"!=typeof cur||!(p in cur))return;cur=cur[p]}return"string"==typeof cur?cur:void 0}(langTable,key))??defaultValue??key,interpolations)}function getDocTheme(){return"undefined"==typeof document?"dark":"light"===document.documentElement.getAttribute("data-theme")?"light":"dark"}const CODE_BLOCK_LANGUAGES={"":"Plain text",js:"JavaScript",ts:"TypeScript",jsx:"JSX",tsx:"TSX",py:"Python",sh:"Shell",bash:"Bash",json:"JSON",yaml:"YAML",md:"Markdown",html:"HTML",css:"CSS",sql:"SQL",go:"Go",rust:"Rust",java:"Java",cpp:"C++"},MdxEditorPanel=reactExports.forwardRef(function({initialMarkdown:initialMarkdown,onChange:onChange,onError:onError,onParseError:onParseError},ref){const editorRef=reactExports.useRef(null),[theme,setTheme]=reactExports.useState(getDocTheme),lang="function"==typeof getLang?getLang():"en";reactExports.useEffect(()=>{const target=document.documentElement,obs=new MutationObserver(()=>setTheme(getDocTheme()));return obs.observe(target,{attributes:!0,attributeFilter:["data-theme"]}),()=>obs.disconnect()},[]);const imageUploadHandler=reactExports.useCallback(async file=>{try{return await compressImageToDataURL(file,{maxEdge:2e3,quality:.85})}catch(err){const msg=`${t("ui.mdEditor.uploadFailed")}: ${err.message??err}`;try{staticMethods.error(msg)}catch{}throw"function"==typeof onError&&onError(err),err}},[onError]),wrapperRef=reactExports.useRef(null);return reactExports.useImperativeHandle(ref,()=>({getMarkdown:()=>{var _a,_b;return(null==(_b=null==(_a=editorRef.current)?void 0:_a.getMarkdown)?void 0:_b.call(_a))??""},setMarkdown:md=>{var _a,_b;return null==(_b=null==(_a=editorRef.current)?void 0:_a.setMarkdown)?void 0:_b.call(_a,md??"")},focus:()=>{var _a,_b;return null==(_b=null==(_a=editorRef.current)?void 0:_a.focus)?void 0:_b.call(_a)},getScrollEl:()=>{var _a;return(null==(_a=wrapperRef.current)?void 0:_a.querySelector(".mdxeditor-root-contenteditable"))||wrapperRef.current||null}}),[]),jsxRuntimeExports.jsx("div",{ref:wrapperRef,className:`${styles.container} ${"dark"===theme?`dark-theme ${styles.dark}`:styles.light}`,children:jsxRuntimeExports.jsx(MDXEditor,{ref:editorRef,markdown:initialMarkdown??"",onChange:onChange,onError:payload=>{if("function"==typeof onParseError)try{onParseError(payload)}catch{}},translation:mdxTranslation,contentEditableClassName:styles.contentEditable,plugins:[headingsPlugin(),listsPlugin(),quotePlugin(),linkPlugin(),linkDialogPlugin(),imagePlugin({imageUploadHandler:imageUploadHandler}),tablePlugin(),codeBlockPlugin({defaultCodeBlockLanguage:""}),codeMirrorPlugin({codeBlockLanguages:CODE_BLOCK_LANGUAGES}),thematicBreakPlugin(),markdownShortcutPlugin(),diffSourcePlugin({viewMode:"rich-text",diffMarkdown:initialMarkdown??""}),toolbarPlugin({toolbarContents:()=>jsxRuntimeExports.jsxs(DiffSourceToggleWrapper,{children:[jsxRuntimeExports.jsx(UndoRedo,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(BoldItalicUnderlineToggles,{}),jsxRuntimeExports.jsx(CodeToggle,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(BlockTypeSelect,{}),jsxRuntimeExports.jsx(ListsToggle,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(CreateLink,{}),jsxRuntimeExports.jsx(InsertImage,{}),jsxRuntimeExports.jsx(InsertTable,{}),jsxRuntimeExports.jsx(InsertCodeBlock,{}),jsxRuntimeExports.jsx(InsertThematicBreak,{})]})})]},lang)})});export{MdxEditorPanel as default};
|
|
1
|
+
import{j as jsxRuntimeExports}from"./vendor-codemirror-6ck0hLRU.js";import{a as reactExports,s as staticMethods}from"./vendor-antd-DNUTLr77.js";import{M as MDXEditor,h as headingsPlugin,l as listsPlugin,q as quotePlugin,a as linkPlugin,b as linkDialogPlugin,i as imagePlugin,t as tablePlugin,c as codeBlockPlugin,d as codeMirrorPlugin,e as thematicBreakPlugin,m as markdownShortcutPlugin,f as diffSourcePlugin,g as toolbarPlugin,D as DiffSourceToggleWrapper,U as UndoRedo,S as Separator,B as BoldItalicUnderlineToggles,C as CodeToggle,j as BlockTypeSelect,L as ListsToggle,k as CreateLink,I as InsertImage,n as InsertTable,o as InsertCodeBlock,p as InsertThematicBreak}from"./vendor-mdxeditor-DT0rad22.js";import{g as getLang,t}from"./index-By8aqIvN.js";const styles={container:"_container_odc2w_25",light:"_light_odc2w_3",contentEditable:"_contentEditable_odc2w_16"},PASSTHROUGH_TYPES=new Set(["image/png","image/gif","image/webp","image/svg+xml"]);function readAsDataURL(file){return new Promise((resolve,reject)=>{const reader=new FileReader;reader.onload=()=>resolve(reader.result),reader.onerror=()=>reject(new Error("FileReader failed")),reader.readAsDataURL(file)})}async function compressImageToDataURL(file,opts={}){if(!(file instanceof Blob))throw new Error("compressImageToDataURL: input must be a File or Blob");if(!file.type||!file.type.startsWith("image/"))throw new Error(`Unsupported file type: ${file.type||"unknown"}`);if(file.size>10485760)throw new Error(`Image too large: ${(file.size/1024/1024).toFixed(1)}MB > 10MB limit`);const maxEdge=opts.maxEdge??2e3,quality=opts.quality??.85;if(PASSTHROUGH_TYPES.has(file.type))return await readAsDataURL(file);const originalDataURL=await readAsDataURL(file),img=await(src=originalDataURL,new Promise((resolve,reject)=>{const img=new Image;img.onload=()=>resolve(img),img.onerror=()=>reject(new Error("Image decode failed")),img.src=src}));var src;const longestEdge=Math.max(img.naturalWidth,img.naturalHeight),scale=longestEdge>maxEdge?maxEdge/longestEdge:1,targetW=Math.max(1,Math.round(img.naturalWidth*scale)),targetH=Math.max(1,Math.round(img.naturalHeight*scale)),canvas=document.createElement("canvas");canvas.width=targetW,canvas.height=targetH;const ctx=canvas.getContext("2d");if(!ctx)return originalDataURL;let compressed;ctx.drawImage(img,0,0,targetW,targetH);try{compressed=canvas.toDataURL("image/jpeg",quality)}catch{return originalDataURL}return!compressed||"data:,"===compressed||compressed.length>=originalDataURL.length?originalDataURL:compressed}const TRANSLATIONS={zh:{contentArea:{editableMarkdown:"可编辑 Markdown"},dialog:{close:"关闭"},dialogControls:{cancel:"取消",save:"保存"},createLink:{text:"链接文字",textTooltip:"链接显示的文字",title:"标题",titleTooltip:"链接的 title 属性(鼠标悬停时显示)",url:"链接地址",urlPlaceholder:"请输入链接地址",saveTooltip:"保存链接",cancelTooltip:"取消编辑"},linkPreview:{open:"在新窗口打开 {{url}}",edit:"编辑链接",copyToClipboard:"复制链接到剪贴板",copied:"已复制",remove:"移除链接"},uploadImage:{dialogTitle:"插入图片",uploadInstructions:"从本地选择图片上传",addViaUrlInstructions:"或输入图片地址",addViaUrlInstructionsNoUpload:"请输入图片地址",autoCompletePlaceholder:"搜索已有图片",alt:"替代文字",title:"标题",width:"宽度",height:"高度"},imageEditor:{editImage:"编辑图片",deleteImage:"删除图片"},table:{columnMenu:"列菜单",rowMenu:"行菜单",textAlignment:"文字对齐",alignLeft:"左对齐",alignCenter:"居中",alignRight:"右对齐",insertColumnLeft:"在左侧插入列",insertColumnRight:"在右侧插入列",insertRowAbove:"在上方插入行",insertRowBelow:"在下方插入行",deleteColumn:"删除列",deleteRow:"删除行",deleteTable:"删除表格"},codeBlock:{language:"语言",inlineLanguage:"行内语言",selectLanguage:"选择语言"},codeblock:{delete:"删除代码块"},toolbar:{undo:"撤销 {{shortcut}}",redo:"重做 {{shortcut}}",bold:"加粗",italic:"斜体",underline:"下划线",removeBold:"取消加粗",removeItalic:"取消斜体",removeUnderline:"取消下划线",inlineCode:"行内代码",removeInlineCode:"取消行内代码",bulletedList:"无序列表",numberedList:"有序列表",checkList:"任务列表",toggleGroup:"列表样式",link:"插入链接",image:"插入图片",table:"插入表格",codeBlock:"插入代码块",thematicBreak:"插入分隔线",richText:"富文本",diffMode:"对比视图",source:"源代码",blockTypeSelect:{placeholder:"块类型",selectBlockTypeTooltip:"选择块类型"},blockTypes:{paragraph:"段落",heading:"标题 {{level}}",quote:"引用"}}},"zh-TW":{contentArea:{editableMarkdown:"可編輯 Markdown"},dialog:{close:"關閉"},dialogControls:{cancel:"取消",save:"儲存"},createLink:{text:"連結文字",textTooltip:"連結顯示的文字",title:"標題",titleTooltip:"連結的 title 屬性(滑鼠懸停時顯示)",url:"連結網址",urlPlaceholder:"請輸入連結網址",saveTooltip:"儲存連結",cancelTooltip:"取消編輯"},linkPreview:{open:"在新視窗開啟 {{url}}",edit:"編輯連結",copyToClipboard:"複製連結至剪貼簿",copied:"已複製",remove:"移除連結"},uploadImage:{dialogTitle:"插入圖片",uploadInstructions:"從本地選擇圖片上傳",addViaUrlInstructions:"或輸入圖片網址",addViaUrlInstructionsNoUpload:"請輸入圖片網址",autoCompletePlaceholder:"搜尋現有圖片",alt:"替代文字",title:"標題",width:"寬度",height:"高度"},imageEditor:{editImage:"編輯圖片",deleteImage:"刪除圖片"},table:{columnMenu:"欄選單",rowMenu:"列選單",textAlignment:"文字對齊",alignLeft:"靠左",alignCenter:"置中",alignRight:"靠右",insertColumnLeft:"在左側插入欄",insertColumnRight:"在右側插入欄",insertRowAbove:"在上方插入列",insertRowBelow:"在下方插入列",deleteColumn:"刪除欄",deleteRow:"刪除列",deleteTable:"刪除表格"},codeBlock:{language:"語言",inlineLanguage:"行內語言",selectLanguage:"選擇語言"},codeblock:{delete:"刪除程式碼區塊"},toolbar:{undo:"復原 {{shortcut}}",redo:"重做 {{shortcut}}",bold:"粗體",italic:"斜體",underline:"底線",removeBold:"取消粗體",removeItalic:"取消斜體",removeUnderline:"取消底線",inlineCode:"行內程式碼",removeInlineCode:"取消行內程式碼",bulletedList:"項目符號清單",numberedList:"編號清單",checkList:"工作清單",toggleGroup:"清單樣式",link:"插入連結",image:"插入圖片",table:"插入表格",codeBlock:"插入程式碼區塊",thematicBreak:"插入分隔線",richText:"所見即所得",diffMode:"比對檢視",source:"原始碼",blockTypeSelect:{placeholder:"區塊類型",selectBlockTypeTooltip:"選擇區塊類型"},blockTypes:{paragraph:"段落",heading:"標題 {{level}}",quote:"引用"}}},ja:{toolbar:{undo:"元に戻す {{shortcut}}",redo:"やり直し {{shortcut}}",bold:"太字",italic:"イタリック",underline:"下線",removeBold:"太字を解除",removeItalic:"イタリックを解除",removeUnderline:"下線を解除",inlineCode:"インラインコード",removeInlineCode:"インラインコードを解除",bulletedList:"箇条書き",numberedList:"番号付きリスト",checkList:"チェックリスト",toggleGroup:"リストスタイル",link:"リンクを挿入",image:"画像を挿入",table:"表を挿入",codeBlock:"コードブロックを挿入",thematicBreak:"区切り線を挿入",richText:"リッチテキスト",diffMode:"差分表示",source:"ソース",blockTypeSelect:{placeholder:"ブロック種別",selectBlockTypeTooltip:"ブロック種別を選択"},blockTypes:{paragraph:"段落",heading:"見出し {{level}}",quote:"引用"}}},ko:{toolbar:{undo:"실행 취소 {{shortcut}}",redo:"다시 실행 {{shortcut}}",bold:"굵게",italic:"기울임",underline:"밑줄",removeBold:"굵게 해제",removeItalic:"기울임 해제",removeUnderline:"밑줄 해제",inlineCode:"인라인 코드",removeInlineCode:"인라인 코드 해제",bulletedList:"글머리 기호 목록",numberedList:"번호 매기기 목록",checkList:"체크리스트",toggleGroup:"목록 스타일",link:"링크 삽입",image:"이미지 삽입",table:"표 삽입",codeBlock:"코드 블록 삽입",thematicBreak:"구분선 삽입",richText:"서식있는 텍스트",diffMode:"비교 보기",source:"소스",blockTypeSelect:{placeholder:"블록 유형",selectBlockTypeTooltip:"블록 유형 선택"},blockTypes:{paragraph:"단락",heading:"제목 {{level}}",quote:"인용"}}},de:{toolbar:{undo:"Rückgängig {{shortcut}}",redo:"Wiederherstellen {{shortcut}}",bold:"Fett",italic:"Kursiv",underline:"Unterstrichen",removeBold:"Fett entfernen",removeItalic:"Kursiv entfernen",removeUnderline:"Unterstrichen entfernen",inlineCode:"Inline-Code",removeInlineCode:"Inline-Code entfernen",bulletedList:"Aufzählungsliste",numberedList:"Nummerierte Liste",checkList:"Aufgabenliste",toggleGroup:"Listenstil",link:"Link einfügen",image:"Bild einfügen",table:"Tabelle einfügen",codeBlock:"Codeblock einfügen",thematicBreak:"Trennlinie einfügen",richText:"Rich-Text",diffMode:"Diff-Ansicht",source:"Quelltext",blockTypeSelect:{placeholder:"Blocktyp",selectBlockTypeTooltip:"Blocktyp auswählen"},blockTypes:{paragraph:"Absatz",heading:"Überschrift {{level}}",quote:"Zitat"}}},es:{toolbar:{undo:"Deshacer {{shortcut}}",redo:"Rehacer {{shortcut}}",bold:"Negrita",italic:"Cursiva",underline:"Subrayado",removeBold:"Quitar negrita",removeItalic:"Quitar cursiva",removeUnderline:"Quitar subrayado",inlineCode:"Código en línea",removeInlineCode:"Quitar código en línea",bulletedList:"Lista con viñetas",numberedList:"Lista numerada",checkList:"Lista de tareas",toggleGroup:"Estilo de lista",link:"Insertar enlace",image:"Insertar imagen",table:"Insertar tabla",codeBlock:"Insertar bloque de código",thematicBreak:"Insertar separador",richText:"Texto enriquecido",diffMode:"Vista comparativa",source:"Código fuente",blockTypeSelect:{placeholder:"Tipo de bloque",selectBlockTypeTooltip:"Seleccionar tipo de bloque"},blockTypes:{paragraph:"Párrafo",heading:"Encabezado {{level}}",quote:"Cita"}}},fr:{toolbar:{undo:"Annuler {{shortcut}}",redo:"Rétablir {{shortcut}}",bold:"Gras",italic:"Italique",underline:"Souligné",removeBold:"Retirer le gras",removeItalic:"Retirer l’italique",removeUnderline:"Retirer le soulignement",inlineCode:"Code en ligne",removeInlineCode:"Retirer le code en ligne",bulletedList:"Liste à puces",numberedList:"Liste numérotée",checkList:"Liste de tâches",toggleGroup:"Style de liste",link:"Insérer un lien",image:"Insérer une image",table:"Insérer un tableau",codeBlock:"Insérer un bloc de code",thematicBreak:"Insérer un séparateur",richText:"Texte enrichi",diffMode:"Vue comparative",source:"Source",blockTypeSelect:{placeholder:"Type de bloc",selectBlockTypeTooltip:"Choisir le type de bloc"},blockTypes:{paragraph:"Paragraphe",heading:"Titre {{level}}",quote:"Citation"}}},it:{toolbar:{undo:"Annulla {{shortcut}}",redo:"Ripristina {{shortcut}}",bold:"Grassetto",italic:"Corsivo",underline:"Sottolineato",removeBold:"Rimuovi grassetto",removeItalic:"Rimuovi corsivo",removeUnderline:"Rimuovi sottolineato",inlineCode:"Codice in linea",removeInlineCode:"Rimuovi codice in linea",bulletedList:"Elenco puntato",numberedList:"Elenco numerato",checkList:"Elenco di attività",toggleGroup:"Stile elenco",link:"Inserisci link",image:"Inserisci immagine",table:"Inserisci tabella",codeBlock:"Inserisci blocco di codice",thematicBreak:"Inserisci separatore",richText:"Testo formattato",diffMode:"Vista differenze",source:"Sorgente",blockTypeSelect:{placeholder:"Tipo di blocco",selectBlockTypeTooltip:"Seleziona tipo di blocco"},blockTypes:{paragraph:"Paragrafo",heading:"Titolo {{level}}",quote:"Citazione"}}},da:{toolbar:{undo:"Fortryd {{shortcut}}",redo:"Gentag {{shortcut}}",bold:"Fed",italic:"Kursiv",underline:"Understreget",removeBold:"Fjern fed",removeItalic:"Fjern kursiv",removeUnderline:"Fjern understregning",inlineCode:"Indlejret kode",removeInlineCode:"Fjern indlejret kode",bulletedList:"Punktopstilling",numberedList:"Nummereret liste",checkList:"Tjekliste",toggleGroup:"Listestil",link:"Indsæt link",image:"Indsæt billede",table:"Indsæt tabel",codeBlock:"Indsæt kodeblok",thematicBreak:"Indsæt skillelinje",richText:"Formateret tekst",diffMode:"Diff-visning",source:"Kilde",blockTypeSelect:{placeholder:"Bloktype",selectBlockTypeTooltip:"Vælg bloktype"},blockTypes:{paragraph:"Afsnit",heading:"Overskrift {{level}}",quote:"Citat"}}},pl:{toolbar:{undo:"Cofnij {{shortcut}}",redo:"Ponów {{shortcut}}",bold:"Pogrubienie",italic:"Kursywa",underline:"Podkreślenie",removeBold:"Usuń pogrubienie",removeItalic:"Usuń kursywę",removeUnderline:"Usuń podkreślenie",inlineCode:"Kod w linii",removeInlineCode:"Usuń kod w linii",bulletedList:"Lista punktowana",numberedList:"Lista numerowana",checkList:"Lista zadań",toggleGroup:"Styl listy",link:"Wstaw link",image:"Wstaw obraz",table:"Wstaw tabelę",codeBlock:"Wstaw blok kodu",thematicBreak:"Wstaw separator",richText:"Tekst sformatowany",diffMode:"Widok porównania",source:"Źródło",blockTypeSelect:{placeholder:"Typ bloku",selectBlockTypeTooltip:"Wybierz typ bloku"},blockTypes:{paragraph:"Akapit",heading:"Nagłówek {{level}}",quote:"Cytat"}}},ru:{toolbar:{undo:"Отменить {{shortcut}}",redo:"Повторить {{shortcut}}",bold:"Полужирный",italic:"Курсив",underline:"Подчёркнутый",removeBold:"Убрать полужирный",removeItalic:"Убрать курсив",removeUnderline:"Убрать подчёркивание",inlineCode:"Встроенный код",removeInlineCode:"Убрать встроенный код",bulletedList:"Маркированный список",numberedList:"Нумерованный список",checkList:"Список задач",toggleGroup:"Стиль списка",link:"Вставить ссылку",image:"Вставить изображение",table:"Вставить таблицу",codeBlock:"Вставить блок кода",thematicBreak:"Вставить разделитель",richText:"Форматированный текст",diffMode:"Вид сравнения",source:"Исходный код",blockTypeSelect:{placeholder:"Тип блока",selectBlockTypeTooltip:"Выбрать тип блока"},blockTypes:{paragraph:"Абзац",heading:"Заголовок {{level}}",quote:"Цитата"}}},ar:{toolbar:{undo:"تراجع {{shortcut}}",redo:"إعادة {{shortcut}}",bold:"عريض",italic:"مائل",underline:"تسطير",removeBold:"إزالة العريض",removeItalic:"إزالة المائل",removeUnderline:"إزالة التسطير",inlineCode:"كود مضمن",removeInlineCode:"إزالة الكود المضمن",bulletedList:"قائمة نقطية",numberedList:"قائمة مرقمة",checkList:"قائمة مهام",toggleGroup:"نمط القائمة",link:"إدراج رابط",image:"إدراج صورة",table:"إدراج جدول",codeBlock:"إدراج كتلة كود",thematicBreak:"إدراج فاصل",richText:"نص منسق",diffMode:"عرض المقارنة",source:"المصدر",blockTypeSelect:{placeholder:"نوع الكتلة",selectBlockTypeTooltip:"اختر نوع الكتلة"},blockTypes:{paragraph:"فقرة",heading:"عنوان {{level}}",quote:"اقتباس"}}},no:{toolbar:{undo:"Angre {{shortcut}}",redo:"Gjør om {{shortcut}}",bold:"Fet",italic:"Kursiv",underline:"Understreket",removeBold:"Fjern fet",removeItalic:"Fjern kursiv",removeUnderline:"Fjern understreking",inlineCode:"Inline-kode",removeInlineCode:"Fjern inline-kode",bulletedList:"Punktliste",numberedList:"Nummerert liste",checkList:"Sjekkliste",toggleGroup:"Listestil",link:"Sett inn lenke",image:"Sett inn bilde",table:"Sett inn tabell",codeBlock:"Sett inn kodeblokk",thematicBreak:"Sett inn skillelinje",richText:"Formatert tekst",diffMode:"Diff-visning",source:"Kilde",blockTypeSelect:{placeholder:"Blokktype",selectBlockTypeTooltip:"Velg blokktype"},blockTypes:{paragraph:"Avsnitt",heading:"Overskrift {{level}}",quote:"Sitat"}}},"pt-BR":{toolbar:{undo:"Desfazer {{shortcut}}",redo:"Refazer {{shortcut}}",bold:"Negrito",italic:"Itálico",underline:"Sublinhado",removeBold:"Remover negrito",removeItalic:"Remover itálico",removeUnderline:"Remover sublinhado",inlineCode:"Código em linha",removeInlineCode:"Remover código em linha",bulletedList:"Lista com marcadores",numberedList:"Lista numerada",checkList:"Lista de tarefas",toggleGroup:"Estilo da lista",link:"Inserir link",image:"Inserir imagem",table:"Inserir tabela",codeBlock:"Inserir bloco de código",thematicBreak:"Inserir separador",richText:"Texto formatado",diffMode:"Visualização de diferenças",source:"Código-fonte",blockTypeSelect:{placeholder:"Tipo de bloco",selectBlockTypeTooltip:"Selecionar tipo de bloco"},blockTypes:{paragraph:"Parágrafo",heading:"Título {{level}}",quote:"Citação"}}},th:{toolbar:{undo:"เลิกทำ {{shortcut}}",redo:"ทำซ้ำ {{shortcut}}",bold:"ตัวหนา",italic:"ตัวเอียง",underline:"ขีดเส้นใต้",removeBold:"ยกเลิกตัวหนา",removeItalic:"ยกเลิกตัวเอียง",removeUnderline:"ยกเลิกขีดเส้นใต้",inlineCode:"โค้ดในบรรทัด",removeInlineCode:"ยกเลิกโค้ดในบรรทัด",bulletedList:"รายการแบบจุด",numberedList:"รายการตัวเลข",checkList:"รายการตรวจสอบ",toggleGroup:"รูปแบบรายการ",link:"แทรกลิงก์",image:"แทรกรูปภาพ",table:"แทรกตาราง",codeBlock:"แทรกบล็อกโค้ด",thematicBreak:"แทรกเส้นคั่น",richText:"ข้อความรูปแบบ",diffMode:"มุมมองเปรียบเทียบ",source:"ซอร์ส",blockTypeSelect:{placeholder:"ประเภทบล็อก",selectBlockTypeTooltip:"เลือกประเภทบล็อก"},blockTypes:{paragraph:"ย่อหน้า",heading:"หัวข้อ {{level}}",quote:"คำพูดอ้างอิง"}}},tr:{toolbar:{undo:"Geri al {{shortcut}}",redo:"Yinele {{shortcut}}",bold:"Kalın",italic:"İtalik",underline:"Altı çizili",removeBold:"Kalını kaldır",removeItalic:"İtaliği kaldır",removeUnderline:"Altı çiziliyi kaldır",inlineCode:"Satır içi kod",removeInlineCode:"Satır içi kodu kaldır",bulletedList:"Madde işaretli liste",numberedList:"Numaralı liste",checkList:"Kontrol listesi",toggleGroup:"Liste stili",link:"Bağlantı ekle",image:"Resim ekle",table:"Tablo ekle",codeBlock:"Kod bloğu ekle",thematicBreak:"Ayraç ekle",richText:"Zengin metin",diffMode:"Karşılaştırma görünümü",source:"Kaynak",blockTypeSelect:{placeholder:"Blok türü",selectBlockTypeTooltip:"Blok türü seç"},blockTypes:{paragraph:"Paragraf",heading:"Başlık {{level}}",quote:"Alıntı"}}},uk:{toolbar:{undo:"Скасувати {{shortcut}}",redo:"Повторити {{shortcut}}",bold:"Жирний",italic:"Курсив",underline:"Підкреслений",removeBold:"Прибрати жирний",removeItalic:"Прибрати курсив",removeUnderline:"Прибрати підкреслення",inlineCode:"Вбудований код",removeInlineCode:"Прибрати вбудований код",bulletedList:"Маркований список",numberedList:"Нумерований список",checkList:"Список завдань",toggleGroup:"Стиль списку",link:"Вставити посилання",image:"Вставити зображення",table:"Вставити таблицю",codeBlock:"Вставити блок коду",thematicBreak:"Вставити роздільник",richText:"Форматований текст",diffMode:"Перегляд порівняння",source:"Джерело",blockTypeSelect:{placeholder:"Тип блоку",selectBlockTypeTooltip:"Виберіть тип блоку"},blockTypes:{paragraph:"Абзац",heading:"Заголовок {{level}}",quote:"Цитата"}}}};function mdxTranslation(key,defaultValue,interpolations){const lang=("function"==typeof getLang?getLang():"en")||"en",langTable=TRANSLATIONS[lang]||TRANSLATIONS[lang.split("-")[0]];return function(template,values){if(!values)return template;let out=template.replace(/\{\{\s*(\w+)\s*\}\}/g,(_,k)=>k in values?String(values[k]):`{{${k}}}`);return out=out.replace(/\{(\w+)\}/g,(_,k)=>k in values?String(values[k]):`{${k}}`),out}((langTable&&function(obj,path){const parts=path.split(".");let cur=obj;for(const p of parts){if(!cur||"object"!=typeof cur||!(p in cur))return;cur=cur[p]}return"string"==typeof cur?cur:void 0}(langTable,key))??defaultValue??key,interpolations)}function getDocTheme(){return"undefined"==typeof document?"dark":"light"===document.documentElement.getAttribute("data-theme")?"light":"dark"}const CODE_BLOCK_LANGUAGES={"":"Plain text",js:"JavaScript",ts:"TypeScript",jsx:"JSX",tsx:"TSX",py:"Python",sh:"Shell",bash:"Bash",json:"JSON",yaml:"YAML",md:"Markdown",html:"HTML",css:"CSS",sql:"SQL",go:"Go",rust:"Rust",java:"Java",cpp:"C++"},MdxEditorPanel=reactExports.forwardRef(function({initialMarkdown:initialMarkdown,onChange:onChange,onError:onError,onParseError:onParseError},ref){const editorRef=reactExports.useRef(null),[theme,setTheme]=reactExports.useState(getDocTheme),lang="function"==typeof getLang?getLang():"en";reactExports.useEffect(()=>{const target=document.documentElement,obs=new MutationObserver(()=>setTheme(getDocTheme()));return obs.observe(target,{attributes:!0,attributeFilter:["data-theme"]}),()=>obs.disconnect()},[]);const imageUploadHandler=reactExports.useCallback(async file=>{try{return await compressImageToDataURL(file,{maxEdge:2e3,quality:.85})}catch(err){const msg=`${t("ui.mdEditor.uploadFailed")}: ${err.message??err}`;try{staticMethods.error(msg)}catch{}throw"function"==typeof onError&&onError(err),err}},[onError]),wrapperRef=reactExports.useRef(null);return reactExports.useImperativeHandle(ref,()=>({getMarkdown:()=>{var _a,_b;return(null==(_b=null==(_a=editorRef.current)?void 0:_a.getMarkdown)?void 0:_b.call(_a))??""},setMarkdown:md=>{var _a,_b;return null==(_b=null==(_a=editorRef.current)?void 0:_a.setMarkdown)?void 0:_b.call(_a,md??"")},focus:()=>{var _a,_b;return null==(_b=null==(_a=editorRef.current)?void 0:_a.focus)?void 0:_b.call(_a)},getScrollEl:()=>{var _a;return(null==(_a=wrapperRef.current)?void 0:_a.querySelector(".mdxeditor-root-contenteditable"))||wrapperRef.current||null}}),[]),jsxRuntimeExports.jsx("div",{ref:wrapperRef,className:`${styles.container} ${"dark"===theme?`dark-theme ${styles.dark}`:styles.light}`,children:jsxRuntimeExports.jsx(MDXEditor,{ref:editorRef,markdown:initialMarkdown??"",onChange:onChange,onError:payload=>{if("function"==typeof onParseError)try{onParseError(payload)}catch{}},translation:mdxTranslation,contentEditableClassName:styles.contentEditable,plugins:[headingsPlugin(),listsPlugin(),quotePlugin(),linkPlugin(),linkDialogPlugin(),imagePlugin({imageUploadHandler:imageUploadHandler}),tablePlugin(),codeBlockPlugin({defaultCodeBlockLanguage:""}),codeMirrorPlugin({codeBlockLanguages:CODE_BLOCK_LANGUAGES}),thematicBreakPlugin(),markdownShortcutPlugin(),diffSourcePlugin({viewMode:"rich-text",diffMarkdown:initialMarkdown??""}),toolbarPlugin({toolbarContents:()=>jsxRuntimeExports.jsxs(DiffSourceToggleWrapper,{children:[jsxRuntimeExports.jsx(UndoRedo,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(BoldItalicUnderlineToggles,{}),jsxRuntimeExports.jsx(CodeToggle,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(BlockTypeSelect,{}),jsxRuntimeExports.jsx(ListsToggle,{}),jsxRuntimeExports.jsx(Separator,{}),jsxRuntimeExports.jsx(CreateLink,{}),jsxRuntimeExports.jsx(InsertImage,{}),jsxRuntimeExports.jsx(InsertTable,{}),jsxRuntimeExports.jsx(InsertCodeBlock,{}),jsxRuntimeExports.jsx(InsertThematicBreak,{})]})})]},lang)})});export{MdxEditorPanel as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var __defProp=Object.defineProperty,__publicField=(obj,key,value)=>((obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value:value}):obj[key]=value)(obj,"symbol"!=typeof key?key+"":key,value);import{j as jsxRuntimeExports}from"./vendor-codemirror-6ck0hLRU.js";import{a as reactExports,I as Icon,b as _extends,R as React,s as staticMethods,M as Modal,C as ConfigProvider,B as Badge,i as Button,j as RefIcon$3,k as RefIcon$4,S as Spin,l as Select,T as Tooltip,m as RefIcon$5,n as Switch,o as RefIcon$6}from"./vendor-antd-DNUTLr77.js";import{f as fetchAllRepos,b as buildGitTree,i as isImageFile,I as ImageLightbox,F as FullFileDiffView,u as useSessionStoragePersistedSet,a as ImageViewer,c as FileContentView,l as loadExpandedPaths,s as saveExpandedPaths,d as computeTokenStats,e as computeToolUsageStats,g as computeSkillUsageStats,h as computeCacheRebuildStats,j as classifyRequest,k as sharedChrome,C as ConceptHelp,T as ToolsHelp,m as formatTokenCount,A as AppBase,r as readCalibrationModel,n as loadFsSkills,o as sortSkillsDefault,p as handleSkillToggle,q as handleSkillDelete,t as loadProjectMemory,v as loadClaudeMdList,w as extractDisplayText,x as parseImOrigin,y as classifyUserContent,z as isMainAgent,B as styles$3,D as getEffectiveModel,E as sumUsageContextTokens,G as sumUsageInputTokens,H as computeContextPercent,O as OPTIMISTIC_CLEAR_PERCENT,J as TerminalWsProvider,K as ApprovalModal,R as RefIcon$1,L as RefIcon$2,M as ChatView,N as TerminalPanel,P as CachePopoverContent,Q as MemoryDetailModal,S as SkillsManagerModal,U as ProjectPrefsManagerModal,V as PluginModal,W as ProcessModal,X as ProxyModal,Y as OpenFolderIcon,Z as autoApproveSelectOptions,_ as VoicePackSettings,$ as ToolApprovalPanel,a0 as contextSeverityColor,a1 as useProjectAlias,a2 as appConfig,a3 as PERM_AUTO_APPROVE_OPTIONS,a4 as PLAN_AUTO_APPROVE_OPTIONS}from"./seqResourceLoaders-C-pxCjNh.js";import{a as apiUrl,t,i as isIOS,b as isPad,s as setViewMode,L as LANG_OPTIONS,c as setLang,g as getLang}from"./index-By8aqIvN.js";import"./vendor-mdxeditor-DT0rad22.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DBlfs4dR.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-YwK7i7L6.js";var RollbackOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M793 242H366v-74c0-6.7-7.7-10.4-12.9-6.3l-142 112a8 8 0 000 12.6l142 112c5.2 4.1 12.9.4 12.9-6.3v-74h415v470H175c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h618c35.3 0 64-28.7 64-64V306c0-35.3-28.7-64-64-64z"}}]},name:"rollback",theme:"outlined"},RollbackOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:RollbackOutlined$1}))},RefIcon=reactExports.forwardRef(RollbackOutlined);const styles$2_container="_container_wipb0_1",styles$2_fileListSection="_fileListSection_wipb0_10",styles$2_header="_header_wipb0_19",styles$2_headerLeft="_headerLeft_wipb0_28",styles$2_headerTitle="_headerTitle_wipb0_34",styles$2_fileCount="_fileCount_wipb0_42",styles$2_closeBtn="_closeBtn_wipb0_50",styles$2_changesContainer="_changesContainer_wipb0_66",styles$2_changeItem="_changeItem_wipb0_73",styles$2_changeItemActive="_changeItemActive_wipb0_90",styles$2_dirItem="_dirItem_wipb0_99",styles$2_dirArrow="_dirArrow_wipb0_110",styles$2_dirName="_dirName_wipb0_119",styles$2_status="_status_wipb0_124",styles$2_icon="_icon_wipb0_133",styles$2_fileName="_fileName_wipb0_142",styles$2_diffSection="_diffSection_wipb0_149",styles$2_diffHeader="_diffHeader_wipb0_157",styles$2_diffFilePath="_diffFilePath_wipb0_167",styles$2_diffBadge="_diffBadge_wipb0_177",styles$2_diffContent="_diffContent_wipb0_189",styles$2_diffPlaceholder="_diffPlaceholder_wipb0_195",styles$2_statusText="_statusText_wipb0_206",styles$2_errorText="_errorText_wipb0_213",styles$2_emptyText="_emptyText_wipb0_220",styles$2_warningText="_warningText_wipb0_227",styles$2_fileSizeNote="_fileSizeNote_wipb0_239",styles$2_statusTextItalic="_statusTextItalic_wipb0_244",styles$2_imagePreviewWrap="_imagePreviewWrap_wipb0_248",styles$2_imagePreview="_imagePreview_wipb0_248",styles$2_rotated90="_rotated90_wipb0_264",styles$2_repoHeader="_repoHeader_wipb0_269",styles$2_repoArrow="_repoArrow_wipb0_288",styles$2_repoArrowExpanded="_repoArrowExpanded_wipb0_299",styles$2_repoName="_repoName_wipb0_303",styles$2_repoBadge="_repoBadge_wipb0_310",STATUS_COLORS={M:"#e2c08d",A:"#73c991",D:"#f14c4c",R:"#73c991",C:"#73c991",U:"#e2c08d","?":"#73c991","??":"#73c991"},STATUS_LABELS={"??":"U"},EXT_COLORS$1={js:"#e8d44d",jsx:"#61dafb",ts:"#3178c6",tsx:"#3178c6",json:"#999",md:"#519aba",css:"#a86fd9",scss:"#cd6799",html:"#e34c26",py:"#3572a5",go:"#00add8",rs:"#dea584"};function getFileIcon$1(name){const ext=name.includes(".")?name.split(".").pop().toLowerCase():"",color=EXT_COLORS$1[ext]||"#888";return jsxRuntimeExports.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:color,strokeWidth:"1.5",children:[jsxRuntimeExports.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),jsxRuntimeExports.jsx("polyline",{points:"14 2 14 8 20 8"})]})}function TreeDir({name:name,node:node,depth:depth,selectedFile:selectedFile,selectedRepo:selectedRepo,repoPath:repoPath,onFileClick:onFileClick}){const dirNames=Object.keys(node.dirs).sort(),files=[...node.files].sort((a,b)=>a.name.localeCompare(b.name));return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[name&&jsxRuntimeExports.jsxs("div",{className:styles$2_dirItem,style:{paddingLeft:8+16*depth},children:[jsxRuntimeExports.jsx("span",{className:styles$2_dirArrow,children:jsxRuntimeExports.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:styles$2_rotated90,children:jsxRuntimeExports.jsx("polyline",{points:"9 6 15 12 9 18"})})}),jsxRuntimeExports.jsx("span",{className:styles$2_icon,children:jsxRuntimeExports.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"#c09553",stroke:"none",children:jsxRuntimeExports.jsx("path",{d:"M2 6c0-1.1.9-2 2-2h5l2 2h9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6z"})})}),jsxRuntimeExports.jsx("span",{className:styles$2_dirName,children:name})]}),dirNames.map(dir=>jsxRuntimeExports.jsx(TreeDir,{name:dir,node:node.dirs[dir],depth:name?depth+1:depth,selectedFile:selectedFile,selectedRepo:selectedRepo,repoPath:repoPath,onFileClick:onFileClick},dir)),files.map(file=>jsxRuntimeExports.jsxs("div",{className:`${styles$2_changeItem} ${selectedFile===file.fullPath&&selectedRepo===repoPath?styles$2_changeItemActive:""}`,style:{paddingLeft:8+16*(name?depth+1:depth)},onClick:()=>onFileClick&&onFileClick(repoPath,file.fullPath),children:[jsxRuntimeExports.jsx("span",{className:styles$2_icon,children:getFileIcon$1(file.name)}),jsxRuntimeExports.jsx("span",{className:styles$2_fileName,children:file.name}),jsxRuntimeExports.jsx("span",{className:styles$2_status,style:{color:STATUS_COLORS[file.status]||"#888"},children:STATUS_LABELS[file.status]||file.status})]},file.fullPath))]})}function MobileGitDiff({visible:visible,onClose:onClose}){const[repos,setRepos]=reactExports.useState(null),[error,setError]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[selectedFile,setSelectedFile]=reactExports.useState(null),[selectedRepo,setSelectedRepo]=reactExports.useState(null),[collapsedRepos,setCollapsedRepos]=reactExports.useState(new Set),[diffData,setDiffData]=reactExports.useState(null),[diffError,setDiffError]=reactExports.useState(null),[diffLoading,setDiffLoading]=reactExports.useState(!1),[lightboxOpen,setLightboxOpen]=reactExports.useState(!1),mounted=reactExports.useRef(!0);reactExports.useEffect(()=>{if(mounted.current=!0,visible)return setLoading(!0),setError(null),fetchAllRepos().then(results=>{mounted.current&&(setRepos(results),setLoading(!1))}).catch(()=>{mounted.current&&(setError("Failed to load git status"),setLoading(!1))}),()=>{mounted.current=!1}},[visible]),reactExports.useEffect(()=>{if(!selectedFile||!selectedRepo)return setDiffData(null),void setDiffError(null);setDiffLoading(!0),setDiffData(null),setDiffError(null);const repoParam=selectedRepo&&"."!==selectedRepo?`&repo=${encodeURIComponent(selectedRepo)}`:"";fetch(apiUrl(`/api/git-diff?files=${encodeURIComponent(selectedFile)}${repoParam}`)).then(r=>{if(!r.ok)throw new Error(`HTTP ${r.status}`);return r.json()}).then(data=>{mounted.current&&(data.diffs&&data.diffs[0]?setDiffData(data.diffs[0]):setDiffError("No diff data available"),setDiffLoading(!1))}).catch(err=>{mounted.current&&(setDiffError(`${t("ui.fileLoadError")}: ${err.message}`),setDiffLoading(!1))})},[selectedFile,selectedRepo]);const totalChanges=reactExports.useMemo(()=>repos?repos.reduce((sum,r)=>sum+r.changes.length,0):0,[repos]),isSingleRepo=!repos||repos.length<=1,handleFileClick=(repoPath,filePath)=>{setSelectedFile(filePath),setSelectedRepo(repoPath)},diffDisplayPath=selectedFile&&selectedRepo&&"."!==selectedRepo?`${selectedRepo}/${selectedFile}`:selectedFile;return jsxRuntimeExports.jsxs("div",{className:styles$2_container,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_fileListSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_header,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_headerLeft,children:[jsxRuntimeExports.jsx("span",{className:styles$2_headerTitle,children:t("ui.gitChanges")}),jsxRuntimeExports.jsx("span",{className:styles$2_fileCount,children:totalChanges})]}),onClose&&jsxRuntimeExports.jsx("button",{className:styles$2_closeBtn,onClick:onClose,children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_changesContainer,children:[loading&&jsxRuntimeExports.jsx("div",{className:styles$2_statusText,children:t("ui.loading")}),error&&jsxRuntimeExports.jsx("div",{className:styles$2_errorText,children:error}),!loading&&!error&&(!repos||0===repos.length)&&jsxRuntimeExports.jsx("div",{className:styles$2_emptyText,children:t("ui.gitChanges.noChanges")}),!loading&&!error&&repos&&repos.map(repo=>{const collapsed=collapsedRepos.has(repo.path);return isSingleRepo?jsxRuntimeExports.jsx(TreeDir,{name:"",node:buildGitTree(repo.changes),depth:0,selectedFile:selectedFile,selectedRepo:selectedRepo,repoPath:repo.path,onFileClick:handleFileClick},repo.path):jsxRuntimeExports.jsxs(React.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$2_repoHeader,onClick:()=>setCollapsedRepos(prev=>{const next=new Set(prev);return collapsed?next.delete(repo.path):next.add(repo.path),next}),children:[jsxRuntimeExports.jsx("span",{className:`${styles$2_repoArrow} ${collapsed?"":styles$2_repoArrowExpanded}`,children:jsxRuntimeExports.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntimeExports.jsx("polyline",{points:"9 6 15 12 9 18"})})}),jsxRuntimeExports.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"var(--text-muted)",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",style:{flexShrink:0},children:[jsxRuntimeExports.jsx("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),jsxRuntimeExports.jsx("circle",{cx:"18",cy:"6",r:"3"}),jsxRuntimeExports.jsx("circle",{cx:"6",cy:"18",r:"3"}),jsxRuntimeExports.jsx("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),jsxRuntimeExports.jsx("span",{className:styles$2_repoName,children:repo.name}),jsxRuntimeExports.jsx("span",{className:styles$2_repoBadge,children:repo.changes.length})]}),!collapsed&&jsxRuntimeExports.jsx(TreeDir,{name:"",node:buildGitTree(repo.changes),depth:1,selectedFile:selectedFile,selectedRepo:selectedRepo,repoPath:repo.path,onFileClick:handleFileClick})]},repo.path)})]})]}),jsxRuntimeExports.jsx("div",{className:styles$2_diffSection,children:selectedFile?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$2_diffHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$2_diffFilePath,children:diffDisplayPath}),jsxRuntimeExports.jsx("span",{className:styles$2_diffBadge,children:"DIFF"})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_diffContent,children:[diffLoading&&jsxRuntimeExports.jsx("div",{className:styles$2_statusText,children:t("ui.loading")}),diffError&&jsxRuntimeExports.jsx("div",{className:styles$2_errorText,children:diffError}),!diffLoading&&!diffError&&diffData&&jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment,{children:diffData.is_large?jsxRuntimeExports.jsxs("div",{className:styles$2_warningText,children:[jsxRuntimeExports.jsx("p",{children:t("ui.largeFileWarning")}),jsxRuntimeExports.jsxs("p",{className:styles$2_fileSizeNote,children:[t("ui.fileSize"),": ",(diffData.size/1048576).toFixed(2)," MB"]})]}):isImageFile(selectedFile)&&!diffData.is_deleted?jsxRuntimeExports.jsxs("div",{className:styles$2_imagePreviewWrap,children:[jsxRuntimeExports.jsx("img",{className:styles$2_imagePreview,src:apiUrl(`/api/file-raw?path=${encodeURIComponent(diffDisplayPath)}`),alt:selectedFile,onClick:()=>setLightboxOpen(!0)}),lightboxOpen&&jsxRuntimeExports.jsx(ImageLightbox,{src:apiUrl(`/api/file-raw?path=${encodeURIComponent(diffDisplayPath)}`),alt:selectedFile,onClose:()=>setLightboxOpen(!1)})]}):diffData.is_binary?jsxRuntimeExports.jsx("div",{className:`${styles$2_statusText} ${styles$2_statusTextItalic}`,children:t("ui.binaryFileNotice")}):jsxRuntimeExports.jsx(FullFileDiffView,{file_path:selectedFile,old_string:diffData.old_content,new_string:diffData.new_content})})]})]}):jsxRuntimeExports.jsxs("div",{className:styles$2_diffPlaceholder,children:[jsxRuntimeExports.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"#333",strokeWidth:"1.5",children:[jsxRuntimeExports.jsx("line",{x1:"6",y1:"3",x2:"6",y2:"15"}),jsxRuntimeExports.jsx("circle",{cx:"18",cy:"6",r:"3"}),jsxRuntimeExports.jsx("circle",{cx:"6",cy:"18",r:"3"}),jsxRuntimeExports.jsx("path",{d:"M18 9a9 9 0 0 1-9 9"})]}),jsxRuntimeExports.jsx("span",{children:t("ui.mobileGitDiffHint")})]})})]})}const styles$1_container="_container_1hzyt_1",styles$1_fileListSection="_fileListSection_1hzyt_10",styles$1_header="_header_1hzyt_19",styles$1_headerLeft="_headerLeft_1hzyt_28",styles$1_headerTitle="_headerTitle_1hzyt_34",styles$1_fileCount="_fileCount_1hzyt_42",styles$1_closeBtn="_closeBtn_1hzyt_50",styles$1_treeContainer="_treeContainer_1hzyt_66",styles$1_treeItem="_treeItem_1hzyt_73",styles$1_treeItemActive="_treeItemActive_1hzyt_90",styles$1_treeItemIgnored="_treeItemIgnored_1hzyt_99",styles$1_arrow="_arrow_1hzyt_103",styles$1_arrowExpanded="_arrowExpanded_1hzyt_113",styles$1_icon="_icon_1hzyt_117",styles$1_fileName="_fileName_1hzyt_126",styles$1_contentSection="_contentSection_1hzyt_133",styles$1_contentPlaceholder="_contentPlaceholder_1hzyt_141",styles$1_statusText="_statusText_1hzyt_152",styles$1_errorText="_errorText_1hzyt_159",styles$1_emptyText="_emptyText_1hzyt_166",EXT_COLORS={js:"#e8d44d",jsx:"#61dafb",ts:"#3178c6",tsx:"#3178c6",json:"#999",md:"#519aba",css:"#a86fd9",scss:"#cd6799",html:"#e34c26",py:"#3572a5",go:"#00add8",rs:"#dea584"};function getFileIcon(name){const ext=name.includes(".")?name.split(".").pop().toLowerCase():"",color=EXT_COLORS[ext]||"#888";return jsxRuntimeExports.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:color,strokeWidth:"1.5",children:[jsxRuntimeExports.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),jsxRuntimeExports.jsx("polyline",{points:"14 2 14 8 20 8"})]})}function MobileTreeNode({item:item,path:path,depth:depth,expandedPaths:expandedPaths,onToggleExpand:onToggleExpand,currentFile:currentFile,onFileClick:onFileClick}){const[children,setChildren]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!1),childPath=path?`${path}/${item.name}`:item.name,expanded=expandedPaths.has(childPath),isDir="directory"===item.type,isSelected=!isDir&¤tFile===childPath,isGitIgnored=item.gitIgnored||!1;reactExports.useEffect(()=>{isDir&&expanded&&null===children&&!loading&&(setLoading(!0),fetch(apiUrl(`/api/files?path=${encodeURIComponent(childPath)}`)).then(r=>r.ok?r.json():Promise.reject()).then(data=>{setChildren(data),setLoading(!1)}).catch(()=>{setLoading(!1)}))},[expanded]);const handleClick=reactExports.useCallback(()=>{isDir?onToggleExpand(childPath):onFileClick(childPath)},[isDir,childPath,onToggleExpand,onFileClick]);return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:`${styles$1_treeItem} ${isSelected?styles$1_treeItemActive:""} ${isGitIgnored?styles$1_treeItemIgnored:""}`,style:{paddingLeft:8+16*depth},onClick:handleClick,children:[isDir?jsxRuntimeExports.jsx("span",{className:`${styles$1_arrow} ${expanded?styles$1_arrowExpanded:""}`,children:jsxRuntimeExports.jsx("svg",{width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntimeExports.jsx("polyline",{points:"9 6 15 12 9 18"})})}):jsxRuntimeExports.jsx("span",{style:{width:16,flexShrink:0}}),jsxRuntimeExports.jsx("span",{className:styles$1_icon,children:isDir?jsxRuntimeExports.jsx("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"#c09553",stroke:"none",children:jsxRuntimeExports.jsx("path",{d:"M2 6c0-1.1.9-2 2-2h5l2 2h9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6z"})}):getFileIcon(item.name)}),jsxRuntimeExports.jsx("span",{className:styles$1_fileName,children:item.name}),loading&&jsxRuntimeExports.jsx("span",{style:{fontSize:10,color:"var(--text-disabled)"},children:"..."})]}),isDir&&expanded&&children&&children.map(child=>jsxRuntimeExports.jsx(MobileTreeNode,{item:child,path:childPath,depth:depth+1,expandedPaths:expandedPaths,onToggleExpand:onToggleExpand,currentFile:currentFile,onFileClick:onFileClick},child.name))]})}function MobileFileExplorer({visible:visible,onClose:onClose,targetFile:targetFile,projectName:projectName}){const[items,setItems]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[error,setError]=reactExports.useState(null),[expandedPaths,setExpandedPaths]=useSessionStoragePersistedSet({projectName:projectName,load:loadExpandedPaths,save:saveExpandedPaths}),[currentFile,setCurrentFile]=reactExports.useState(null),mounted=reactExports.useRef(!0),lastTargetRef=reactExports.useRef(null);reactExports.useEffect(()=>(mounted.current=!0,visible?(setLoading(!0),setError(null),fetch(apiUrl("/api/files?path=")).then(r=>r.ok?r.json():Promise.reject()).then(data=>{mounted.current&&(setItems(data),setLoading(!1))}).catch(()=>{mounted.current&&(setError(t("ui.fileLoadError")),setLoading(!1))}),()=>{mounted.current=!1}):(setCurrentFile(null),void(lastTargetRef.current=null))),[visible]),reactExports.useEffect(()=>{targetFile&&visible&&lastTargetRef.current!==targetFile.file&&(lastTargetRef.current=targetFile.file,setCurrentFile(targetFile.file),targetFile.ancestors&&targetFile.ancestors.length>0&&setExpandedPaths(prev=>{const next=new Set(prev);return targetFile.ancestors.forEach(p=>next.add(p)),next}))},[targetFile,visible]);const handleToggleExpand=reactExports.useCallback(path=>{setExpandedPaths(prev=>{const next=new Set(prev);return next.has(path)?next.delete(path):next.add(path),next})},[]),handleFileClick=reactExports.useCallback(path=>{setCurrentFile(path)},[]),handleFileClose=reactExports.useCallback(()=>{setCurrentFile(null)},[]),itemCount=items?items.length:0;return jsxRuntimeExports.jsxs("div",{className:styles$1_container,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_fileListSection,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_header,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_headerLeft,children:[jsxRuntimeExports.jsx("span",{className:styles$1_headerTitle,children:t("ui.projectFolder")}),jsxRuntimeExports.jsx("span",{className:styles$1_fileCount,children:itemCount})]}),onClose&&jsxRuntimeExports.jsx("button",{className:styles$1_closeBtn,onClick:onClose,children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_treeContainer,children:[loading&&jsxRuntimeExports.jsx("div",{className:styles$1_statusText,children:t("ui.loading")}),error&&jsxRuntimeExports.jsx("div",{className:styles$1_errorText,children:t("ui.fileLoadError")}),!loading&&!error&&(!items||0===items.length)&&jsxRuntimeExports.jsx("div",{className:styles$1_emptyText,children:t("ui.mobileFileExplorerHint")}),!loading&&!error&&items&&items.map(item=>jsxRuntimeExports.jsx(MobileTreeNode,{item:item,path:"",depth:0,expandedPaths:expandedPaths,onToggleExpand:handleToggleExpand,currentFile:currentFile,onFileClick:handleFileClick},item.name))]})]}),jsxRuntimeExports.jsx("div",{className:styles$1_contentSection,children:currentFile?isImageFile(currentFile)?jsxRuntimeExports.jsx(ImageViewer,{filePath:currentFile,onClose:handleFileClose}):jsxRuntimeExports.jsx(FileContentView,{filePath:currentFile,onClose:handleFileClose}):jsxRuntimeExports.jsxs("div",{className:styles$1_contentPlaceholder,children:[jsxRuntimeExports.jsx("svg",{width:"32",height:"32",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",children:jsxRuntimeExports.jsx("path",{d:"M2 6c0-1.1.9-2 2-2h5l2 2h9a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V6z"})}),jsxRuntimeExports.jsx("span",{children:t("ui.mobileFileExplorerHint")})]})})]})}const styles_container="_container_1bb9n_1",styles_header="_header_1bb9n_9",styles_headerTitle="_headerTitle_1bb9n_18",styles_closeBtn="_closeBtn_1bb9n_24",styles_content="_content_1bb9n_38",styles_empty="_empty_1bb9n_47",styles_fixedTable="_fixedTable_1bb9n_54",styles_ellipsisCell="_ellipsisCell_1bb9n_58",styles_thLeft="_thLeft_1bb9n_65",styles_colWide="_colWide_1bb9n_69",styles_colNarrow="_colNarrow_1bb9n_73",REASON_KEYS=["ttl","system_change","tools_change","model_change","msg_truncated","msg_modified","key_change"],I18N_MAP={ttl:"cacheLoss.ttl",system_change:"cacheLoss.systemChange",tools_change:"cacheLoss.toolsChange",model_change:"cacheLoss.modelChange",msg_truncated:"cacheLoss.msgTruncated",msg_modified:"cacheLoss.msgModified",key_change:"cacheLoss.keyChange"};function MobileStats({requests:requests=[],visible:visible,onClose:onClose}){const{byModel:byModel,models:models,toolStats:toolStats,skillStats:skillStats,cacheStats:cacheStats,activeReasons:activeReasons,totalCount:totalCount,totalCache:totalCache,hasCacheStats:hasCacheStats,subAgentEntries:subAgentEntries,hasSubAgentStats:hasSubAgentStats,teammateEntries:teammateEntries,hasTeammateStats:hasTeammateStats,isEmpty:isEmpty}=reactExports.useMemo(()=>{const byModel2=computeTokenStats(requests),models2=Object.keys(byModel2),toolStats2=computeToolUsageStats(requests),skillStats2=computeSkillUsageStats(requests),cacheStats2=computeCacheRebuildStats(requests),activeReasons2=REASON_KEYS.filter(k=>cacheStats2[k].count>0),totalCount2=activeReasons2.reduce((sum,k)=>sum+cacheStats2[k].count,0),totalCache2=activeReasons2.reduce((sum,k)=>sum+cacheStats2[k].cacheCreate,0),hasCacheStats2=activeReasons2.length>0,subAgentCounts={},teammateCounts={};for(let i=0;i<requests.length;i++){const cls=classifyRequest(requests[i],requests[i+1]);if("SubAgent"===cls.type){const label=cls.subType||"Other";subAgentCounts[label]=(subAgentCounts[label]||0)+1}else if("Teammate"===cls.type){const label=cls.subType||"Teammate";teammateCounts[label]=(teammateCounts[label]||0)+1}}const subAgentEntries2=Object.entries(subAgentCounts).sort((a,b)=>b[1]-a[1]),hasSubAgentStats2=subAgentEntries2.length>0,teammateEntries2=Object.entries(teammateCounts).sort((a,b)=>b[1]-a[1]),hasTeammateStats2=teammateEntries2.length>0,isEmpty2=0===models2.length&&0===toolStats2.length&&!hasCacheStats2&&!hasSubAgentStats2&&!hasTeammateStats2&&0===skillStats2.length;return{byModel:byModel2,models:models2,toolStats:toolStats2,skillStats:skillStats2,cacheStats:cacheStats2,activeReasons:activeReasons2,totalCount:totalCount2,totalCache:totalCache2,hasCacheStats:hasCacheStats2,subAgentEntries:subAgentEntries2,hasSubAgentStats:hasSubAgentStats2,teammateEntries:teammateEntries2,hasTeammateStats:hasTeammateStats2,isEmpty:isEmpty2}},[requests]);return visible?jsxRuntimeExports.jsxs("div",{className:styles_container,children:[jsxRuntimeExports.jsxs("div",{className:styles_header,children:[jsxRuntimeExports.jsx("span",{className:styles_headerTitle,children:t("ui.tokenStats")}),jsxRuntimeExports.jsx("button",{className:styles_closeBtn,onClick:onClose,children:jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsx("div",{className:styles_content,children:isEmpty?jsxRuntimeExports.jsx("div",{className:styles_empty,children:"—"}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[skillStats.length>0&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.skillUsageStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles_thLeft}`,children:t("ui.stats.skill")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[skillStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),skillStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.total")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:skillStats.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasSubAgentStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.subAgentStats")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles_thLeft}`,children:t("ui.stats.subAgent")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[subAgentEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`SubAgent-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),subAgentEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.total")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:subAgentEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasTeammateStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:t("ui.teammateStats.title")}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles_thLeft}`,children:t("ui.teammateStats.name")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[teammateEntries.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:name}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),teammateEntries.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.total")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:teammateEntries.reduce((s,e)=>s+e[1],0)})]})]})]})]}),toolStats.length>0&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:[t("ui.toolUsageStats")," ",jsxRuntimeExports.jsx(ToolsHelp,{})]}),jsxRuntimeExports.jsxs("table",{className:sharedChrome.statsTable,children:[jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles_thLeft}`,children:t("ui.stats.tool")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[toolStats.map(([name,count])=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsxs("td",{className:sharedChrome.label,children:[name," ",jsxRuntimeExports.jsx(ConceptHelp,{doc:`Tool-${name}`})]}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:count})]},name)),toolStats.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.total")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:toolStats.reduce((s,e)=>s+e[1],0)})]})]})]})]}),hasCacheStats&&jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelName,children:[t("ui.stats.mainAgent"),jsxRuntimeExports.jsx(ConceptHelp,{doc:"MainAgent"})," ",t("ui.cacheRebuildStats"),jsxRuntimeExports.jsx(ConceptHelp,{doc:"CacheRebuild"})]}),jsxRuntimeExports.jsxs("table",{className:`${sharedChrome.statsTable} ${styles_fixedTable}`,children:[jsxRuntimeExports.jsxs("colgroup",{children:[jsxRuntimeExports.jsx("col",{className:styles_colWide}),jsxRuntimeExports.jsx("col",{className:styles_colNarrow}),jsxRuntimeExports.jsx("col",{className:styles_colNarrow})]}),jsxRuntimeExports.jsx("thead",{children:jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.th} ${styles_thLeft}`,children:t("ui.cacheRebuild.reason")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.count")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.cacheRebuild.cacheCreate")})]})}),jsxRuntimeExports.jsxs("tbody",{children:[activeReasons.map(k=>jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:`${sharedChrome.label} ${styles_ellipsisCell}`,title:t(`ui.${I18N_MAP[k]}`),children:t(`ui.${I18N_MAP[k]}`)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:cacheStats[k].count}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(cacheStats[k].cacheCreate)})]},k)),activeReasons.length>1&&jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rebuildTotalRow,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.total")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:totalCount}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalCache)})]})]})]})]}),models.map(model=>{const s=byModel[model],totalInput=s.input+s.cacheCreation+s.cacheRead,cacheHitRate=totalInput>0?(s.cacheRead/totalInput*100).toFixed(1):"0.0";return jsxRuntimeExports.jsxs("div",{className:sharedChrome.modelCard,children:[jsxRuntimeExports.jsx("div",{className:sharedChrome.modelName,children:model}),jsxRuntimeExports.jsx("table",{className:sharedChrome.statsTable,children:jsxRuntimeExports.jsxs("tbody",{children:[jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.token")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.stats.input")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.stats.output")})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(totalInput)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.output)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.stats.cache")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.stats.create")}),jsxRuntimeExports.jsx("td",{className:sharedChrome.th,children:t("ui.stats.read")})]}),jsxRuntimeExports.jsxs("tr",{className:sharedChrome.rowBorder,children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheCreation)}),jsxRuntimeExports.jsx("td",{className:sharedChrome.td,children:formatTokenCount(s.cacheRead)})]}),jsxRuntimeExports.jsxs("tr",{children:[jsxRuntimeExports.jsx("td",{className:sharedChrome.label,children:t("ui.hitRate")}),jsxRuntimeExports.jsxs("td",{colSpan:2,className:sharedChrome.td,children:[cacheHitRate,"%"]})]})]})})]},model)})]})})]}):null}const CALIBRATION_MODELS=appConfig.calibrationModels;function MobileCtxLabelText({projectName:projectName}){const alias=useProjectAlias(projectName),base=`${t("ui.liveMonitoring")}${projectName?`: ${projectName}`:""}`;return jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[base,alias?` (${alias})`:""]})}const _Mobile=class _Mobile extends AppBase{constructor(props){super(props),__publicField(this,"handleCalibrationModelChange",value=>{this.setState({calibrationModel:value}),localStorage.setItem("ccv_calibrationModel",value)}),__publicField(this,"reloadFsSkills",async()=>loadFsSkills(this,{isLocalLog:this._isLocalLog})),__publicField(this,"handleOpenSkillsModal",async()=>{const cached=this.state._fsSkills,needFetch=!Array.isArray(cached);if(this.setState(prev=>{var _a;return{_skillsModal:{open:!0,loading:needFetch,skills:Array.isArray(cached)?sortSkillsDefault(cached):[],error:null,toggling:(null==(_a=prev._skillsModal)?void 0:_a.toggling)||new Set},mobileCachePanelVisible:!1}},()=>this._onCachePanelOpenChange(!1)),needFetch){const result=await this.reloadFsSkills();this.setState(prev=>({_skillsModal:{...prev._skillsModal,loading:!1,skills:result.ok?sortSkillsDefault(result.skills):[],error:result.ok?null:result.reason}}))}}),__publicField(this,"handleToggleSkill",skill=>handleSkillToggle(this,skill)),__publicField(this,"handleDeleteSkill",skill=>handleSkillDelete(this,skill)),__publicField(this,"loadMemory",async()=>loadProjectMemory(this)),__publicField(this,"handleRefreshMemory",async()=>{if(this.state._memoryRefreshing)return;this.setState({_memoryRefreshing:!0});const seq=++this._memorySeq;let ok=!1,stale=!1;try{const r=await fetch(apiUrl("/api/project-memory")),data=await r.json();seq!==this._memorySeq?stale=!0:r.ok?(this.setState({_memory:data}),ok=!0):this.setState({_memory:!1})}catch{seq!==this._memorySeq?stale=!0:this.setState({_memory:!1})}finally{stale||this.setState({_memoryRefreshing:!1})}stale||(ok?staticMethods.success(t("ui.memoryRefreshSuccess")):staticMethods.error(t("ui.memoryRefreshFailed"),5))}),__publicField(this,"loadMemoryDetail",async name=>{const seq=++this._memoryDetailSeq;this.setState({_memoryDetail:{name:name,loading:!0}});try{const r=await fetch(apiUrl(`/api/project-memory?file=${encodeURIComponent(name)}`)),data=await r.json();if(seq!==this._memoryDetailSeq)return;if(!r.ok)return void this.setState({_memoryDetail:{name:name,error:data.error||`http:${r.status}`}});this.setState({_memoryDetail:{name:name,content:data.content||""}})}catch(e){seq===this._memoryDetailSeq&&this.setState({_memoryDetail:{name:name,error:e.message||"network"}})}}),__publicField(this,"_onCachePanelOpenChange",open=>{open&&null===this.state._fsSkills&&!this._isLocalLog&&this.reloadFsSkills(),open&&null===this.state._memory&&this.loadMemory(),open&&null===this.state._claudeMd&&this.loadClaudeMdList()}),__publicField(this,"loadClaudeMdList",async()=>loadClaudeMdList(this)),__publicField(this,"loadClaudeMdDetail",async(id,tail,scope)=>{const seq=++this._claudeMdDetailSeq,title=`${t("global"===scope?"ui.claudeMdScopeGlobal":"ui.claudeMdScopeProject")} · ${tail}`;this.setState({_claudeMdDetail:{name:title,loading:!0}});try{const r=await fetch(apiUrl(`/api/claude-md?id=${encodeURIComponent(id)}`)),data=await r.json();if(seq!==this._claudeMdDetailSeq)return;if(!r.ok)return void this.setState({_claudeMdDetail:{name:title,error:data.error||`http:${r.status}`}});this.setState({_claudeMdDetail:{name:title,content:data.content||""}})}catch(e){seq===this._claudeMdDetailSeq&&this.setState({_claudeMdDetail:{name:title,error:e.message||"network"}})}}),__publicField(this,"_handleMobileOpenFile",(filePath,ancestors)=>{this.state.localLogFile||this.setState({...this._closeAllMobileOverlays(),mobileFileExplorerVisible:!0,mobileFileExplorerTarget:{file:filePath,ancestors:ancestors||[]}})}),__publicField(this,"handleExportPromptsTxt",prompts=>{if(!prompts||0===prompts.length)return;const blocks=[];for(const p of prompts){const lines=[],ts=p.timestamp?new Date(p.timestamp).toLocaleString():"";ts&&lines.push(`${ts}:\n`);const textParts=(p.segments||[]).filter(seg=>"text"===seg.type).map(seg=>seg.content);textParts.length>0&&lines.push(textParts.join("\n")),blocks.push(lines.join("\n"))}if(0===blocks.length)return;const blob=new Blob([blocks.join("\n\n\n\n")],{type:"text/plain;charset=utf-8"}),url=URL.createObjectURL(blob),a=document.createElement("a");a.href=url,a.download=`user-prompts-${(new Date).toISOString().slice(0,10)}.txt`,a.click(),URL.revokeObjectURL(url)}),__publicField(this,"handlePendingPermission",data=>{this.setState({globalPermission:data})}),__publicField(this,"handlePendingPlanApproval",data=>{this.setState({globalPlanApproval:data})}),__publicField(this,"handleAutoApproveChange",seconds=>{this.setState({autoApproveSeconds:seconds}),this.context.updatePreferences({autoApproveSeconds:seconds})}),__publicField(this,"_handleTerminalFilePath",path=>{this.setState(prev=>({terminalPendingImages:[...prev.terminalPendingImages,{path:path,source:"terminal"}]}))}),__publicField(this,"_handleRemoveTerminalImage",idx=>{this.setState(prev=>({terminalPendingImages:prev.terminalPendingImages.filter((_,i)=>i!==idx)}))}),__publicField(this,"_handleClearTerminalImages",()=>{this.setState({terminalPendingImages:[]})}),Object.assign(this.state,{mobileMenuVisible:!1,mobileStatsVisible:!1,mobileGitDiffVisible:!1,mobileChatVisible:!1,mobileLogMgmtVisible:!1,mobileSettingsVisible:!1,projectPrefsModalOpen:!1,mobilePromptVisible:!1,mobileTerminalVisible:!1,mobileFileExplorerVisible:!1,mobileCachePanelVisible:!1,globalPermission:null,globalPlanApproval:null,autoApproveSeconds:0,hasGit:!0,terminalPendingImages:[],_fsSkills:null,_memory:null,_memoryRefreshing:!1,_memoryDetail:null,_claudeMd:null,_claudeMdDetail:null,pluginModalVisible:!1,processModalVisible:!1,proxyModalVisible:!1,_skillsModal:{open:!1,loading:!1,skills:[],error:null,toggling:new Set},calibrationModel:readCalibrationModel(CALIBRATION_MODELS)}),this._lastContextPercent=0,this._fsSkillsSeq=0,this._memorySeq=0,this._memoryDetailSeq=0,this._claudeMdSeq=0,this._claudeMdDetailSeq=0}_closeAllMobileOverlays(){return{mobileMenuVisible:!1,mobileStatsVisible:!1,mobileGitDiffVisible:!1,mobileChatVisible:!1,mobileLogMgmtVisible:!1,mobileSettingsVisible:!1,mobilePromptVisible:!1,mobileTerminalVisible:!1,mobileFileExplorerVisible:!1,mobileCachePanelVisible:!1,pluginModalVisible:!1,processModalVisible:!1,proxyModalVisible:!1}}componentDidMount(){var _a,_b,_c,_d;if(super.componentDidMount(),fetch(apiUrl("/api/git-repos")).then(r=>r.ok?r.json():Promise.reject()).then(data=>{var _a2;(null==(_a2=data.repos)?void 0:_a2.length)||this.setState({hasGit:!1,mobileGitDiffVisible:!1})}).catch(()=>{fetch(apiUrl("/api/git-status")).then(r=>{r.ok||this.setState({hasGit:!1,mobileGitDiffVisible:!1})}).catch(()=>this.setState({hasGit:!1,mobileGitDiffVisible:!1}))}),isIOS&&!isPad&&window.visualViewport&&(this._onVisualViewportChange=()=>{const el=this._layoutRef.current;if(!el)return;const vv=window.visualViewport;el.style.position="fixed",el.style.top=`${vv.offsetTop}px`,el.style.height=`${vv.height}px`,el.style.width="100%",el.style.left="0"},window.visualViewport.addEventListener("resize",this._onVisualViewportChange),window.visualViewport.addEventListener("scroll",this._onVisualViewportChange),this._onVisualViewportChange()),isPad){const inElectronTab="undefined"!=typeof window&&!!window.tabBridge;this._modeSwitchDialog=null,inElectronTab?(this._onDeviceMode=on=>{const target=on?"pad":"pc";localStorage.getItem("ccv_viewMode")!==target&&setViewMode(target)},this._disposeDeviceMode=null==(_b=(_a=window.tabBridge).onDeviceModeChange)?void 0:_b.call(_a,this._onDeviceMode),null==(_d=(_c=window.tabBridge).requestDeviceMode)||_d.call(_c)):(this._mqlWide=window.matchMedia("(min-width: 1400px)"),this._onWideChange=e=>{e.matches?this._modeSwitchDialog=Modal.confirm({title:t("ui.modeSwitchTitle"),content:t("ui.modeSwitchToFullView"),okText:t("ui.ok"),onOk:()=>{this._modeSwitchDialog=null,setViewMode("pc")},onCancel:()=>{this._modeSwitchDialog=null}}):this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null)},this._mqlWide.addEventListener("change",this._onWideChange))}}componentWillUnmount(){this._onVisualViewportChange&&window.visualViewport&&(window.visualViewport.removeEventListener("resize",this._onVisualViewportChange),window.visualViewport.removeEventListener("scroll",this._onVisualViewportChange)),this._disposeDeviceMode&&(this._disposeDeviceMode(),this._disposeDeviceMode=null),this._mqlWide&&this._mqlWide.removeEventListener("change",this._onWideChange),this._modeSwitchDialog&&(this._modeSwitchDialog.destroy(),this._modeSwitchDialog=null),this._fsSkillsSeq++,this._memorySeq++,this._memoryDetailSeq++,this._claudeMdSeq++,this._claudeMdDetailSeq++,super.componentWillUnmount()}componentDidUpdate(prevProps,prevState){super.componentDidUpdate&&super.componentDidUpdate(prevProps,prevState),prevState.projectName!==this.state.projectName&&(this._fsSkillsSeq++,this._memorySeq++,this._claudeMdSeq++,this._claudeMdDetailSeq++,this.setState({_fsSkills:null,_memory:null,_memoryDetail:null,_memoryRefreshing:!1,_claudeMd:null,_claudeMdDetail:null}))}static parseSegments(text){const segments=[],regex=/<([a-zA-Z_][\w-]*)(?:\s[^>]*)?>[\s\S]*?<\/\1>/g;let match,lastIndex=0;for(;null!==(match=regex.exec(text));){const before=text.slice(lastIndex,match.index).trim();before&&segments.push({type:"text",content:before});const tagName=match[1];if(lastIndex=match.index+match[0].length,_Mobile.COMMAND_TAGS.has(tagName))continue;const innerRegex=new RegExp(`^<${tagName}(?:\\s[^>]*)?>([\\s\\S]*)<\\/${tagName}>$`),innerMatch=match[0].match(innerRegex),content2=innerMatch?innerMatch[1].trim():match[0].trim();segments.push({type:"system",content:content2,label:tagName})}const after=text.slice(lastIndex).trim();return after&&segments.push({type:"text",content:after}),segments}static extractUserTexts(messages){const userMsgs=[],fullTexts=[];let slashCmd=null;for(const msg of messages)if("user"===msg.role)if("string"==typeof msg.content){const text=extractDisplayText(parseImOrigin(msg.content).text);if(!text)continue;if(/Implement the following plan:/i.test(text))continue;userMsgs.push(text),fullTexts.push(text)}else if(Array.isArray(msg.content)){const{commands:commands,textBlocks:textBlocks}=classifyUserContent(msg.content);commands.length>0&&(slashCmd=commands[commands.length-1]);const userParts=[];for(const b of textBlocks)/Implement the following plan:/i.test((b.text||"").trim())||userParts.push(b.text.trim());const allParts=msg.content.filter(b=>{var _a;return"text"===b.type&&(null==(_a=b.text)?void 0:_a.trim())}).map(b=>b.text.trim());userParts.length>0&&(userMsgs.push(userParts.join("\n")),fullTexts.push(allParts.join("\n")))}return{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}}extractUserPrompts(requests){var _a;const prompts=[],seen=new Set;let prevSlashCmd=null;const mainAgentRequests=requests.filter(r=>isMainAgent(r));for(let ri=0;ri<mainAgentRequests.length;ri++){const req=mainAgentRequests[ri],messages=(null==(_a=req.body)?void 0:_a.messages)||[],timestamp=req.timestamp||"",{userMsgs:userMsgs,fullTexts:fullTexts,slashCmd:slashCmd}=_Mobile.extractUserTexts(messages);slashCmd&&"/compact"!==slashCmd&&slashCmd!==prevSlashCmd&&prompts.push({type:"prompt",segments:[{type:"text",content:slashCmd}],timestamp:timestamp}),prevSlashCmd=slashCmd;for(let i=0;i<userMsgs.length;i++){const key=userMsgs[i];if(seen.has(key))continue;seen.add(key);const raw=fullTexts[i]||key;prompts.push({type:"prompt",segments:_Mobile.parseSegments(raw),timestamp:timestamp})}}return prompts}renderOriginalPrompt(p){const textSegments=p.segments.filter(seg=>"text"===seg.type);return 0===textSegments.length?null:jsxRuntimeExports.jsx("div",{className:styles$3.mobilePromptCard,children:textSegments.map((seg,j)=>jsxRuntimeExports.jsx("pre",{className:styles$3.mobilePromptPreText,children:seg.content},j))})}_captureDropContext(){return{toTerminal:this.state.mobileTerminalVisible}}_dispatchUploadedFiles(results,ctx){const uploaded=results.filter(Boolean);uploaded.length&&((null==ctx?void 0:ctx.toTerminal)?this.setState(prev=>({terminalPendingImages:[...prev.terminalPendingImages,...uploaded.map(r=>({path:r.path,source:"drop"}))]})):this.setState(prev=>({pendingUploadPaths:[...prev.pendingUploadPaths||[],...uploaded.map(r=>`"${r.path}"`)]})))}render(){var _a,_b,_c,_d,_e,_f,_g,_h,_i;const{filteredRequests:filteredRequests,deepRequests:deepRequests,fileLoading:fileLoading,fileLoadingCount:fileLoadingCount,mainAgentSessions:mainAgentSessions}=this.renderPrepare(),prefs=this._prefValues(),{sessions:displaySessions,upperBoundTs:sessionUpperBoundTs}=this._displaySessionsFor(mainAgentSessions);if(this.state.workspaceMode)return this.renderWorkspaceMode();const mobileIsLocalLog=!!this._isLocalLog;let mobileModelName=null;for(let i=filteredRequests.length-1;i>=0;i--){const effective=getEffectiveModel(filteredRequests[i]);if(isMainAgent(filteredRequests[i])&&effective){mobileModelName=effective;break}}let mobileContextPercent=0,mobileContextTokens=0;if(!mobileIsLocalLog){const contextWindow=this.state.contextWindow;let lastMainAgent=null,mobileInputTokens=0;if(filteredRequests.length>0)for(let i=filteredRequests.length-1;i>=0;i--)if(isMainAgent(filteredRequests[i])&&(null==(_b=null==(_a=filteredRequests[i].response)?void 0:_a.body)?void 0:_b.usage)){lastMainAgent=filteredRequests[i];const u=lastMainAgent.response.body.usage;mobileContextTokens=sumUsageContextTokens(u),mobileInputTokens=sumUsageInputTokens(u);break}mobileContextPercent=computeContextPercent({calibrationModel:this.state.calibrationModel,lastMainAgent:lastMainAgent,projectModelHint:this.state.claudeProjectModel,contextWindow:contextWindow,lastTotalTokens:mobileContextTokens,lastInputTokens:mobileInputTokens}),this.state.contextBarLocked?(this._lastContextPercent=0,mobileContextPercent=0,mobileContextTokens=0):(0===mobileContextPercent&&this._lastContextPercent>0?mobileContextPercent=this._lastContextPercent:this._lastContextPercent=mobileContextPercent,this.state.contextBarOptimistic&&(mobileContextPercent=OPTIMISTIC_CLEAR_PERCENT))}const wsOpen=!mobileIsLocalLog&&!this.state.sdkMode;return jsxRuntimeExports.jsx(TerminalWsProvider,{open:wsOpen,children:jsxRuntimeExports.jsx(ApprovalModal,{enabled:isPad&&this.state.approvalPrefs.modalEnabled,soundEnabled:this.state.approvalPrefs.soundEnabled,voicePackPrefs:this.state.approvalPrefs.voicePack,approvalGlobal:this.state.approvalGlobal,dismissedIds:this.state.approvalDismissedIds,onDismiss:this.handleApprovalDismiss,onJumpTab:this.handleApprovalJumpTab,otherTabs:this.state.approvalOtherTabs,children:jsxRuntimeExports.jsx(ConfigProvider,{theme:this.themeConfig,children:jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCLIRoot,ref:this._layoutRef,onDragOver:this._onDragOver,onDragLeave:this._onDragLeave,onDrop:this._onDrop,children:[this.state.isDragging&&jsxRuntimeExports.jsx("div",{className:styles$3.dragOverlay,children:jsxRuntimeExports.jsxs("div",{className:styles$3.dragOverlayContent,children:[jsxRuntimeExports.jsx(RefIcon$1,{className:styles$3.dragIcon}),jsxRuntimeExports.jsx("p",{children:t("ui.dragDropHint")})]})}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCLIHeader,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCLIHeaderLeft,children:[jsxRuntimeExports.jsx("button",{className:styles$3.mobileMenuBtn,onClick:()=>this.setState(prev=>({mobileMenuVisible:!prev.mobileMenuVisible})),"aria-label":t("ui.mobileMenu"),"aria-expanded":this.state.mobileMenuVisible,"aria-haspopup":"menu",children:jsxRuntimeExports.jsxs("svg",{width:"18",height:"18",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),jsxRuntimeExports.jsx("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]})}),mobileIsLocalLog?jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx(Badge,{status:"processing",color:"green"}),jsxRuntimeExports.jsx("span",{className:styles$3.mobileCLIStatusLabel,children:t("ui.historyLog",{file:this._localLogFile})})]}):(()=>{const contextPercent=mobileContextPercent,ctxColor=contextSeverityColor(contextPercent),ctxLabel=`${t("ui.liveMonitoring")}${this.state.projectName?`: ${this.state.projectName}`:""}`;return jsxRuntimeExports.jsxs("span",{className:styles$3.mobileCtxTag,style:{borderColor:ctxColor,color:ctxColor,cursor:"pointer"},title:ctxLabel,role:"button",tabIndex:0,"aria-label":t("ui.openCachePanel"),onClick:()=>this.setState(prev=>({...this._closeAllMobileOverlays(),mobileCachePanelVisible:!prev.mobileCachePanelVisible}),()=>this._onCachePanelOpenChange(this.state.mobileCachePanelVisible)),onKeyDown:e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),this.setState(prev=>({...this._closeAllMobileOverlays(),mobileCachePanelVisible:!prev.mobileCachePanelVisible}),()=>this._onCachePanelOpenChange(this.state.mobileCachePanelVisible)))},children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileCtxTagFill,style:{width:`${contextPercent}%`,backgroundColor:ctxColor}}),jsxRuntimeExports.jsx("span",{className:styles$3.mobileCtxTagContent,children:jsxRuntimeExports.jsx(MobileCtxLabelText,{projectName:this.state.projectName})})]})})()]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCLIHeaderRight,children:[mobileIsLocalLog?jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon,{}),onClick:()=>history.back(),className:styles$3.mobileNavBtn,children:t("ui.mobileGoBack")}):this.state.hasGit?jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon$2,{}),onClick:()=>this.setState(prev=>({...this._closeAllMobileOverlays(),mobileGitDiffVisible:!prev.mobileGitDiffVisible})),style:{color:this.state.mobileGitDiffVisible?"var(--color-primary)":"var(--text-tertiary)",fontSize:12},children:this.state.mobileGitDiffVisible?t("ui.mobileGitDiffExit"):t("ui.mobileGitDiffBrowse")}):null,!mobileIsLocalLog&&jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("polyline",{points:"4 17 10 11 4 5"}),jsxRuntimeExports.jsx("line",{x1:"12",y1:"19",x2:"20",y2:"19"})]}),onClick:()=>this.setState(prev=>({...this._closeAllMobileOverlays(),mobileTerminalVisible:!prev.mobileTerminalVisible})),style:{color:this.state.mobileTerminalVisible?"var(--color-primary)":"var(--text-tertiary)",fontSize:12},children:this.state.mobileTerminalVisible?t("ui.mobileTerminalExit"):t("ui.mobileTerminalBrowse")})]}),this.state.mobileMenuVisible&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsx("div",{className:styles$3.mobileMenuOverlay,onClick:()=>this.setState({mobileMenuVisible:!1})}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileMenuDropdown,children:[!mobileIsLocalLog&&jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),mobileFileExplorerVisible:!0})},children:[jsxRuntimeExports.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:jsxRuntimeExports.jsx("path",{d:"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"})}),t("ui.projectFolder")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),mobileLogMgmtVisible:!0}),this.handleImportLocalLogs()},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),jsxRuntimeExports.jsx("polyline",{points:"14 2 14 8 20 8"}),jsxRuntimeExports.jsx("line",{x1:"16",y1:"13",x2:"8",y2:"13"}),jsxRuntimeExports.jsx("line",{x1:"16",y1:"17",x2:"8",y2:"17"})]}),t("ui.logManagement")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),mobilePromptVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),jsxRuntimeExports.jsx("polyline",{points:"14 2 14 8 20 8"}),jsxRuntimeExports.jsx("line",{x1:"12",y1:"18",x2:"12",y2:"12"}),jsxRuntimeExports.jsx("line",{x1:"12",y1:"12",x2:"9",y2:"15"}),jsxRuntimeExports.jsx("line",{x1:"12",y1:"12",x2:"15",y2:"15"})]}),t("ui.userPrompt")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),pluginModalVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("rect",{x:"9",y:"2",width:"6",height:"6",rx:"1"}),jsxRuntimeExports.jsx("rect",{x:"2",y:"9",width:"6",height:"6",rx:"1"}),jsxRuntimeExports.jsx("rect",{x:"16",y:"9",width:"6",height:"6",rx:"1"}),jsxRuntimeExports.jsx("rect",{x:"9",y:"16",width:"6",height:"6",rx:"1"})]}),t("ui.pluginManagement")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),processModalVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("path",{d:"M12 2v4"}),jsxRuntimeExports.jsx("path",{d:"M12 18v4"}),jsxRuntimeExports.jsx("path",{d:"m4.93 4.93 2.83 2.83"}),jsxRuntimeExports.jsx("path",{d:"m16.24 16.24 2.83 2.83"}),jsxRuntimeExports.jsx("path",{d:"M2 12h4"}),jsxRuntimeExports.jsx("path",{d:"M18 12h4"}),jsxRuntimeExports.jsx("path",{d:"m4.93 19.07 2.83-2.83"}),jsxRuntimeExports.jsx("path",{d:"m16.24 7.76 2.83-2.83"})]}),t("ui.processManagement")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),proxyModalVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("polyline",{points:"17 1 21 5 17 9"}),jsxRuntimeExports.jsx("path",{d:"M3 11V9a4 4 0 0 1 4-4h14"}),jsxRuntimeExports.jsx("polyline",{points:"7 23 3 19 7 15"}),jsxRuntimeExports.jsx("path",{d:"M21 13v2a4 4 0 0 1-4 4H3"})]}),t("ui.proxySwitch")]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobileMenuDivider}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),mobileStatsVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("rect",{x:"3",y:"3",width:"7",height:"7"}),jsxRuntimeExports.jsx("rect",{x:"14",y:"3",width:"7",height:"7"}),jsxRuntimeExports.jsx("rect",{x:"3",y:"14",width:"7",height:"7"}),jsxRuntimeExports.jsx("rect",{x:"14",y:"14",width:"7",height:"7"})]}),t("ui.tokenStats")]}),jsxRuntimeExports.jsxs("button",{className:styles$3.mobileMenuItem,onClick:()=>{this.setState({...this._closeAllMobileOverlays(),mobileSettingsVisible:!0})},children:[jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsxRuntimeExports.jsx("circle",{cx:"12",cy:"12",r:"3"}),jsxRuntimeExports.jsx("path",{d:"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"})]}),t("ui.settings")]})]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCLIBody,children:[!mobileIsLocalLog&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[fileLoading&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLoadingOverlay,children:[jsxRuntimeExports.jsx("div",{className:styles$3.mobileLoadingSpinner}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLoadingLabel,children:[t("ui.loadingChat")," ",this._loadingProgressText()]})]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobileChatInner,children:jsxRuntimeExports.jsx(ChatView,{...this._settingsProps(),requests:deepRequests,mainAgentSessions:displaySessions,sessionUpperBoundTs:sessionUpperBoundTs,streamingLatest:this.state.streamingLatest,userProfile:this.state.userProfile,collapseToolResults:prefs.collapseToolResults,expandThinking:prefs.expandThinking,showFullToolContent:prefs.showFullToolContent,onlyCurrentSession:!mobileIsLocalLog,isLocalLog:mobileIsLocalLog,showThinkingSummaries:prefs.showThinkingSummaries,onViewRequest:null,scrollToTimestamp:null,onScrollTsDone:()=>{},cliMode:this.state.cliMode,sdkMode:this.state.sdkMode,terminalVisible:this.state.mobileTerminalVisible,mobileChatVisible:!0,fileLoading:this.state.fileLoading,isStreaming:this.state.isStreaming,onPendingPermission:this.handlePendingPermission,onPendingPlanApproval:this.handlePendingPlanApproval,onPendingAsk:this.handleApprovalAsk,onPendingPtyPlan:this.handleApprovalPtyPlan,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,planAutoApproveSeconds:null==(_c=this.state.approvalPrefs)?void 0:_c.planAutoApproveSeconds,onPlanAutoApproveChange:this.handlePlanAutoApproveChange,ownTabId:this.state.ownTabId,projectName:this.state.projectName,suppressInlineApprovalPanels:!0,pendingUploadPaths:this.state.pendingUploadPaths,onUploadPathsConsumed:this.handleUploadPathsConsumed,uploadingDrop:this.state.uploadingDrop,onMobileOpenFile:this._handleMobileOpenFile,onClearContextOptimistic:this.handleClearContextOptimistic,onUserMessageSent:this.handleUserMessageSent})})]}),!mobileIsLocalLog&&jsxRuntimeExports.jsx("div",{className:`${styles$3.mobileChatOverlay} ${this.state.mobileTerminalVisible?styles$3.mobileChatOverlayVisible:""}`,children:jsxRuntimeExports.jsx(TerminalPanel,{...this._settingsProps(),modelName:mobileModelName,onFilePath:this._handleTerminalFilePath,pendingImages:this.state.terminalPendingImages,onRemovePendingImage:this._handleRemoveTerminalImage,onClearPendingImages:this._handleClearTerminalImages,onClearContextOptimistic:this.handleClearContextOptimistic,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange,planAutoApproveSeconds:null==(_d=this.state.approvalPrefs)?void 0:_d.planAutoApproveSeconds,onPlanAutoApproveChange:this.handlePlanAutoApproveChange})}),jsxRuntimeExports.jsx("div",{className:`${styles$3.mobileGitDiffOverlay} ${this.state.mobileGitDiffVisible?styles$3.mobileGitDiffOverlayVisible:""}`,children:jsxRuntimeExports.jsx("div",{className:styles$3.mobileGitDiffInner,children:jsxRuntimeExports.jsx(MobileGitDiff,{visible:this.state.mobileGitDiffVisible,onClose:()=>this.setState({mobileGitDiffVisible:!1})})})}),jsxRuntimeExports.jsx("div",{className:`${styles$3.mobileCachePanelOverlay} ${this.state.mobileCachePanelVisible?styles$3.mobileCachePanelOverlayVisible:""}`,children:jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCachePanelInner,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileCachePanelHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileCachePanelTitle,children:t("ui.contextManagement")}),jsxRuntimeExports.jsx("button",{className:styles$3.mobileCachePanelClose,onClick:()=>this.setState({mobileCachePanelVisible:!1},()=>this._onCachePanelOpenChange(!1)),"aria-label":t("ui.closeCachePanel"),children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobileCachePanelBody,children:this.state.mobileCachePanelVisible&&jsxRuntimeExports.jsx(CachePopoverContent,{inDrawer:!0,requests:deepRequests,serverCachedContent:this.state.serverCachedContent,contextPercent:mobileContextPercent,contextTokens:mobileContextTokens,fsSkills:this.state._fsSkills,onSkillImported:this.reloadFsSkills,onOpenSkillsModal:this.handleOpenSkillsModal,memory:this.state._memory,memoryRefreshing:this.state._memoryRefreshing,claudeMd:this.state._claudeMd,calibrationModel:this.state.calibrationModel,onCalibrationModelChange:this.handleCalibrationModelChange,onOpenMemoryDetail:this.loadMemoryDetail,onOpenClaudeMd:this.loadClaudeMdDetail,onRefreshMemory:this.handleRefreshMemory})})]})}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._memoryDetail,onClose:()=>this.setState({_memoryDetail:null}),onOpenMemoryDetail:this.loadMemoryDetail}),jsxRuntimeExports.jsx(MemoryDetailModal,{detail:this.state._claudeMdDetail,onClose:()=>this.setState({_claudeMdDetail:null}),linkMode:"passthrough"}),jsxRuntimeExports.jsx(SkillsManagerModal,{open:(null==(_e=this.state._skillsModal)?void 0:_e.open)||!1,loading:(null==(_f=this.state._skillsModal)?void 0:_f.loading)||!1,error:(null==(_g=this.state._skillsModal)?void 0:_g.error)||null,skills:(null==(_h=this.state._skillsModal)?void 0:_h.skills)||[],toggling:null==(_i=this.state._skillsModal)?void 0:_i.toggling,onToggle:s=>this.handleToggleSkill(s),onDelete:s=>this.handleDeleteSkill(s),onClose:()=>this.setState(prev=>({_skillsModal:{...prev._skillsModal,open:!1}}))}),jsxRuntimeExports.jsx(ProjectPrefsManagerModal,{open:this.state.projectPrefsModalOpen,onClose:()=>this.setState({projectPrefsModalOpen:!1}),onChanged:this.refreshAllPrefs}),jsxRuntimeExports.jsx(PluginModal,{open:this.state.pluginModalVisible,onClose:()=>this.setState({pluginModalVisible:!1})}),jsxRuntimeExports.jsx(ProcessModal,{open:this.state.processModalVisible,onClose:()=>this.setState({processModalVisible:!1})}),jsxRuntimeExports.jsx(ProxyModal,{open:this.state.proxyModalVisible,onClose:()=>this.setState({proxyModalVisible:!1}),proxyProfiles:this.state.proxyProfiles,activeProxyId:this.state.activeProxyId,defaultConfig:this.state.defaultConfig,onProxyProfileChange:this.handleProxyProfileChange}),jsxRuntimeExports.jsx("div",{className:`${styles$3.mobileFileExplorerOverlay} ${this.state.mobileFileExplorerVisible?styles$3.mobileFileExplorerOverlayVisible:""}`,children:jsxRuntimeExports.jsx("div",{className:styles$3.mobileFileExplorerInner,children:jsxRuntimeExports.jsx(MobileFileExplorer,{visible:this.state.mobileFileExplorerVisible,onClose:()=>this.setState({mobileFileExplorerVisible:!1,mobileFileExplorerTarget:null}),targetFile:this.state.mobileFileExplorerTarget,projectName:this.state.projectName})})}),jsxRuntimeExports.jsx("div",{className:`${styles$3.mobileStatsOverlay} ${this.state.mobileStatsVisible?styles$3.mobileStatsOverlayVisible:""}`,children:jsxRuntimeExports.jsx("div",{className:styles$3.mobileStatsInner,children:jsxRuntimeExports.jsx(MobileStats,{requests:deepRequests,visible:this.state.mobileStatsVisible,onClose:()=>this.setState({mobileStatsVisible:!1})})})}),jsxRuntimeExports.jsxs("div",{className:`${styles$3.mobileLogMgmtOverlay} ${this.state.mobileLogMgmtVisible?styles$3.mobileLogMgmtOverlayVisible:""}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLogMgmtHeader,children:[jsxRuntimeExports.jsxs("span",{className:styles$3.mobileLogMgmtTitle,children:[jsxRuntimeExports.jsx(OpenFolderIcon,{apiEndpoint:apiUrl("/api/open-log-dir"),title:t("ui.openLogDir"),size:14}),t("ui.importLocalLogs")]}),jsxRuntimeExports.jsx("button",{className:styles$3.mobileLogMgmtClose,onClick:()=>this.setState({mobileLogMgmtVisible:!1,selectedLogs:new Set}),children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLogMgmtActions,children:[jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$3,{}),disabled:0===this.state.selectedLogs.size,onClick:this.handleDeleteLogs,style:0===this.state.selectedLogs.size?{color:"var(--text-muted)",borderColor:"var(--border-light)"}:{color:"var(--color-error-light)",borderColor:"var(--color-error-light)"},children:t("ui.deleteLogs")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$4,{spin:this.state.refreshingStats}),loading:this.state.refreshingStats,onClick:this.handleRefreshStats,children:t("ui.refreshStats")})]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobileLogMgmtBody,children:this.state.localLogsLoading?jsxRuntimeExports.jsx("div",{className:styles$3.spinCenter,children:jsxRuntimeExports.jsx(Spin,{})}):(()=>{const currentLogs=this.state.localLogs[this.state.currentProject];return currentLogs&&0!==currentLogs.length?jsxRuntimeExports.jsx("div",{className:styles$3.logListContainer,children:this.renderLogTable(currentLogs,!0)}):jsxRuntimeExports.jsx("div",{className:styles$3.emptyCenter,children:t("ui.noLogs")})})()})]}),jsxRuntimeExports.jsxs("div",{className:`${styles$3.mobileSettingsOverlay} ${this.state.mobileSettingsVisible?styles$3.mobileSettingsOverlayVisible:""}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLogMgmtHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileLogMgmtTitle,children:t("ui.settings")}),jsxRuntimeExports.jsx("button",{className:styles$3.mobileLogMgmtClose,onClick:()=>this.setState({mobileSettingsVisible:!1}),children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsBody,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$3.mobileSettingsSectionTitle,children:t("ui.chatDisplay")}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.permission.autoApprove.setting")}),jsxRuntimeExports.jsx(Select,{size:"small",value:this.state.autoApproveSeconds||0,onChange:this.handleAutoApproveChange,options:autoApproveSelectOptions(PERM_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),this.state.approvalPrefs&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsxs("span",{className:styles$3.mobileSettingsLabel,children:[t("ui.approval.settings.planAutoApprove"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.approval.settings.planAutoApproveHelp"),trigger:"click",children:jsxRuntimeExports.jsx(RefIcon$5,{className:styles$3.mobileSettingsHelpIcon})})]}),jsxRuntimeExports.jsx(Select,{size:"small",value:this.state.approvalPrefs.planAutoApproveSeconds||0,onChange:value=>this.handleApprovalPrefsChange({planAutoApproveSeconds:value}),options:autoApproveSelectOptions(PLAN_AUTO_APPROVE_OPTIONS,t),style:{width:100}})]}),isPad&&this.state.approvalPrefs&&jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.approval.settings.modalEnabled")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.state.approvalPrefs.modalEnabled,onChange:checked=>this.handleApprovalPrefsChange({modalEnabled:checked})})]}),"undefined"!=typeof window&&window.tabBridge&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.approval.settings.notifyOnlyWhenHidden")}),jsxRuntimeExports.jsx(Switch,{checked:!1!==this.state.approvalPrefs.notifyOnlyWhenHidden,onChange:checked=>this.handleApprovalPrefsChange({notifyOnlyWhenHidden:checked})})]})]}),this.state.approvalPrefs&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.approval.settings.soundEnabled")}),jsxRuntimeExports.jsx(Switch,{checked:!!this.state.approvalPrefs.soundEnabled,onChange:checked=>this.handleApprovalSoundToggle(checked)})]}),this.state.approvalPrefs&&this.state.approvalPrefs.soundEnabled&&jsxRuntimeExports.jsx(VoicePackSettings,{prefs:this.state.approvalPrefs.voicePack,onChange:this.handleVoicePackChange,embedded:!0}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.expandThinking")}),jsxRuntimeExports.jsx(Switch,{checked:prefs.expandThinking,onChange:this.handleExpandThinkingChange})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.showFullToolContent")}),jsxRuntimeExports.jsx(Switch,{checked:prefs.showFullToolContent,onChange:this.handleShowFullToolContentChange})]}),prefs.showFullToolContent&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.collapseToolResults")}),jsxRuntimeExports.jsx(Switch,{checked:prefs.collapseToolResults,onChange:this.handleCollapseToolResultsChange})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$3.mobileSettingsSectionTitle,children:t("ui.themeStyle")}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.themeColor")}),jsxRuntimeExports.jsx(Select,{size:"small",value:this.state.themeColor||"light",onChange:this.handleThemeColorChange,options:[{label:t("ui.themeColor.dark"),value:"dark"},{label:t("ui.themeColor.light"),value:"light"}],style:{width:140}})]}),jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.languageSettings")}),jsxRuntimeExports.jsx(Select,{size:"small",value:getLang(),onChange:value=>{setLang(value),this.handleLangChange()},options:LANG_OPTIONS.map(o=>({label:o.label,value:o.value})),style:{width:140}})]})]}),(()=>{const pp=this.context&&this.context.preferences||{},showToggle=!this._isLocalLog&&!!pp._projectName&&!1===pp._isLocal,forkKeys=Array.isArray(pp._projectPrefsKeys)?pp._projectPrefsKeys:[],showManage=!0===pp._isLocal&&forkKeys.length>0;return showToggle||showManage?jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$3.mobileSettingsSectionTitle,children:t("ui.projectScopedPrefs.group")}),showToggle&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsxs("span",{className:styles$3.mobileSettingsLabel,children:[t("ui.projectScopedPrefs"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.projectScopedPrefs.help"),children:jsxRuntimeExports.jsx(RefIcon$5,{className:styles$3.mobileSettingsHelpIcon})})]}),jsxRuntimeExports.jsx(Switch,{"aria-label":t("ui.projectScopedPrefs"),checked:!!pp._projectScoped,onChange:checked=>this.handleToggleProjectScoped(checked)})]}),showManage&&jsxRuntimeExports.jsxs("div",{className:styles$3.mobileSettingsRow,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileSettingsLabel,children:t("ui.projectPrefsManage")}),jsxRuntimeExports.jsx(Button,{size:"small",onClick:()=>this.setState({projectPrefsModalOpen:!0}),children:t("ui.projectPrefsManage.open",{count:forkKeys.length})})]})]}):null})()]})]}),jsxRuntimeExports.jsxs("div",{className:`${styles$3.mobilePromptOverlay} ${this.state.mobilePromptVisible?styles$3.mobilePromptOverlayVisible:""}`,children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobileLogMgmtHeader,children:[jsxRuntimeExports.jsx("span",{className:styles$3.mobileLogMgmtTitle,children:t("ui.userPrompt")}),jsxRuntimeExports.jsx("button",{className:styles$3.mobileLogMgmtClose,onClick:()=>this.setState({mobilePromptVisible:!1}),children:jsxRuntimeExports.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",children:[jsxRuntimeExports.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),jsxRuntimeExports.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]})})]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobilePromptBody,children:(()=>{const prompts=this.extractUserPrompts(filteredRequests);return 0===prompts.length?jsxRuntimeExports.jsx("div",{className:styles$3.mobilePromptEmpty,children:t("ui.noPrompt")}):jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment,{children:[jsxRuntimeExports.jsxs("div",{className:styles$3.mobilePromptHeader,children:[jsxRuntimeExports.jsxs("span",{className:styles$3.mobilePromptCount,children:[prompts.length," ",t("ui.promptCountUnit")]}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$6,{}),onClick:()=>this.handleExportPromptsTxt(prompts),children:t("ui.exportPromptsTxt")})]}),jsxRuntimeExports.jsx("div",{className:styles$3.mobilePromptList,children:prompts.map((p,i)=>jsxRuntimeExports.jsxs("div",{className:styles$3.mobilePromptItem,children:[p.timestamp&&jsxRuntimeExports.jsx("div",{className:styles$3.mobilePromptTimestamp,children:new Date(p.timestamp).toLocaleString()}),this.renderOriginalPrompt(p)]},i))})]})})()})]})]}),this.state.globalPermission&&jsxRuntimeExports.jsx(ToolApprovalPanel,{toolName:this.state.globalPermission.permission.toolName,toolInput:this.state.globalPermission.permission.input,requestId:this.state.globalPermission.permission.id,onAllow:this.state.globalPermission.handlers.allow,onAllowSession:this.state.globalPermission.handlers.allowSession,onDeny:this.state.globalPermission.handlers.deny,visible:!0,global:!0,autoApproveSeconds:this.state.autoApproveSeconds,onAutoApproveChange:this.handleAutoApproveChange}),this.state.globalPlanApproval&&jsxRuntimeExports.jsx(ToolApprovalPanel,{toolName:"ExitPlanMode",toolInput:this.state.globalPlanApproval.plan.input,requestId:this.state.globalPlanApproval.plan.id,onAllow:this.state.globalPlanApproval.handlers.approve,onDeny:id=>this.state.globalPlanApproval.handlers.reject(id,""),visible:!0,global:!0})]})})})})}};__publicField(_Mobile,"COMMAND_TAGS",new Set(["command-name","command-message","command-args","local-command-caveat","local-command-stdout"]));let Mobile=_Mobile;export{Mobile as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{j as jsxRuntimeExports}from"./vendor-codemirror-6ck0hLRU.js";import{a as reactExports,I as Icon,b as _extends,R as React,q as Tag,S as Spin,E as Empty,t as Card,u as Statistic,v as Space,F as ForwardTable,n as Switch,i as Button,k as RefIcon$3,w as Segmented,l as Select,x as TypedInputNumber,T as Tooltip,s as staticMethods}from"./vendor-antd-DNUTLr77.js";import{t,a as apiUrl}from"./index-By8aqIvN.js";import{a5 as reportSwallowed,C as ConceptHelp}from"./seqResourceLoaders-C-pxCjNh.js";import"./vendor-mdxeditor-DT0rad22.js";import"./vendor-xterm-DckPrCx1.js";import"./vendor-markdown-DBlfs4dR.js";import"./vendor-highlight-IFTJ9nxW.js";import"./vendor-virtuoso-YwK7i7L6.js";var CheckCircleOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M699 353h-46.9c-10.2 0-19.9 4.9-25.9 13.3L469 584.3l-71.2-98.8c-6-8.3-15.6-13.3-25.9-13.3H325c-6.5 0-10.3 7.4-6.5 12.7l124.6 172.8a31.8 31.8 0 0051.7 0l210.6-292c3.9-5.3.1-12.7-6.4-12.7z"}},{tag:"path",attrs:{d:"M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z"}}]},name:"check-circle",theme:"outlined"},CheckCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CheckCircleOutlined$1}))},RefIcon$2=reactExports.forwardRef(CheckCircleOutlined),CloseCircleOutlined$1={icon:{tag:"svg",attrs:{"fill-rule":"evenodd",viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M512 64c247.4 0 448 200.6 448 448S759.4 960 512 960 64 759.4 64 512 264.6 64 512 64zm0 76c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zm128.01 198.83c.03 0 .05.01.09.06l45.02 45.01a.2.2 0 01.05.09.12.12 0 010 .07c0 .02-.01.04-.05.08L557.25 512l127.87 127.86a.27.27 0 01.05.06v.02a.12.12 0 010 .07c0 .03-.01.05-.05.09l-45.02 45.02a.2.2 0 01-.09.05.12.12 0 01-.07 0c-.02 0-.04-.01-.08-.05L512 557.25 384.14 685.12c-.04.04-.06.05-.08.05a.12.12 0 01-.07 0c-.03 0-.05-.01-.09-.05l-45.02-45.02a.2.2 0 01-.05-.09.12.12 0 010-.07c0-.02.01-.04.06-.08L466.75 512 338.88 384.14a.27.27 0 01-.05-.06l-.01-.02a.12.12 0 010-.07c0-.03.01-.05.05-.09l45.02-45.02a.2.2 0 01.09-.05.12.12 0 01.07 0c.02 0 .04.01.08.06L512 466.75l127.86-127.86c.04-.05.06-.06.08-.06a.12.12 0 01.07 0z"}}]},name:"close-circle",theme:"outlined"},CloseCircleOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:CloseCircleOutlined$1}))},RefIcon$1=reactExports.forwardRef(CloseCircleOutlined),UndoOutlined$1={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M511.4 124C290.5 124.3 112 303 112 523.9c0 128 60.2 242 153.8 315.2l-37.5 48c-4.1 5.3-.3 13 6.3 12.9l167-.8c5.2 0 9-4.9 7.7-9.9L369.8 727a8 8 0 00-14.1-3L315 776.1c-10.2-8-20-16.7-29.3-26a318.64 318.64 0 01-68.6-101.7C200.4 609 192 567.1 192 523.9s8.4-85.1 25.1-124.5c16.1-38.1 39.2-72.3 68.6-101.7 29.4-29.4 63.6-52.5 101.7-68.6C426.9 212.4 468.8 204 512 204s85.1 8.4 124.5 25.1c38.1 16.1 72.3 39.2 101.7 68.6 29.4 29.4 52.5 63.6 68.6 101.7 16.7 39.4 25.1 81.3 25.1 124.5s-8.4 85.1-25.1 124.5a318.64 318.64 0 01-68.6 101.7c-7.5 7.5-15.3 14.5-23.4 21.2a7.93 7.93 0 00-1.2 11.1l39.4 50.5c2.8 3.5 7.9 4.1 11.4 1.3C854.5 760.8 912 649.1 912 523.9c0-221.1-179.4-400.2-400.6-399.9z"}}]},name:"undo",theme:"outlined"},UndoOutlined=function(props,ref){return reactExports.createElement(Icon,_extends({},props,{ref:ref,icon:UndoOutlined$1}))},RefIcon=reactExports.forwardRef(UndoOutlined);const styles$3_wrap="_wrap_1glwx_3",styles$3_svg="_svg_1glwx_7",styles$3_bar="_bar_1glwx_12",styles$3_axisLine="_axisLine_1glwx_21",styles$3_gridLine="_gridLine_1glwx_25",styles$3_vLabel="_vLabel_1glwx_30",styles$3_vValue="_vValue_1glwx_34",styles$3_legend="_legend_1glwx_38",styles$3_legendItem="_legendItem_1glwx_46",styles$3_legendSwatch="_legendSwatch_1glwx_51";function groupedBarTitle(label2,value,bi,legend2,valueFormatter){const formatted=valueFormatter(value),name=Array.isArray(legend2)?legend2[bi]:void 0;return name?`${label2} (${name}): ${formatted}`:`${label2}: ${formatted}`}function singleBarTitle(label2,value,valueFormatter){return`${label2}: ${valueFormatter(value)}`}const DEFAULT_COLORS=["var(--color-primary, #1668dc)","var(--color-success, #22c55e)","var(--color-warning, #f59e0b)"];const BarChart$1=React.memo(function({data:data=[],height:height=160,grouped:grouped=!1,valueFormatter:valueFormatter=n=>String(n),maxBars:maxBars,legend:legend2,ariaLabel:ariaLabel}){var _a,_b;const wrapRef=reactExports.useRef(null),[width,setWidth]=reactExports.useState(0);reactExports.useEffect(()=>{if(!wrapRef.current)return;const el=wrapRef.current,update=()=>setWidth(el.clientWidth||0);if(update(),"undefined"==typeof ResizeObserver)return;const ro=new ResizeObserver(update);return ro.observe(el),()=>{try{ro.disconnect()}catch{}}},[]);const rows=function(data,{maxBars:maxBars,grouped:grouped=!1}={}){var _a,_b;if(!maxBars||!Array.isArray(data)||data.length<=maxBars)return data;const head=data.slice(0,maxBars),tail=data.slice(maxBars);if(grouped){const seriesCount=(null==(_b=null==(_a=head[0])?void 0:_a.values)?void 0:_b.length)||1,sums=new Array(seriesCount).fill(0);for(const d of tail){const vals=d.values||[];for(let i=0;i<seriesCount;i++)sums[i]+=vals[i]||0}return[...head,{label:"…",value:sums[0],values:sums}]}const otherCount=tail.reduce((s,d)=>s+(d.value||0),0);return[...head,{label:"…",value:otherCount,values:[otherCount]}]}(Array.isArray(data)?data:[],{maxBars:maxBars,grouped:grouped});if(!rows||0===rows.length||0===width)return jsxRuntimeExports.jsx("div",{ref:wrapRef,className:styles$3_wrap,style:{height:height}});const legendEl=grouped&&Array.isArray(legend2)&&legend2.length>0?jsxRuntimeExports.jsx("div",{className:styles$3_legend,"aria-hidden":"true",children:legend2.map((label2,i)=>jsxRuntimeExports.jsxs("span",{className:styles$3_legendItem,children:[jsxRuntimeExports.jsx("span",{className:styles$3_legendSwatch,style:{background:DEFAULT_COLORS[i%DEFAULT_COLORS.length]}}),label2]},i))}):null,innerW=Math.max(0,width-28),innerH=Math.max(0,height-28-16),maxVal=rows.reduce((m,d)=>{const vals=grouped?d.values||[0]:[d.value||0];for(const v of vals)v>m&&(m=v);return m},1),groupW=innerW/rows.length,barW=grouped?Math.max(2,.6*groupW/Math.max(1,(null==(_b=null==(_a=rows[0])?void 0:_a.values)?void 0:_b.length)||1)):Math.max(2,.5*groupW),baseline=28+innerH;return jsxRuntimeExports.jsxs("div",{ref:wrapRef,className:styles$3_wrap,style:{height:height},children:[legendEl,jsxRuntimeExports.jsxs("svg",{className:styles$3_svg,height:height,width:width,role:"img","aria-label":ariaLabel,children:[[.25,.5,.75].map(f=>jsxRuntimeExports.jsx("line",{className:styles$3_gridLine,x1:28,x2:width,y1:28+innerH*(1-f),y2:28+innerH*(1-f)},f)),jsxRuntimeExports.jsx("line",{className:styles$3_axisLine,x1:28,x2:width,y1:baseline,y2:baseline}),rows.map((d,gi)=>{var _a2,_b2;const gx=28+gi*groupW+(groupW-(grouped?((null==(_b2=null==(_a2=rows[0])?void 0:_a2.values)?void 0:_b2.length)||1)*barW:barW))/2,vals=grouped?d.values||[0]:[d.value||0];return jsxRuntimeExports.jsxs("g",{children:[vals.map((v,bi)=>{const h=Math.max(0,v/maxVal*innerH),x=gx+bi*barW,y=baseline-h,color=grouped?DEFAULT_COLORS[bi%DEFAULT_COLORS.length]:DEFAULT_COLORS[0];return jsxRuntimeExports.jsxs("g",{children:[jsxRuntimeExports.jsx("rect",{className:styles$3_bar,x:x,y:y,width:Math.max(1,barW-1),height:h,fill:color,rx:1,children:jsxRuntimeExports.jsx("title",{children:grouped?groupedBarTitle(d.label,v,bi,legend2,valueFormatter):singleBarTitle(d.label,v,valueFormatter)})}),!grouped&&barW>=18&&jsxRuntimeExports.jsx("text",{className:styles$3_vValue,x:x+barW/2,y:Math.max(8,y-4),textAnchor:"middle",children:valueFormatter(v)})]},bi)}),jsxRuntimeExports.jsx("text",{className:styles$3_vLabel,x:28+gi*groupW+groupW/2,y:height-4,textAnchor:"middle",children:String(d.label).slice(0,8)})]},gi)})]})]})});function fmtMs(ms){return ms>0?ms<1e3?`${Math.round(ms)} ms`:`${(ms/1e3).toFixed(2)} s`:"-"}function statusColor(status){return 0===status?"default":status<400?"green":status<500?"orange":"red"}function availColor(pct){return pct>=95?"var(--color-success, #22c55e)":pct>=80?"var(--color-warning, #f59e0b)":"var(--color-error, #ef4444)"}function dominantFailCell(bucket){return bucket&&null!=bucket.dominantFailStatus?jsxRuntimeExports.jsxs(Tag,{color:statusColor(bucket.dominantFailStatus),children:[bucket.dominantFailStatus," × ",bucket.dominantFailCount]}):null}const styles$2_embedded="_embedded_sdeqo_7",styles$2_centerState="_centerState_sdeqo_11",styles$2_header="_header_sdeqo_20",styles$2_cardRow="_cardRow_sdeqo_23",styles$2_statCard="_statCard_sdeqo_33",styles$2_section="_section_sdeqo_70",styles$2_streakRow="_streakRow_sdeqo_83",styles$2_chartWrap="_chartWrap_sdeqo_91",styles$2_chartTitle="_chartTitle_sdeqo_96",styles$2_codeTags="_codeTags_sdeqo_105",styles$2_topRow="_topRow_sdeqo_112",styles$2_rescuedBadge="_rescuedBadge_sdeqo_115",fmtPercent=n=>`${n}%`;function ProxyStatsDashboard(){const[data,setData]=reactExports.useState(null),[loading,setLoading]=reactExports.useState(!0),[autoRefresh,setAutoRefresh]=reactExports.useState(!0),fetchData=reactExports.useCallback(()=>{setLoading(!0),fetch(apiUrl("/api/proxy-stats")).then(res=>{if(!res.ok)throw new Error(`HTTP ${res.status}`);return res.json()}).then(d=>{setData(d.proxyStats),setLoading(!1)}).catch(err=>{reportSwallowed("proxyStats.fetch",err),setLoading(!1)})},[]);reactExports.useEffect(()=>{fetchData()},[fetchData]),reactExports.useEffect(()=>{if(!autoRefresh)return;const id=setInterval(fetchData,15e3);return()=>clearInterval(id)},[autoRefresh,fetchData]);const byModelBars=reactExports.useMemo(()=>((null==data?void 0:data.byModel)||[]).map(m=>({label:m.model,values:[m.upstreamAvailabilityPct,m.availabilityPct]})),[data]),retryDistBars=reactExports.useMemo(()=>((null==data?void 0:data.retryDistribution)||[]).map(d=>({label:String(d.retries),value:d.count})),[data]),retryBurdenBars=reactExports.useMemo(()=>((null==data?void 0:data.retryBurden)||[]).map(b=>{return{label:(key=b.key,t(`ui.proxyStats.retryBurdenBuckets.${key}`)),value:b.count};var key}),[data]),recentRecords=reactExports.useMemo(()=>((null==data?void 0:data.recentRecords)||[]).filter(r=>{const status=Number(r.final_status);return 0===status||status>=400||(Number(r.retries)||0)>0}),[data]);if(loading&&!data)return jsxRuntimeExports.jsx("div",{className:`${styles$2_embedded} ${styles$2_centerState}`,children:jsxRuntimeExports.jsx(Spin,{size:"large"})});if(!data||!data.summary||0===data.summary.totalRequests)return jsxRuntimeExports.jsxs("div",{className:styles$2_embedded,children:[jsxRuntimeExports.jsx(DashboardHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsx("div",{className:styles$2_centerState,children:jsxRuntimeExports.jsx(Empty,{description:t("ui.proxyStats.noData")})})]});const s=data.summary,rescued=Math.max(0,s.totalSucceeded-s.totalFirstOk);return jsxRuntimeExports.jsxs("div",{className:styles$2_embedded,children:[jsxRuntimeExports.jsx(DashboardHeader,{onRefresh:fetchData,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}),jsxRuntimeExports.jsxs("div",{className:styles$2_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRequests"),value:s.totalRequests})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.totalRetries"),value:s.totalRetries,suffix:s.totalRequests?`(${(s.totalRetries/s.totalRequests).toFixed(1)}/req)`:""})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,style:{"--stat-accent":availColor(s.upstreamAvailabilityPct)},children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.upstreamAvailability"),value:s.upstreamAvailabilityPct,suffix:"%",valueStyle:{color:availColor(s.upstreamAvailabilityPct)}})}),jsxRuntimeExports.jsxs(Card,{className:styles$2_statCard,style:{"--stat-accent":availColor(s.downstreamAvailabilityPct)},children:[jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.downstreamAvailability"),value:s.downstreamAvailabilityPct,suffix:"%",valueStyle:{color:availColor(s.downstreamAvailabilityPct)}}),rescued>0&&jsxRuntimeExports.jsx("span",{className:styles$2_rescuedBadge,children:t("ui.proxyStats.rescuedByRetry",{count:rescued})})]}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,style:{"--stat-accent":"var(--color-error, #ef4444)"},children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.failedRequests"),value:s.totalFailed,valueStyle:{color:"var(--color-error, #ef4444)"}})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.availabilityAnalysis"),className:styles$2_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_streakRow,children:[jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.currentStreak"),":"]}),jsxRuntimeExports.jsxs(Tag,{icon:"success"===s.currentStreakType?jsxRuntimeExports.jsx(RefIcon$2,{}):jsxRuntimeExports.jsx(RefIcon$1,{}),color:"success"===s.currentStreakType?"green":"red",children:["success"===s.currentStreakType?t("ui.proxyStats.success"):t("ui.proxyStats.failure")," × ",s.currentStreakCount]})]}),jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.worstFailureStreak"),":"]}),jsxRuntimeExports.jsx(Tag,{color:"red",children:s.worstFailureStreak})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_chartWrap,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartTitle,children:t("ui.proxyStats.upstreamVsDownstream")}),jsxRuntimeExports.jsx(BarChart$1,{height:180,grouped:!0,legend:[t("ui.proxyStats.upstreamAvailability"),t("ui.proxyStats.downstreamAvailability")],ariaLabel:t("ui.proxyStats.upstreamVsDownstream"),data:byModelBars,valueFormatter:fmtPercent,maxBars:10})]}),jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byModel||[],rowKey:"model",size:"small",pagination:!1,className:styles$2_section,columns:[{title:t("ui.proxyStats.byModel"),dataIndex:"model",key:"model"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.retryDistribution"),className:styles$2_section,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartWrap,children:jsxRuntimeExports.jsx(BarChart$1,{height:160,ariaLabel:t("ui.proxyStats.retryDistribution"),data:retryDistBars,maxBars:15})}),jsxRuntimeExports.jsxs("div",{className:styles$2_chartWrap,children:[jsxRuntimeExports.jsx("div",{className:styles$2_chartTitle,children:t("ui.proxyStats.retryBurden")}),jsxRuntimeExports.jsx(BarChart$1,{height:160,ariaLabel:t("ui.proxyStats.retryBurden"),data:retryBurdenBars})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_codeTags,children:[jsxRuntimeExports.jsxs("span",{children:[t("ui.proxyStats.retryCodes"),":"]}),jsxRuntimeExports.jsx(Space,{wrap:!0,children:(data.retryCodes||[]).map(c=>jsxRuntimeExports.jsxs(Tag,{color:statusColor(c.code),children:[c.code," × ",c.count]},c.code))})]})]}),jsxRuntimeExports.jsxs(Card,{title:t("ui.proxyStats.durationAnalysis"),className:styles$2_section,children:[jsxRuntimeExports.jsxs("div",{className:styles$2_cardRow,children:[jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p50Duration"),value:fmtMs(s.p50Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p95Duration"),value:fmtMs(s.p95Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.p99Duration"),value:fmtMs(s.p99Ms)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.maxDuration"),value:fmtMs(s.maxMs)})}),jsxRuntimeExports.jsx(Card,{className:styles$2_statCard,children:jsxRuntimeExports.jsx(Statistic,{title:t("ui.proxyStats.avgDuration"),value:fmtMs(s.avgMs)})})]}),jsxRuntimeExports.jsxs("div",{className:styles$2_topRow,children:[jsxRuntimeExports.jsx(DurationRecordTable,{title:t("ui.proxyStats.slowest"),record:data.slowest}),jsxRuntimeExports.jsx(DurationRecordTable,{title:t("ui.proxyStats.fastest"),record:data.fastest})]})]}),data.byPath&&data.byPath.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byPath"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byPath,rowKey:"path",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"avail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"}]})}),data.byProfile&&data.byProfile.length>0&&jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.byProfile"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:data.byProfile,rowKey:"profile_id",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.byProfile"),dataIndex:"profile_name",key:"profile_name"},{title:t("ui.proxyStats.totalRequests"),dataIndex:"requests",key:"requests"},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries"},{title:t("ui.proxyStats.upstreamAvailability"),dataIndex:"upstreamAvailabilityPct",key:"upAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.downstreamAvailability"),dataIndex:"availabilityPct",key:"dsAvail",render:v=>`${v}%`},{title:t("ui.proxyStats.dominantFail"),key:"domFail",render:(_,r)=>dominantFailCell(r)||"-"},{title:t("ui.proxyStats.p95Duration"),dataIndex:"p95Ms",key:"p95",render:fmtMs}]})}),jsxRuntimeExports.jsx(Card,{title:t("ui.proxyStats.recentErrors"),className:styles$2_section,children:jsxRuntimeExports.jsx(ForwardTable,{dataSource:recentRecords,rowKey:"ts",size:"small",pagination:{pageSize:20,size:"small"},scroll:{x:"max-content"},columns:[{title:t("ui.proxyStats.colTime"),dataIndex:"ts",key:"ts",width:180,ellipsis:!0,render:v=>v?new Date(v).toLocaleString():"-"},{title:t("ui.proxyStats.colMethod"),dataIndex:"method",key:"method",width:70},{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.colStatus"),dataIndex:"final_status",key:"status",width:70,render:v=>jsxRuntimeExports.jsx(Tag,{color:statusColor(v),children:v||"-"})},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts",width:80},{title:t("ui.proxyStats.retries"),dataIndex:"retries",key:"retries",width:80},{title:t("ui.proxyStats.colDuration"),dataIndex:"duration_ms",key:"dur",width:100,render:fmtMs},{title:t("ui.proxyStats.retryCodes"),dataIndex:"retry_codes",key:"rc",width:120,render:v=>v&&v.length?v.map(c=>jsxRuntimeExports.jsx(Tag,{color:statusColor(c),children:c},c)):"-"}]})})]})}function DurationRecordTable({title:title,record:record}){return jsxRuntimeExports.jsx(ForwardTable,{title:()=>title,dataSource:record?[record]:[],rowKey:"ts",size:"small",pagination:!1,columns:[{title:t("ui.proxyStats.colPath"),dataIndex:"path",key:"path",ellipsis:!0},{title:t("ui.proxyStats.colModel"),dataIndex:"model",key:"model",ellipsis:!0},{title:t("ui.proxyStats.attempts"),dataIndex:"attempts",key:"attempts"},{title:t("ui.proxyStats.colDuration"),dataIndex:"duration_ms",key:"dur",render:fmtMs}]})}function DashboardHeader({onRefresh:onRefresh,autoRefresh:autoRefresh,setAutoRefresh:setAutoRefresh}){return jsxRuntimeExports.jsx("div",{className:styles$2_header,children:jsxRuntimeExports.jsxs(Space,{children:[jsxRuntimeExports.jsx("span",{children:t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Switch,{checked:autoRefresh,onChange:setAutoRefresh,size:"small","aria-label":t("ui.proxyStats.autoRefresh")}),jsxRuntimeExports.jsx(Button,{size:"small",icon:jsxRuntimeExports.jsx(RefIcon$3,{}),onClick:onRefresh,children:t("ui.proxyStats.refresh")})]})})}const styles$1_form="_form_ntb31_3",styles$1_configGrid="_configGrid_ntb31_9",styles$1_configGroup="_configGroup_ntb31_18",styles$1_groupTitle="_groupTitle_ntb31_26",styles$1_row="_row_ntb31_41",styles$1_label="_label_ntb31_53",styles$1_inputCell="_inputCell_ntb31_68",styles$1_hint="_hint_ntb31_76",styles$1_fullWidth="_fullWidth_ntb31_83",styles$1_numField="_numField_ntb31_87",styles$1_numInput="_numInput_ntb31_96",styles$1_unit="_unit_ntb31_101",styles$1_reservedTag="_reservedTag_ntb31_106",styles$1_footer="_footer_ntb31_115",styles$1_footerRight="_footerRight_ntb31_123",styles$1_note="_note_ntb31_128",MODE_VALUES=["off","serial","race","stagger"],STATUS_CODE_OPTIONS=[429,500,502,503,504,508,529,408],NUMERIC_FIELDS=[{key:"retryIntervalMs",unit:"ms",min:0,max:6e5},{key:"retryInterval429Ms",unit:"ms",min:0,max:6e5},{key:"maxRetries",unit:"",min:0,max:1e3},{key:"maxConcurrent",unit:"",min:1,max:100},{key:"connectTimeoutMs",unit:"ms",min:0,max:6e5}];function RetryConfigForm({config:config,defaults:defaults,onSave:onSave}){const[form2,setForm]=reactExports.useState(null),[dirty,setDirty]=reactExports.useState(!1),initializedRef=reactExports.useRef(!1);reactExports.useEffect(()=>{config&&(initializedRef.current?dirty||setForm({...config}):(setForm({...config}),initializedRef.current=!0))},[config,dirty]);const def=defaults||{},patch=(key,value)=>{setDirty(!0),setForm(prev=>prev?{...prev,[key]:value}:prev)},renderResetBtn=key=>(key=>JSON.stringify(null==form2?void 0:form2[key])!==JSON.stringify(def[key]))(key)?jsxRuntimeExports.jsx(Tooltip,{title:t("ui.retryConfig.resetDefault"),children:jsxRuntimeExports.jsx(Button,{type:"text",size:"small",icon:jsxRuntimeExports.jsx(RefIcon,{}),onClick:()=>(key=>{setDirty(!0),setForm(prev=>prev?{...prev,[key]:def[key]}:prev)})(key)})}):null;return form2?jsxRuntimeExports.jsxs("div",{className:styles$1_form,children:[jsxRuntimeExports.jsxs("div",{className:styles$1_configGrid,children:[jsxRuntimeExports.jsxs("section",{className:styles$1_configGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$1_groupTitle,children:t("ui.retryConfig.groupStrategy")}),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.mode"),renderResetBtn("mode")]}),jsxRuntimeExports.jsxs("div",{className:styles$1_inputCell,children:[jsxRuntimeExports.jsx(Segmented,{value:form2.mode||"off",options:MODE_VALUES.map(v=>({value:v,label:t(`ui.retryConfig.modeLabel.${v}`)})),onChange:v=>patch("mode",v)}),jsxRuntimeExports.jsx("div",{className:styles$1_hint,children:t(`ui.retryConfig.modeHint.${form2.mode||"off"}`)})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.statusCodes"),renderResetBtn("retryStatusCodes")]}),jsxRuntimeExports.jsxs("div",{className:styles$1_inputCell,children:[jsxRuntimeExports.jsx(Select,{mode:"multiple",className:styles$1_fullWidth,value:form2.retryStatusCodes||[],onChange:v=>patch("retryStatusCodes",v.map(Number).filter(n=>Number.isFinite(n)&&n>0)),options:STATUS_CODE_OPTIONS.map(c=>({label:String(c),value:c}))}),jsxRuntimeExports.jsx("div",{className:styles$1_hint,children:t("ui.retryConfig.statusCodesHint")})]})]})]}),jsxRuntimeExports.jsxs("section",{className:styles$1_configGroup,children:[jsxRuntimeExports.jsx("div",{className:styles$1_groupTitle,children:t("ui.retryConfig.groupExecution")}),NUMERIC_FIELDS.map(f=>jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t(`ui.retryConfig.${f.key}`),renderResetBtn(f.key)]}),jsxRuntimeExports.jsx("div",{className:styles$1_inputCell,children:jsxRuntimeExports.jsxs("div",{className:styles$1_numField,children:[jsxRuntimeExports.jsx(TypedInputNumber,{className:styles$1_numInput,value:form2[f.key],min:f.min,max:f.max,onChange:v=>patch(f.key,v)}),f.unit&&jsxRuntimeExports.jsx("span",{className:styles$1_unit,children:f.unit})]})})]},f.key)),jsxRuntimeExports.jsxs("div",{className:styles$1_row,children:[jsxRuntimeExports.jsxs("span",{className:styles$1_label,children:[t("ui.retryConfig.streamIdleTimeoutMs"),jsxRuntimeExports.jsx(Tooltip,{title:t("ui.retryConfig.streamIdleReserved"),children:jsxRuntimeExports.jsx("span",{className:styles$1_reservedTag,children:t("ui.retryConfig.reserved")})})]}),jsxRuntimeExports.jsx("div",{className:styles$1_inputCell,children:jsxRuntimeExports.jsxs("div",{className:styles$1_numField,children:[jsxRuntimeExports.jsx(TypedInputNumber,{className:styles$1_numInput,value:form2.streamIdleTimeoutMs,disabled:!0}),jsxRuntimeExports.jsx("span",{className:styles$1_unit,children:"ms"})]})})]})]})]}),jsxRuntimeExports.jsxs("div",{className:styles$1_footer,children:[jsxRuntimeExports.jsx(Button,{icon:jsxRuntimeExports.jsx(RefIcon,{}),onClick:()=>{setDirty(!0),setForm({...def})},children:t("ui.retryConfig.resetAll")}),jsxRuntimeExports.jsx("div",{className:styles$1_footerRight,children:jsxRuntimeExports.jsx(Button,{type:"primary",onClick:async()=>{if(form2)if(MODE_VALUES.includes(form2.mode))try{await onSave(form2),staticMethods.success(t("ui.retryConfig.saved")),setDirty(!1)}catch(err){reportSwallowed("retryConfig.save",err)}else staticMethods.warning(t("ui.retryConfig.invalidMode"))},children:t("ui.retryConfig.save")})})]}),jsxRuntimeExports.jsx("div",{className:styles$1_note,children:t("ui.retryConfig.note")})]}):jsxRuntimeExports.jsx("div",{className:styles$1_form,style:{display:"flex",justifyContent:"center",alignItems:"center",padding:"40px 0"},children:jsxRuntimeExports.jsx(Spin,{size:"small"})})}const styles_shell="_shell_1po19_3",styles_toolbar="_toolbar_1po19_5",styles_toolbarTitle="_toolbarTitle_1po19_16",styles_toolbarActions="_toolbarActions_1po19_27",styles_body="_body_1po19_39",styles_configFormWrap="_configFormWrap_1po19_43",styles_configHeader="_configHeader_1po19_44",styles_configHeaderTitle="_configHeaderTitle_1po19_45",styles_configScroll="_configScroll_1po19_35";function ProxyStatsModal({retryConfig:retryConfig,retryDefaults:retryDefaults,onRetryConfigChange:onRetryConfigChange}){const[tab,setTab]=reactExports.useState("config");return jsxRuntimeExports.jsxs("div",{className:styles_shell,children:[jsxRuntimeExports.jsxs("div",{className:styles_toolbar,children:[jsxRuntimeExports.jsx("h3",{className:styles_toolbarTitle,children:t("ui.proxyStats.title")}),jsxRuntimeExports.jsx("div",{className:styles_toolbarActions,children:jsxRuntimeExports.jsx(Segmented,{size:"small",value:tab,onChange:setTab,options:[{label:t("ui.proxyStats.tabConfig"),value:"config"},{label:t("ui.proxyStats.tabStats"),value:"stats"}]})})]}),jsxRuntimeExports.jsx("div",{className:styles_body,children:"config"===tab?jsxRuntimeExports.jsx("div",{className:styles_configScroll,children:jsxRuntimeExports.jsxs("div",{className:styles_configFormWrap,children:[jsxRuntimeExports.jsxs("div",{className:styles_configHeader,children:[jsxRuntimeExports.jsx("span",{className:styles_configHeaderTitle,children:t("ui.retryConfig.title")}),jsxRuntimeExports.jsx(ConceptHelp,{doc:"RetryConfig",zIndex:1100})]}),jsxRuntimeExports.jsx(RetryConfigForm,{config:retryConfig,defaults:retryDefaults,onSave:async formData=>{await onRetryConfigChange(formData)}})]})}):jsxRuntimeExports.jsx(ProxyStatsDashboard,{})})]})}export{ProxyStatsModal as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
._wrap_1glwx_3{width:100%;position:relative}._svg_1glwx_7{width:100%;display:block;overflow:visible}._bar_1glwx_12{transition:opacity .15s ease}._bar_1glwx_12:hover{opacity:.75}@media(prefers-reduced-motion:reduce){._bar_1glwx_12{transition:none}}._axisLine_1glwx_21{stroke:var(--border-primary, #e0e0e0);stroke-width:1}._gridLine_1glwx_25{stroke:var(--border-secondary, #ebebeb);stroke-width:1;stroke-dasharray:2 3}._vLabel_1glwx_30{fill:var(--text-secondary, #333);font-size:11px}._vValue_1glwx_34{fill:var(--text-primary, #1a1a1a);font-size:10px}._legend_1glwx_38{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:4px;font-size:12px;color:var(--text-secondary, #333)}._legendItem_1glwx_46{display:inline-flex;align-items:center;gap:5px}._legendSwatch_1glwx_51{width:10px;height:10px;border-radius:2px;display:inline-block}._embedded_sdeqo_7{padding:14px;overflow-y:auto;height:100%}._centerState_sdeqo_11{display:flex;justify-content:center;align-items:center;min-height:60vh;padding:40px 0}._header_sdeqo_20{display:flex;justify-content:flex-end;align-items:center;margin-bottom:12px}._cardRow_sdeqo_23{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}._statCard_sdeqo_33{position:relative;background:var(--bg-container, #fff);border:1px solid var(--border-primary, #e0e0e0);border-radius:8px;overflow:hidden;transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}._statCard_sdeqo_33:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--stat-accent, transparent)}._statCard_sdeqo_33:hover{border-color:var(--border-hover, #c0c0c0);transform:translateY(-1px);box-shadow:0 2px 8px #00000014}@media(prefers-reduced-motion:reduce){._statCard_sdeqo_33{transition:none}._statCard_sdeqo_33:hover{transform:none}}._statCard_sdeqo_33 .ant-card-body{padding:12px 14px}._statCard_sdeqo_33 .ant-statistic .ant-statistic-title{font-size:12px;color:var(--text-tertiary, #666);margin-bottom:4px}._statCard_sdeqo_33 .ant-statistic .ant-statistic-content-value{font-size:22px;font-weight:600;color:var(--text-primary, #1a1a1a);font-variant-numeric:tabular-nums}._statCard_sdeqo_33 .ant-statistic .ant-statistic-content-suffix{font-size:13px;color:var(--text-secondary, #333);margin-left:2px}._section_sdeqo_70{margin-bottom:16px}._section_sdeqo_70 .ant-card{background:var(--bg-container, #fff);border:1px solid var(--border-primary, #e0e0e0);border-radius:8px}._section_sdeqo_70 .ant-card-head{min-height:40px;padding:0 14px;border-bottom:1px solid var(--border-primary, #e0e0e0)}._section_sdeqo_70 .ant-card-head-title{padding:10px 0;font-size:14px;font-weight:600;color:var(--text-primary, #1a1a1a)}._section_sdeqo_70 .ant-card-body{padding:12px 14px}._streakRow_sdeqo_83{display:flex;gap:16px;flex-wrap:wrap;align-items:center;padding:8px 0 12px;border-bottom:1px solid var(--border-primary, #e0e0e0);margin-bottom:12px}._streakRow_sdeqo_83>span:first-child,._streakRow_sdeqo_83>.ant-space>span:first-child{font-size:13px;color:var(--text-tertiary, #666)}._chartWrap_sdeqo_91{margin-top:8px;padding:8px 4px 4px;border-radius:6px}._chartTitle_sdeqo_96{margin:0 0 6px;font-size:12px;font-weight:500;color:var(--text-tertiary, #666);letter-spacing:.01em}._codeTags_sdeqo_105{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--border-primary, #e0e0e0);font-size:12px;color:var(--text-tertiary, #666)}._topRow_sdeqo_112{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}._rescuedBadge_sdeqo_115{display:inline-block;margin-top:4px;padding:1px 8px;border-radius:10px;background:var(--color-success-bg-light, rgba(34,197,94,.15));color:var(--color-success, #22c55e);font-size:11px;font-weight:500;line-height:1.6}@media(max-width:820px){._topRow_sdeqo_112{grid-template-columns:1fr}._cardRow_sdeqo_23{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}@media(max-width:480px){._cardRow_sdeqo_23{grid-template-columns:repeat(2,1fr)}}._form_ntb31_3{display:flex;flex-direction:column;gap:14px}._configGrid_ntb31_9{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:stretch}._configGroup_ntb31_18{min-width:0;padding:14px;border:1px solid var(--border-secondary);border-radius:6px;background:var(--bg-elevated)}._groupTitle_ntb31_26{margin-bottom:12px;font-size:13px;font-weight:600;line-height:1.4;color:var(--text-primary, #262626)}._row_ntb31_41{display:flex;align-items:start;justify-content:center;column-gap:12px;margin-bottom:10px}._row_ntb31_41:last-child{margin-bottom:0}._label_ntb31_53{display:flex;align-items:center;gap:6px;justify-content:flex-end;text-align:right;font-size:13px;color:var(--text-secondary, #333);padding-top:5px;width:150px;flex-shrink:0}._inputCell_ntb31_68{display:flex;flex-direction:column;min-width:0;width:320px;flex-shrink:0}._hint_ntb31_76{font-size:12px;color:var(--text-tertiary);line-height:1.5;margin-top:4px}._fullWidth_ntb31_83{width:100%}._numField_ntb31_87{display:flex;align-items:center;gap:6px}._numInput_ntb31_96{width:100%;max-width:220px}._unit_ntb31_101{font-size:12px;color:var(--text-gray)}._reservedTag_ntb31_106{font-size:10px;padding:0 4px;border-radius:3px;background:var(--color-warning-dark-bg);color:var(--color-warning-light);line-height:16px}._footer_ntb31_115{display:flex;align-items:center;justify-content:space-between;margin-top:14px;gap:8px}._footerRight_ntb31_123{display:flex;gap:8px}._note_ntb31_128{font-size:11px;color:var(--text-gray);line-height:1.5;padding:8px 10px;border-radius:4px;background:var(--bg-elevated);border:1px solid var(--border-secondary)}@media(max-width:900px){._configGrid_ntb31_9{grid-template-columns:1fr}}@media(max-width:640px){._row_ntb31_41{flex-direction:column;align-items:stretch;justify-content:flex-start;column-gap:0}._label_ntb31_53{width:auto;justify-content:flex-start;text-align:left;padding-top:0;margin-bottom:4px}._inputCell_ntb31_68{width:auto}}._shell_1po19_3{display:flex;flex-direction:column;height:100%;width:100%;min-width:0}._toolbar_1po19_5{display:flex;align-items:center;flex-wrap:wrap;gap:6px 8px;padding:10px 44px 10px 16px;border-bottom:1px solid var(--border-primary, #f0f0f0);background:var(--bg-elevated, #fafafa);border-radius:8px 8px 0 0}._toolbarTitle_1po19_16{margin:0;font-size:15px;font-weight:600;line-height:1.4;color:var(--text-primary, #262626);min-width:0;overflow:hidden;text-overflow:ellipsis}._toolbarActions_1po19_27{margin-left:auto;display:flex;align-items:center;gap:8px;flex-shrink:0}._body_1po19_39{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}._configFormWrap_1po19_43{padding:10px 18px 14px;width:100%;max-width:1120px;margin:0 auto}._configHeader_1po19_44{display:flex;align-items:center;gap:6px;margin:4px 4px 12px}._configHeaderTitle_1po19_45{font-size:15px;font-weight:600;color:var(--text-primary, #262626)}._configScroll_1po19_35{flex:1;min-height:0;overflow-y:auto}@media(max-width:640px){._toolbar_1po19_5{padding:8px 44px 8px 12px}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as getStyles,r as renderer,d as db}from"./chunk-MOJQB5TN-JXgBLjCY.js";import{p as populateCommonDb}from"./chunk-JWPE2WC7-D5RR93-U.js";import{_ as __name,l as log}from"./mermaid.core-DH-sQJgr.js";import{M as MermaidParseError,b as createRailroadAbnfServices}from"./cynefin-VYW2F7L2-Ch8_Ihra.js";import"./vendor-mdxeditor-DT0rad22.js";import"./vendor-antd-DNUTLr77.js";import"./vendor-codemirror-6ck0hLRU.js";import"./vendor-markdown-DBlfs4dR.js";var langiumParser=createRailroadAbnfServices().RailroadAbnf.parser.LangiumParser,transformAlternation=__name(alt=>{const alternatives=alt.alternatives.map(transformConcatenation);return 1===alternatives.length?alternatives[0]:{type:"choice",alternatives:alternatives}},"transformAlternation"),transformConcatenation=__name(concat=>{const elements=concat.elements.map(transformElement);return 1===elements.length?elements[0]:{type:"sequence",elements:elements}},"transformConcatenation"),parseRepeat=__name(repeat=>{if(repeat.includes("*")){const[minStr,maxStr]=repeat.split("*");return{min:minStr?parseInt(minStr,10):0,max:maxStr?parseInt(maxStr,10):1/0}}const exact=parseInt(repeat,10);return{min:exact,max:exact}},"parseRepeat"),transformElement=__name(element=>{const inner=transformPrimary(element.primary);if(!element.repeat)return inner;const{min:min,max:max}=parseRepeat(element.repeat);return 0===min&&1===max?{type:"optional",element:inner}:{type:"repetition",element:inner,min:min,max:max}},"transformElement"),transformPrimary=__name(primary=>{switch(primary.$type){case"AbnfStringLiteral":case"AbnfNumVal":return{type:"terminal",value:primary.value};case"AbnfRuleName":return{type:"nonterminal",name:primary.name};case"AbnfGroup":return transformAlternation(primary.element);case"AbnfOptionalGroup":return{type:"optional",element:transformAlternation(primary.element)};default:throw new Error(`Unsupported ABNF primary node: ${primary.$type}`)}},"transformPrimary"),transformRule=__name(rule=>({name:rule.name,definition:transformAlternation(rule.definition)}),"transformRule"),populateDb=__name(ast=>{populateCommonDb(ast,db),ast.title&&db.setTitle(ast.title),ast.rules.map(rule=>db.addRule(transformRule(rule)))},"populateDb"),diagram={parser:{parse:__name(input=>{db.clear(),log.debug("[ABNF Parser] Starting Langium parse");const result=langiumParser.parse(input);if(result.lexerErrors.length>0||result.parserErrors.length>0)throw new MermaidParseError(result);const ast=result.value;log.debug("[ABNF Parser] Parsed rules:",ast.rules.length),populateDb(ast),log.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:db}},db:db,renderer:renderer,styles:getStyles};export{diagram};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{X as withPath,Y as pi,$ as cos,a0 as sin,a1 as constant,a2 as halfPi,a3 as epsilon,a4 as tau,a5 as sqrt,a6 as min,a7 as abs,a8 as atan2,a9 as max,aa as asin,ab as acos}from"./mermaid.core-DH-sQJgr.js";function arcInnerRadius(d){return d.innerRadius}function arcOuterRadius(d){return d.outerRadius}function arcStartAngle(d){return d.startAngle}function arcEndAngle(d){return d.endAngle}function arcPadAngle(d){return d&&d.padAngle}function cornerTangents(x0,y0,x1,y1,r1,rc,cw){var x01=x0-x1,y01=y0-y1,lo=(cw?rc:-rc)/sqrt(x01*x01+y01*y01),ox=lo*y01,oy=-lo*x01,x11=x0+ox,y11=y0+oy,x10=x1+ox,y10=y1+oy,x00=(x11+x10)/2,y00=(y11+y10)/2,dx=x10-x11,dy=y10-y11,d2=dx*dx+dy*dy,r=r1-rc,D=x11*y10-x10*y11,d=(dy<0?-1:1)*sqrt(max(0,r*r*d2-D*D)),cx0=(D*dy-dx*d)/d2,cy0=(-D*dx-dy*d)/d2,cx1=(D*dy+dx*d)/d2,cy1=(-D*dx+dy*d)/d2,dx0=cx0-x00,dy0=cy0-y00,dx1=cx1-x00,dy1=cy1-y00;return dx0*dx0+dy0*dy0>dx1*dx1+dy1*dy1&&(cx0=cx1,cy0=cy1),{cx:cx0,cy:cy0,x01:-ox,y01:-oy,x11:cx0*(r1/r-1),y11:cy0*(r1/r-1)}}function d3arc(){var innerRadius=arcInnerRadius,outerRadius=arcOuterRadius,cornerRadius=constant(0),padRadius=null,startAngle=arcStartAngle,endAngle=arcEndAngle,padAngle=arcPadAngle,context=null,path=withPath(arc);function arc(){var buffer,r,r0=+innerRadius.apply(this,arguments),r1=+outerRadius.apply(this,arguments),a0=startAngle.apply(this,arguments)-halfPi,a1=endAngle.apply(this,arguments)-halfPi,da=abs(a1-a0),cw=a1>a0;if(context||(context=buffer=path()),r1<r0&&(r=r1,r1=r0,r0=r),r1>epsilon)if(da>tau-epsilon)context.moveTo(r1*cos(a0),r1*sin(a0)),context.arc(0,0,r1,a0,a1,!cw),r0>epsilon&&(context.moveTo(r0*cos(a1),r0*sin(a1)),context.arc(0,0,r0,a1,a0,cw));else{var t0,t1,a01=a0,a11=a1,a00=a0,a10=a1,da0=da,da1=da,ap=padAngle.apply(this,arguments)/2,rp=ap>epsilon&&(padRadius?+padRadius.apply(this,arguments):sqrt(r0*r0+r1*r1)),rc=min(abs(r1-r0)/2,+cornerRadius.apply(this,arguments)),rc0=rc,rc1=rc;if(rp>epsilon){var p0=asin(rp/r0*sin(ap)),p1=asin(rp/r1*sin(ap));(da0-=2*p0)>epsilon?(a00+=p0*=cw?1:-1,a10-=p0):(da0=0,a00=a10=(a0+a1)/2),(da1-=2*p1)>epsilon?(a01+=p1*=cw?1:-1,a11-=p1):(da1=0,a01=a11=(a0+a1)/2)}var x01=r1*cos(a01),y01=r1*sin(a01),x10=r0*cos(a10),y10=r0*sin(a10);if(rc>epsilon){var oc,x11=r1*cos(a11),y11=r1*sin(a11),x00=r0*cos(a00),y00=r0*sin(a00);if(da<pi)if(oc=function(x0,y0,x1,y1,x2,y2,x3,y3){var x10=x1-x0,y10=y1-y0,x32=x3-x2,y32=y3-y2,t=y32*x10-x32*y10;if(!(t*t<epsilon))return[x0+(t=(x32*(y0-y2)-y32*(x0-x2))/t)*x10,y0+t*y10]}(x01,y01,x00,y00,x11,y11,x10,y10)){var ax=x01-oc[0],ay=y01-oc[1],bx=x11-oc[0],by=y11-oc[1],kc=1/sin(acos((ax*bx+ay*by)/(sqrt(ax*ax+ay*ay)*sqrt(bx*bx+by*by)))/2),lc=sqrt(oc[0]*oc[0]+oc[1]*oc[1]);rc0=min(rc,(r0-lc)/(kc-1)),rc1=min(rc,(r1-lc)/(kc+1))}else rc0=rc1=0}da1>epsilon?rc1>epsilon?(t0=cornerTangents(x00,y00,x01,y01,r1,rc1,cw),t1=cornerTangents(x11,y11,x10,y10,r1,rc1,cw),context.moveTo(t0.cx+t0.x01,t0.cy+t0.y01),rc1<rc?context.arc(t0.cx,t0.cy,rc1,atan2(t0.y01,t0.x01),atan2(t1.y01,t1.x01),!cw):(context.arc(t0.cx,t0.cy,rc1,atan2(t0.y01,t0.x01),atan2(t0.y11,t0.x11),!cw),context.arc(0,0,r1,atan2(t0.cy+t0.y11,t0.cx+t0.x11),atan2(t1.cy+t1.y11,t1.cx+t1.x11),!cw),context.arc(t1.cx,t1.cy,rc1,atan2(t1.y11,t1.x11),atan2(t1.y01,t1.x01),!cw))):(context.moveTo(x01,y01),context.arc(0,0,r1,a01,a11,!cw)):context.moveTo(x01,y01),r0>epsilon&&da0>epsilon?rc0>epsilon?(t0=cornerTangents(x10,y10,x11,y11,r0,-rc0,cw),t1=cornerTangents(x01,y01,x00,y00,r0,-rc0,cw),context.lineTo(t0.cx+t0.x01,t0.cy+t0.y01),rc0<rc?context.arc(t0.cx,t0.cy,rc0,atan2(t0.y01,t0.x01),atan2(t1.y01,t1.x01),!cw):(context.arc(t0.cx,t0.cy,rc0,atan2(t0.y01,t0.x01),atan2(t0.y11,t0.x11),!cw),context.arc(0,0,r0,atan2(t0.cy+t0.y11,t0.cx+t0.x11),atan2(t1.cy+t1.y11,t1.cx+t1.x11),cw),context.arc(t1.cx,t1.cy,rc0,atan2(t1.y11,t1.x11),atan2(t1.y01,t1.x01),!cw))):context.arc(0,0,r0,a10,a00,cw):context.lineTo(x10,y10)}else context.moveTo(0,0);if(context.closePath(),buffer)return context=null,buffer+""||null}return arc.centroid=function(){var r=(+innerRadius.apply(this,arguments)+ +outerRadius.apply(this,arguments))/2,a=(+startAngle.apply(this,arguments)+ +endAngle.apply(this,arguments))/2-pi/2;return[cos(a)*r,sin(a)*r]},arc.innerRadius=function(_){return arguments.length?(innerRadius="function"==typeof _?_:constant(+_),arc):innerRadius},arc.outerRadius=function(_){return arguments.length?(outerRadius="function"==typeof _?_:constant(+_),arc):outerRadius},arc.cornerRadius=function(_){return arguments.length?(cornerRadius="function"==typeof _?_:constant(+_),arc):cornerRadius},arc.padRadius=function(_){return arguments.length?(padRadius=null==_?null:"function"==typeof _?_:constant(+_),arc):padRadius},arc.startAngle=function(_){return arguments.length?(startAngle="function"==typeof _?_:constant(+_),arc):startAngle},arc.endAngle=function(_){return arguments.length?(endAngle="function"==typeof _?_:constant(+_),arc):endAngle},arc.padAngle=function(_){return arguments.length?(padAngle="function"==typeof _?_:constant(+_),arc):padAngle},arc.context=function(_){return arguments.length?(context=null==_?null:_,arc):context},arc}export{d3arc as d};
|