commandmate 0.11.1 → 0.11.2

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.
Files changed (171) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +358 -343
  3. package/.next/app-path-routes-manifest.json +23 -23
  4. package/.next/build-manifest.json +6 -6
  5. package/.next/prerender-manifest.json +9 -9
  6. package/.next/react-loadable-manifest.json +4 -4
  7. package/.next/required-server-files.json +1 -1
  8. package/.next/server/app/_not-found/page.js +2 -2
  9. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  10. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/app/update/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/app/update-check/route.js +1 -1
  13. package/.next/server/app/api/app/update-check/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/assistant/conversation/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/assistant/current-output/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/assistant/messages/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/assistant/session/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/assistant/start/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/assistant/terminal/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/assistant/tools/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/daily-summary/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/daily-summary/status/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/external-apps/[id]/health/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/external-apps/[id]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/external-apps/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/hooks/claude-done/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/ollama/models/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/push/subscriptions/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/push/vapid/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/repositories/[id]/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/repositories/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/repositories/[id]/todos/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/repositories/clone/[jobId]/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/repositories/clone/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/repositories/excluded/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/repositories/restore/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/repositories/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/repositories/scan/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/repositories/sync/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/sidebar/group-order/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/slash-commands/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/templates/[id]/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/templates/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/todos/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/worktrees/[id]/auto-yes/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/worktrees/[id]/capture/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/worktrees/[id]/cli-tool/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/worktrees/[id]/cmate/schedules/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/worktrees/[id]/current-output/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/worktrees/[id]/execution-logs/[logId]/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/worktrees/[id]/execution-logs/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/worktrees/[id]/files/[...path]/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/worktrees/[id]/git/branch/create/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/worktrees/[id]/git/branch/delete/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/worktrees/[id]/git/branches/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/worktrees/[id]/git/checkout/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/worktrees/[id]/git/commit/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/worktrees/[id]/git/diff/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/worktrees/[id]/git/fetch/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/worktrees/[id]/git/log/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/worktrees/[id]/git/pull/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/worktrees/[id]/git/push/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/worktrees/[id]/git/reset/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/worktrees/[id]/git/revert/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/worktrees/[id]/git/show/[commitHash]/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/worktrees/[id]/git/stage/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/worktrees/[id]/git/staged/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/worktrees/[id]/git/stash/[index]/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/worktrees/[id]/git/stash/apply/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/worktrees/[id]/git/stash/pop/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/worktrees/[id]/git/stash/push/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/worktrees/[id]/git/stash/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/worktrees/[id]/git/status/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/worktrees/[id]/git/unstage/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/worktrees/[id]/git/working-diff/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/worktrees/[id]/interrupt/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/worktrees/[id]/kill-session/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/worktrees/[id]/logs/[filename]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/worktrees/[id]/logs/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/worktrees/[id]/marp-render/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/worktrees/[id]/memos/[memoId]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/worktrees/[id]/memos/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/worktrees/[id]/messages/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/worktrees/[id]/prompt-response/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/worktrees/[id]/respond/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/worktrees/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/worktrees/[id]/schedules/[scheduleId]/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/worktrees/[id]/schedules/active/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/worktrees/[id]/schedules/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/worktrees/[id]/search/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/worktrees/[id]/send/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/worktrees/[id]/slash-commands/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/worktrees/[id]/special-keys/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/worktrees/[id]/start-polling/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/worktrees/[id]/terminal/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/worktrees/[id]/timers/history/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/worktrees/[id]/timers/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/worktrees/[id]/todos/[todoId]/route_client-reference-manifest.js +1 -1
  102. package/.next/server/app/api/worktrees/[id]/todos/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/worktrees/[id]/tree/[...path]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/worktrees/[id]/tree/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/worktrees/[id]/upload/[...path]/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/worktrees/[id]/viewed/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/worktrees/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/chat/page.js +2 -2
  109. package/.next/server/app/chat/page.js.nft.json +1 -1
  110. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/login/page.js +2 -2
  112. package/.next/server/app/login/page.js.nft.json +1 -1
  113. package/.next/server/app/login/page_client-reference-manifest.js +1 -1
  114. package/.next/server/app/manifest.webmanifest/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/more/page.js +2 -2
  116. package/.next/server/app/more/page.js.nft.json +1 -1
  117. package/.next/server/app/more/page_client-reference-manifest.js +1 -1
  118. package/.next/server/app/offline/page.js +2 -2
  119. package/.next/server/app/offline/page.js.nft.json +1 -1
  120. package/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  121. package/.next/server/app/page.js +2 -2
  122. package/.next/server/app/page.js.nft.json +1 -1
  123. package/.next/server/app/page_client-reference-manifest.js +1 -1
  124. package/.next/server/app/proxy/[...path]/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/repositories/page.js +2 -2
  126. package/.next/server/app/repositories/page.js.nft.json +1 -1
  127. package/.next/server/app/repositories/page_client-reference-manifest.js +1 -1
  128. package/.next/server/app/review/page.js +2 -2
  129. package/.next/server/app/review/page.js.nft.json +1 -1
  130. package/.next/server/app/review/page_client-reference-manifest.js +1 -1
  131. package/.next/server/app/sessions/page.js +2 -2
  132. package/.next/server/app/sessions/page.js.nft.json +1 -1
  133. package/.next/server/app/sessions/page_client-reference-manifest.js +1 -1
  134. package/.next/server/app/worktrees/[id]/files/[...path]/page.js +2 -2
  135. package/.next/server/app/worktrees/[id]/files/[...path]/page.js.nft.json +1 -1
  136. package/.next/server/app/worktrees/[id]/files/[...path]/page_client-reference-manifest.js +1 -1
  137. package/.next/server/app/worktrees/[id]/page.js +4 -4
  138. package/.next/server/app/worktrees/[id]/page.js.nft.json +1 -1
  139. package/.next/server/app/worktrees/[id]/page_client-reference-manifest.js +1 -1
  140. package/.next/server/app/worktrees/[id]/terminal/page.js +3 -3
  141. package/.next/server/app/worktrees/[id]/terminal/page.js.nft.json +1 -1
  142. package/.next/server/app/worktrees/[id]/terminal/page_client-reference-manifest.js +1 -1
  143. package/.next/server/app-paths-manifest.json +23 -23
  144. package/.next/server/chunks/129.js +1 -1
  145. package/.next/server/chunks/{3644.js → 1366.js} +3 -3
  146. package/.next/server/chunks/2980.js +1 -1
  147. package/.next/server/chunks/450.js +1 -1
  148. package/.next/server/chunks/5959.js +1 -1
  149. package/.next/server/chunks/9123.js +13 -0
  150. package/.next/server/middleware-build-manifest.js +1 -1
  151. package/.next/server/middleware-manifest.json +5 -5
  152. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  153. package/.next/server/pages/500.html +1 -1
  154. package/.next/server/server-reference-manifest.json +1 -1
  155. package/.next/static/chunks/{6488-d6e53d8da584e644.js → 6488-d6b669a092a9aeb5.js} +1 -1
  156. package/.next/static/chunks/{8566-9da32e46c9d3fd54.js → 8566-b8bbcfd837cc338b.js} +1 -1
  157. package/.next/static/chunks/{8676.c1ef7e2aac5f05a0.js → 8676.57260a06f6554e7e.js} +1 -1
  158. package/.next/static/chunks/{8965-5ff40db68775eb01.js → 8965-872d8de254196cec.js} +1 -1
  159. package/.next/static/chunks/app/chat/{page-6f714339e12c3a16.js → page-9ed2ffd98eb4ae18.js} +1 -1
  160. package/.next/static/chunks/app/error-27ab04bce6545dae.js +1 -0
  161. package/.next/static/chunks/app/global-error-7b761b8e181ffc1f.js +1 -0
  162. package/.next/static/chunks/app/worktrees/[id]/files/[...path]/{page-6a45f3744da50d95.js → page-9ff4d065483cdfe9.js} +1 -1
  163. package/.next/static/chunks/app/worktrees/[id]/{page-3b07e3be354aae57.js → page-c6d64057df3a13d8.js} +1 -1
  164. package/.next/static/chunks/main-app-5d631b93b1219836.js +1 -0
  165. package/.next/static/chunks/{webpack-25d4697671930f37.js → webpack-2e3739a831868daa.js} +1 -1
  166. package/.next/trace +10 -10
  167. package/package.json +1 -1
  168. package/.next/server/chunks/9355.js +0 -13
  169. package/.next/static/chunks/main-app-1f21caa5553ccd7d.js +0 -1
  170. /package/.next/static/{WzRCDS2PLtMvg0Sjwlf0S → Xv8eF6ls3LFny16ZGj4Ij}/_buildManifest.js +0 -0
  171. /package/.next/static/{WzRCDS2PLtMvg0Sjwlf0S → Xv8eF6ls3LFny16ZGj4Ij}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8676],{50666:(e,t,r)=>{r.d(t,{Ck:()=>i});var n=r(95155),l=r(12115),a=r(53482);function i(e){let{children:t,as:r="div",className:i=""}=e,o=function e(t){return null==t||"boolean"==typeof t?"":"string"==typeof t?t:"number"==typeof t?String(t):Array.isArray(t)?t.map(e).join(""):l.isValidElement(t)?e(t.props.children):""}(t);if(!o||0===o.trim().length)return(0,n.jsx)(r,{className:i||void 0,children:t});let s="relative group ".concat("span"===r?"block ":"").concat(i).trim();return(0,n.jsxs)(r,{className:s,"data-testid":"code-block-with-copy",children:[t,(0,n.jsx)(a.i,{text:o,className:"absolute right-2 top-2 z-10 opacity-100 md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100 focus:opacity-100"})]})}},55924:(e,t,r)=>{r.d(t,{K:()=>a});var n=r(95155),l=r(12115);function a(e){let{entries:t,title:r,headerOffset:a=64,root:i=null,className:o=""}=e,[s,d]=(0,l.useState)(null);return((0,l.useRef)(null).current=s,(0,l.useEffect)(()=>{if("undefined"==typeof IntersectionObserver||0===t.length)return;let e=new IntersectionObserver(e=>{let t=function(e){let t=e.filter(e=>e.isIntersecting).sort((e,t)=>e.boundingClientRect.top-t.boundingClientRect.top);return t.length>0?t[0].target.id:null}(e);t&&d(t)},{root:i,rootMargin:"-".concat(a,"px 0px -70% 0px"),threshold:0}),r=[];for(let n of t){let t=document.getElementById(n.id);t&&(e.observe(t),r.push(t))}return()=>{e.disconnect(),r.length=0}},[t,a,i]),0===t.length)?null:(0,n.jsxs)("nav",{"aria-label":r,className:o,children:[(0,n.jsx)("p",{className:"px-3 pb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:r}),(0,n.jsx)("ul",{className:"space-y-0.5 text-sm",children:t.map((e,t)=>{let r=e.id===s;return(0,n.jsx)("li",{children:(0,n.jsx)("a",{href:"#".concat(e.id),onClick:t=>((e,t)=>{e.preventDefault();let r="undefined"!=typeof document?document.getElementById(t):null;r&&r.scrollIntoView({behavior:"smooth",block:"start"}),d(t)})(t,e.id),"aria-current":r?"location":void 0,"data-depth":e.depth,style:{paddingLeft:"".concat((e.depth-1)*12+12,"px")},className:["block truncate rounded py-1 pr-2 transition-colors",r?"bg-accent-50 font-medium text-accent-700":"text-muted-foreground hover:bg-muted hover:text-foreground"].join(" "),title:e.text,children:e.text})},"".concat(e.id,"-").concat(t))})})]})}},69352:(e,t,r)=>{r.d(t,{WU:()=>d,d3:()=>c,dj:()=>s,uO:()=>u});var n,l,a,i,o=r(9567);function s(e){return e.startsWith("#")?"anchor":e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")?"external":"relative"}function d(e,t){if(!t)return null;let r=e.substring(0,e.lastIndexOf("/")+1);try{let e=new URL(r,"file:///"),n=new URL(t,e),l=decodeURIComponent(n.pathname);if(l.startsWith("/")){let e=l.substring(1);if(e.length>0)return e}}catch(e){}return null}function c(e){return!e||0===e.length||e.length>2048||/[\x00-\x1f\x7f]/.test(e)?null:e}let u={...o.j,attributes:{...o.j.attributes,a:[...(null!=(a=null==(n=o.j.attributes)?void 0:n.a)?a:[]).filter(e=>"href"!==e),["href",/^(?:#|mailto:|tel:|https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/]],img:[...(null!=(i=null==(l=o.j.attributes)?void 0:l.img)?i:[]).filter(e=>"src"!==e),["src",/^(?:https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/],"alt","width","height"]}}},79962:(e,t,r)=>{r.d(t,{K:()=>o,Y:()=>l});var n=r(21286);let l="commandmate:md-toc-visible",a=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?[ \t]*$/,i=/^( {0,3})(`{3,}|~{3,})(.*)$/;function o(e){if(!e)return[];let t=new n.A,r=[],l=null,o=0;for(let n of e.split("\n")){var s;let e=i.exec(n);if(l){if(e){let t=e[2];t[0]===l&&t.length>=o&&""===e[3].trim()&&(l=null,o=0)}continue}if(e){let t=e[2],r=t[0];if("`"===r&&e[3].includes("`"));else{l=r,o=t.length;continue}}let d=a.exec(n);if(!d)continue;let c=d[1].length,u=function(e){let t=e;return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace(/!\[[^\]]*\]\([^)]*\)/g,"")).replace(/!\[[^\]]*\]\[[^\]]*\]/g,"")).replace(/\[([^\]]*)\]\([^)]*\)/g,"$1")).replace(/\[([^\]]*)\]\[[^\]]*\]/g,"$1")).replace(/\[([^\]]*)\]/g,"$1")).replace(/(`+)([\s\S]*?)\1/g,"$2")).replace(/(\*\*|__)(.*?)\1/g,"$2")).replace(/(\*|_)(.*?)\1/g,"$2")).replace(/~~(.*?)~~/g,"$1")).replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")).trim()}((null!=(s=d[2])?s:"").replace(/([ \t]|^)#+[ \t]*$/,"")),m=t.slug(u);r.push({depth:c,text:u,id:m})}return r}},98676:(e,t,r)=>{r.r(t),r.d(t,{MarkdownEditor:()=>ea});var n=r(95155),l=r(12115),a=r(47650),i=r(18955),o=r(80003),s=r(52056),d=r(64269),c=r(60322),u=r(94442),m=r(36402),f=r(3005),h=r(72115),x=r(89715),p=r(64545),w=r(57828),g=r(5917),v=r(75426),b=r(97624),k=r(37354),j=r(46046),y=r(65229),N=r(744);let E=(0,l.memo)(function(e){let{filePath:t,isDirty:r,viewMode:l,onViewModeChange:a,showMobileTabs:o,copied:s,onCopy:d,isMaximized:c,onToggleFullscreen:u,isAutoSaveEnabled:m,onAutoSaveToggle:f,isAutoSaving:h,isSaving:E,onSave:C,onClose:S,hideViewModeToggle:F}=e,A=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border bg-muted",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,n.jsx)(x.A,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),(0,n.jsx)("span",{className:"text-sm font-medium text-foreground truncate",children:t}),r&&(0,n.jsx)("span",{"data-testid":"dirty-indicator",className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-warning-subtle text-warning-foreground flex-shrink-0",children:A("editor.unsaved")})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[!o&&!F&&(0,n.jsxs)("div",{className:"flex items-center gap-1 bg-muted rounded-lg p-1",children:[(0,n.jsx)("button",{"data-testid":"view-mode-split","aria-pressed":"split"===l,onClick:()=>a("split"),className:"p-1.5 rounded ".concat("split"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.splitView"),children:(0,n.jsx)(p.A,{className:"h-4 w-4"})}),(0,n.jsx)("button",{"data-testid":"view-mode-editor","aria-pressed":"editor"===l,onClick:()=>a("editor"),className:"p-1.5 rounded ".concat("editor"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.editorOnly"),children:(0,n.jsx)(x.A,{className:"h-4 w-4"})}),(0,n.jsx)("button",{"data-testid":"view-mode-preview","aria-pressed":"preview"===l,onClick:()=>a("preview"),className:"p-1.5 rounded ".concat("preview"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.previewOnly"),children:(0,n.jsx)(w.A,{className:"h-4 w-4"})})]}),(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"copy-content-button",onClick:d,className:"p-1.5 hover:bg-muted rounded ".concat(s?"text-success":"text-muted-foreground hover:text-foreground"),title:A("actions.copyContent"),children:s?(0,n.jsx)(g.A,{className:"h-4 w-4"}):(0,n.jsx)(v.A,{className:"h-4 w-4"})}),(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"maximize-button",onClick:u,className:"p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted rounded",title:A(c?"editor.exitFullscreen":"editor.enterFullscreen"),"aria-pressed":c,children:c?(0,n.jsx)(b.A,{className:"h-4 w-4"}):(0,n.jsx)(k.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:A("editor.auto")}),(0,n.jsx)("button",{"data-testid":"auto-save-toggle",role:"switch","aria-checked":m,onClick:()=>f(!m),className:"relative inline-flex h-5 w-9 items-center rounded-full transition-colors ".concat(m?"bg-accent-600":"bg-input"),children:(0,n.jsx)("span",{className:"inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ".concat(m?"translate-x-4":"translate-x-0.5")})})]}),m?(0,n.jsx)("span",{"data-testid":"auto-save-indicator",className:"text-sm text-muted-foreground",children:h?A("actions.saving"):r?"":A("actions.saved")}):(0,n.jsxs)(N.$n,{variant:"ghost","data-testid":"save-button",onClick:C,disabled:!r||E,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm font-medium transition-colors ".concat(r&&!E?"bg-accent-600 text-white hover:bg-accent-700":"bg-muted text-muted-foreground cursor-not-allowed"),children:[(0,n.jsx)(j.A,{className:"h-4 w-4"}),A(E?"actions.saving":"actions.save")]}),S&&(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"close-button",onClick:S,className:"p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted rounded",title:A("actions.close"),children:(0,n.jsx)(y.A,{className:"h-4 w-4"})})]})]})});var C=r(51238),S=r(22133),F=r(89451),A=r(10934),P=r(92254),R=r(5225);r(1226);let M=(0,r(67909).default)(()=>Promise.all([r.e(221),r.e(7485),r.e(953)]).then(r.bind(r,90953)).then(e=>({default:e.MermaidDiagram})),{loadableGenerated:{webpack:()=>[90953]},ssr:!1,loading:function(){let e=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"mermaid-loading flex items-center gap-2 text-muted-foreground p-4",children:[(0,n.jsx)(f.y,{size:"sm"}),(0,n.jsx)("span",{children:e("mermaid.loading")})]})}});function z(e){let{className:t,children:r}=e;if(t&&t.split(" ").includes("language-mermaid")){let e=null==r?"":"string"==typeof r?r:Array.isArray(r)?r.map(e=>"string"==typeof e?e:"").join(""):String(r);return(0,n.jsx)(M,{code:e})}return(0,n.jsx)("code",{className:t,children:r})}var W=r(50666),I=r(69352),V=r(76246);function T(e){let{apiUrl:t,alt:r,width:a,height:o}=e,s=(0,i.c)("worktree"),[d,c]=(0,l.useState)(null);return((0,l.useEffect)(()=>{let e=!1;return fetch(t).then(e=>e.ok?e.json():null).then(t=>{!e&&(null==t?void 0:t.content)&&c(t.content)}).catch(()=>{}),()=>{e=!0}},[t]),d)?(0,n.jsx)("img",{src:d,alt:r,width:a,height:o,style:{maxWidth:a||"100%"}}):(0,n.jsx)("span",{style:{color:"#999"},children:s("markdownPreview.loadingImage")})}let D=(0,l.memo)(function(e){let{content:t,onOpenFile:r,currentFilePath:a,worktreeId:i}=e,o=(0,l.useRef)(r);o.current=r;let s=(0,l.useRef)(a);s.current=a;let d=(0,l.useRef)(i);d.current=i;let c=(0,l.useCallback)((e,t)=>{let r=(0,I.d3)(t);if(r)switch((0,I.dj)(r)){case"anchor":break;case"external":e.preventDefault(),window.open(r,"_blank","noopener,noreferrer");break;case"relative":{e.preventDefault();let t=s.current,n=o.current;if(t&&n){let e=(0,I.WU)(t,r);e&&n(e)}}}},[]),u=(0,l.useMemo)(()=>({code:z,pre:e=>{let{children:t}=e;return!function(e){let t=l.Children.toArray(e)[0];if(!l.isValidElement(t))return!1;let r=t.props.className;return"string"==typeof r&&r.split(" ").includes("language-mermaid")}(t)?(0,n.jsx)(W.Ck,{children:(0,n.jsx)("pre",{className:"overflow-x-auto",children:t})}):(0,n.jsx)("pre",{children:t})},img:e=>{var t,r,l,a;let{src:i,alt:o,width:c,height:u,...m}=e,f=null!=c?c:null==(r=m.node)||null==(t=r.properties)?void 0:t.width,h=null!=u?u:null==(a=m.node)||null==(l=a.properties)?void 0:l.height;if("string"==typeof i&&!i.startsWith("http://")&&!i.startsWith("https://")&&!i.startsWith("data:")){let e=s.current,t=d.current;if(e&&t){let r=(0,I.WU)(e,i);if(r){let e="/api/worktrees/".concat(t,"/files/").concat((0,V.o)(r));return(0,n.jsx)(T,{apiUrl:e,alt:null!=o?o:"",width:f,height:h})}}}return(0,n.jsx)("img",{src:i,alt:null!=o?o:"",width:f,height:h,style:{maxWidth:f||"100%"}})},a:e=>{let{href:t,children:r,...l}=e;return t?(0,n.jsx)("a",{...l,href:t,onClick:e=>c(e,t),children:r}):(0,n.jsx)("a",{...l,children:r})}}),[c]),m=(0,l.useMemo)(()=>[S.A],[]),f=(0,l.useMemo)(()=>[F.A,[A.A,I.uO],P.A,R.A],[]);return(0,n.jsx)(C.oz,{remarkPlugins:m,rehypePlugins:f,components:u,children:t})}),L=(0,l.memo)(function(e){let{mobileTab:t,onTabChange:r}=e,l=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"flex border-b border-border",children:[(0,n.jsxs)("button",{"data-testid":"mobile-tab-editor",onClick:()=>r("editor"),className:"flex-1 py-2 text-sm font-medium ".concat("editor"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(x.A,{className:"h-4 w-4 inline-block mr-1"}),l("markdownPreview.editor")]}),(0,n.jsxs)("button",{"data-testid":"mobile-tab-preview",onClick:()=>r("preview"),className:"flex-1 py-2 text-sm font-medium ".concat("preview"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(w.A,{className:"h-4 w-4 inline-block mr-1"}),l("markdownPreview.preview")]})]})}),O=(0,l.memo)(function(e){let{isMobile:t}=e,r=(0,i.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"maximize-hint",className:"flex items-center justify-center px-4 py-1 bg-muted text-muted-foreground text-xs",children:[r("markdownPreview.exitFullscreenHint")," ",t&&r("markdownPreview.exitFullscreenHintSwipe")]})}),$=(0,l.memo)(function(e){let{onDismiss:t}=e,r=(0,i.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"large-file-warning",className:"flex items-center gap-2 px-4 py-2 bg-warning-subtle border-b border-warning-border text-warning-foreground text-sm",children:[(0,n.jsx)(s.A,{className:"h-4 w-4"}),r("markdownPreview.largeFileWarning"),(0,n.jsx)("button",{onClick:t,className:"ml-auto text-warning hover:text-warning",children:(0,n.jsx)(y.A,{className:"h-4 w-4"})})]})});var _=r(55924),K=r(79962),U=r(38218);function H(){if("undefined"==typeof document)return null;let e=document;return e.fullscreenElement||e.webkitFullscreenElement||e.mozFullScreenElement||e.msFullscreenElement||null}var q=r(2317),B=r(60850),Z=r(8269),G=r(51434),X=r(59854),Y=r(9900);let J={split:{showEditor:!0,showPreview:!0,editorWidth:"w-1/2",previewWidth:"w-1/2"},editor:{showEditor:!0,showPreview:!1,editorWidth:"w-full",previewWidth:"w-0"},preview:{showEditor:!1,showPreview:!0,editorWidth:"w-0",previewWidth:"w-full"}},Q="commandmate:md-editor-view-mode",ee={WARNING_THRESHOLD:512e3};function et(e){return"number"==typeof e&&e>=.1&&e<=.9}function er(e){return"boolean"==typeof e}function en(e){return"split"===e||"editor"===e||"preview"===e}let el=(0,l.memo)(function(e){let{previewContent:t,onOpenFile:r,filePath:a,worktreeId:i,tocVisible:s,onToggleTocVisible:d,tocTitle:c,tocShowLabel:u,tocHideLabel:m}=e,f=(0,l.useRef)(null),h=(0,l.useRef)(null),[x,p]=(0,l.useState)(null),[w,g]=(0,l.useState)(!1);(0,l.useEffect)(()=>{p(h.current)},[]),(0,l.useEffect)(()=>{let e=f.current;if(!e||"undefined"==typeof ResizeObserver)return;let t=new ResizeObserver(e=>{var t,r;g((null!=(r=null==(t=e[0])?void 0:t.contentRect.width)?r:0)>=480)});return t.observe(e),()=>t.disconnect()},[]);let v=(0,l.useMemo)(()=>(0,K.K)(t),[t]),b=v.length>=2&&w,k=b&&s;return(0,n.jsxs)("div",{ref:f,className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:h,"data-testid":"markdown-preview",className:"flex-1 min-w-0 p-4 overflow-y-auto prose prose-sm dark:prose-invert max-w-none prose-headings:scroll-mt-2",children:(0,n.jsx)(D,{content:t,onOpenFile:r,currentFilePath:a,worktreeId:i})}),k&&(0,n.jsx)("aside",{"data-testid":"markdown-preview-toc",className:"w-48 flex-shrink-0 overflow-y-auto border-l border-border py-4",children:(0,n.jsx)("div",{className:"sticky top-0",children:(0,n.jsx)(_.K,{entries:v,title:c,headerOffset:0,root:x})})}),b&&(0,n.jsx)("button",{"data-testid":"markdown-preview-toc-toggle",onClick:d,"aria-pressed":s,"aria-label":s?m:u,title:s?m:u,className:"absolute top-2 right-2 z-10 flex items-center justify-center rounded-md border border-border bg-surface/90 p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted shadow-sm",children:(0,n.jsx)(o.A,{className:"h-4 w-4"})})]})}),ea=(0,l.memo)(function(e){let{worktreeId:t,filePath:r,fileType:o,onClose:x,onSave:p,initialViewMode:w,onMaximizedChange:g,onDirtyChange:v,onOpenFile:b}=e,k="text"===(null!=o?o:r.toLowerCase().endsWith(".md")?"markdown":"text"),j=(0,i.c)("worktree"),y=(0,m.SC)(),[N,C]=(0,l.useState)(""),[S,F]=(0,l.useState)(""),[A,P]=(0,l.useState)(""),[R,M]=(0,l.useState)(()=>k?"editor":function(e){if(e&&en(e))return e;{let e=localStorage.getItem(Q);if(e&&en(e))return e}return"split"}(w)),[z,W]=(0,l.useState)(!0),[I,V]=(0,l.useState)(!1),[T,D]=(0,l.useState)(null),[_,ea]=(0,l.useState)(!1),[ei,eo]=(0,l.useState)(!1),[es,ed]=(0,l.useState)("editor"),[ec,eu]=(0,l.useState)(null),{showToast:em}=(0,u.dj)(),ef=(0,l.useRef)(null),eh=(0,l.useRef)(null),ex=(0,l.useRef)(null),ep=(0,l.useRef)(null),ew=(0,l.useRef)(null),eg=(0,U.a)();(0,l.useEffect)(()=>{eg&&ed("preview")},[eg]);let{isKeyboardVisible:ev,keyboardHeight:eb}=(0,G.C)(),{value:ek,setValue:ej}=(0,q.V)({key:"commandmate:md-editor-maximized",defaultValue:!1,validate:er}),{isFullscreen:ey,isFallbackMode:eN,enterFullscreen:eE,exitFullscreen:eC,toggleFullscreen:eS}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{elementRef:t,onEnter:r,onExit:n,onError:a}=e,[i,o]=(0,l.useState)(!1),[s,d]=(0,l.useState)(!1),[c,u]=(0,l.useState)(null),m=(0,l.useCallback)(()=>{let e=null!=H();o(e),!e&&s&&d(!1)},[s]),f=(0,l.useCallback)(async()=>{if(u(null),"undefined"!=typeof navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||0)){o(!0),d(!0),null==r||r();return}if(function(){if("undefined"==typeof document)return!1;let e=document;return!!(e.fullscreenEnabled||e.webkitFullscreenEnabled||e.mozFullScreenEnabled||e.msFullscreenEnabled)}()&&(null==t?void 0:t.current))try{var e;await ((e=t.current).requestFullscreen?Promise.resolve(e.requestFullscreen()):e.webkitRequestFullscreen?Promise.resolve(e.webkitRequestFullscreen()):e.mozRequestFullScreen?Promise.resolve(e.mozRequestFullScreen()):e.msRequestFullscreen?Promise.resolve(e.msRequestFullscreen()):Promise.reject(Error("Fullscreen API not supported"))),o(!0),d(!1),null==r||r()}catch(t){let e=t instanceof Error?t.message:"Failed to enter fullscreen";u(e),null==a||a(t instanceof Error?t:Error(e)),o(!0),d(!0),null==r||r()}else o(!0),d(!0),null==r||r()},[t,r,a]),h=(0,l.useCallback)(async()=>{if(u(null),s){o(!1),d(!1),null==n||n();return}if(H())try{await function(){if("undefined"==typeof document)return Promise.resolve();let e=document;return e.exitFullscreen?Promise.resolve(e.exitFullscreen()):e.webkitExitFullscreen?Promise.resolve(e.webkitExitFullscreen()):e.mozCancelFullScreen?Promise.resolve(e.mozCancelFullScreen()):e.msExitFullscreen?Promise.resolve(e.msExitFullscreen()):Promise.resolve()}(),o(!1),null==n||n()}catch(t){let e=t instanceof Error?t.message:"Failed to exit fullscreen";u(e),null==a||a(t instanceof Error?t:Error(e)),o(!1),d(!1),null==n||n()}else o(!1),d(!1),null==n||n()},[s,n,a]),x=(0,l.useCallback)(async()=>{i?await h():await f()},[i,f,h]);return(0,l.useEffect)(()=>(function(e){if("undefined"==typeof document)return()=>{};let t=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"];for(let r of t)document.addEventListener(r,e);return()=>{for(let r of t)document.removeEventListener(r,e)}})(m),[m]),{isFullscreen:i,isFallbackMode:s,enterFullscreen:f,exitFullscreen:h,toggleFullscreen:x,error:c}}({elementRef:ep,onEnter:()=>ej(!0),onExit:()=>ej(!1)}),{value:eF,setValue:eA}=(0,q.V)({key:"commandmate:md-editor-split-ratio",defaultValue:.5,validate:et}),{value:eP,setValue:eR}=(0,q.V)({key:"commandmate:md-editor-auto-save",defaultValue:!1,validate:er}),{value:eM,setValue:ez}=(0,q.V)({key:K.Y,defaultValue:!0,validate:er}),eW=(0,l.useCallback)(()=>{ez(e=>!e)},[ez]),{ref:eI}=(0,Z.hU)({onSwipeDown:()=>{ey&&eC()},threshold:150,enabled:ey&&eg}),eV=N!==S,eT=k?J.editor:J[R];(0,l.useEffect)(()=>{null==v||v(eV)},[eV,v]);let eD=eg&&window.innerHeight>window.innerWidth,eL=!k&&eD&&"split"===R,eO=(0,l.useMemo)(()=>(0,d.sg)(e=>{P(e)},300),[]),e$=(0,l.useCallback)(async()=>{W(!0),D(null);try{let n=await fetch("/api/worktrees/".concat(t,"/files/").concat(r)),l=await n.json();if(!n.ok||!l.success){var e;throw Error((null==(e=l.error)?void 0:e.message)||j("editor.loadError"))}let a=l.content||"";C(a),F(a),P(a),new Blob([a]).size>ee.WARNING_THRESHOLD&&ea(!0)}catch(e){D(e instanceof Error?e.message:j("editor.loadError"))}finally{W(!1)}},[t,r]),e_=(0,l.useCallback)(async e=>{let n=await fetch("/api/worktrees/".concat(t,"/files/").concat(r),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e})});if(401===n.status||n.redirected)throw Error(j("editor.sessionExpired"));let l=await n.json();if(!n.ok||!l.success){var a;throw Error((null==(a=l.error)?void 0:a.message)||j("editor.saveError"))}F(e)},[t,r,j]),{isSaving:eK,error:eU,saveNow:eH}=(0,B.U)({value:N,saveFn:e_,debounceMs:3e3,disabled:!eP}),eq=(0,l.useCallback)(e=>{eR(e),e&&eV&&e_(N)},[eR,eV,e_,N]),eB=(0,l.useCallback)(async()=>{if(eV&&!I){V(!0);try{await e_(N),em(j("editor.saveSuccess"),"success"),p&&p(r)}catch(e){em(e instanceof Error?e.message:j("editor.saveError"),"error")}finally{V(!1)}}},[e_,N,eV,I,p,r,em,j]),eZ=N.split("\n").length,eG=(0,l.useCallback)(()=>{ef.current&&eh.current&&(eh.current.scrollTop=ef.current.scrollTop)},[]),eX=(0,l.useCallback)(e=>{let t=e.target.value;C(t),eO(t)},[eO]),eY=(0,l.useCallback)(e=>{M(e),localStorage.setItem(Q,e)},[]),eJ=(0,l.useCallback)(async()=>{if(eP){if((eV||eK)&&(await eH(),eU)&&!await y({description:j("editor.saveFailedCloseConfirm"),variant:"danger"}))return}else if(eV&&!await y({description:j("editor.unsavedCloseConfirm"),variant:"danger"}))return;null==x||x()},[eP,eV,eK,eH,eU,x,y,j]),eQ=(0,l.useCallback)(async()=>{try{await (0,c.l)(N),eo(!0),setTimeout(()=>eo(!1),Y.pX)}catch(e){}},[N]),e0=(0,l.useCallback)(e=>{if(!ew.current)return;let t=ew.current.offsetWidth;if(0===t)return;let r=e/t;eA(e=>Math.max(.1,Math.min(.9,e+r)))},[eA]),e1=(0,l.useCallback)(()=>{eA(.5)},[eA]),e4=(0,l.useCallback)(e=>{if((e.ctrlKey||e.metaKey)&&"s"===e.key){e.preventDefault(),eP?(async()=>{await eH(),null==p||p(r)})():eB();return}if((e.ctrlKey||e.metaKey)&&e.shiftKey&&"F"===e.key){e.preventDefault(),eS();return}if("Escape"===e.key&&ey){e.preventDefault(),eC();return}},[eB,eP,eH,p,r,eS,eC,ey]),e2=(0,l.useCallback)(e=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{ref:eh,className:"flex-shrink-0 py-4 pl-2 pr-2 text-right select-none text-muted-foreground font-mono text-sm bg-muted dark:bg-muted/50 border-r border-border overflow-hidden","aria-hidden":"true",children:Array.from({length:eZ},(e,t)=>(0,n.jsx)("div",{className:"leading-[1.5rem]",children:t+1},t+1))}),(0,n.jsx)("textarea",{ref:ef,"data-testid":"markdown-editor-textarea",value:N,onChange:eX,onKeyDown:e4,onScroll:eG,className:"flex-1 py-4 pr-4 pl-3 font-mono text-sm resize-none bg-surface text-foreground focus:outline-none leading-[1.5rem]".concat(e?" focus:ring-2 focus:ring-ring focus:ring-inset":""),placeholder:k?j("editor.placeholder"):j("editor.placeholderMarkdown"),spellCheck:!1})]}),[eZ,N,eX,e4,eG,k,j]);(0,l.useEffect)(()=>{let e=e=>{"Escape"===e.key&&ey&&(e.preventDefault(),eC())};return ey&&document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[ey,eC]),(0,l.useEffect)(()=>{ek&&!ey&&eE()},[]),(0,l.useEffect)(()=>{if("undefined"==typeof document)return;let e=document.getElementById("markdown-editor-portal");return e||((e=document.createElement("div")).id="markdown-editor-portal",document.body.appendChild(e)),eu(e),()=>{let e=document.getElementById("markdown-editor-portal");e&&0===e.childNodes.length&&e.remove()}},[]),(0,l.useEffect)(()=>{null==g||g(ey)},[ey,g]),(0,l.useEffect)(()=>{e$()},[e$]),(0,l.useEffect)(()=>{let e=eP?eV||eK:eV,t=t=>{e&&(t.preventDefault(),t.returnValue="")};return e?(ex.current=t,window.addEventListener("beforeunload",t)):ex.current&&(window.removeEventListener("beforeunload",ex.current),ex.current=null),()=>{ex.current&&window.removeEventListener("beforeunload",ex.current)}},[eV,eK,eP]),(0,l.useEffect)(()=>{eU&&eP&&(eR(!1),em(j("editor.autoSaveFailed"),"error"))},[eU,eP,eR,em,j]);let e5=(0,l.useMemo)(()=>{let e="flex flex-col bg-surface";return ey&&eN?"".concat(e," fixed inset-0"):"".concat(e," h-full")},[ey,eN]),e6=(0,l.useMemo)(()=>{if(ey)return{zIndex:X.M.MAXIMIZED_EDITOR}},[ey]),e9=(0,l.useMemo)(()=>{if("split"===R&&!eL)return{width:"".concat(100*eF,"%"),flexShrink:0}},[R,eF,eL]),e3=(0,l.useMemo)(()=>{if("split"===R&&!eL)return{width:"".concat((1-eF)*100,"%"),flexShrink:0}},[R,eF,eL]),e7=(0,l.useMemo)(()=>{if(ev&&eb>0)return{paddingBottom:eb}},[ev,eb]);if(z)return(0,n.jsx)("div",{"data-testid":"markdown-editor",className:"flex items-center justify-center h-full bg-surface",children:(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)(f.y,{size:"xl",variant:"accent",className:"inline-block"}),(0,n.jsx)("p",{className:"mt-4 text-muted-foreground",children:j("editor.loading")})]})});if(T)return(0,n.jsx)("div",{"data-testid":"markdown-editor-error",className:"flex items-center justify-center h-full bg-surface",children:(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)(s.A,{className:"h-12 w-12 text-danger mx-auto mb-4"}),(0,n.jsx)("p",{className:"text-danger-foreground",children:T}),x&&(0,n.jsx)("button",{onClick:x,className:"mt-4 px-4 py-2 bg-muted hover:bg-muted/80 rounded-lg text-foreground",children:j("actions.close")})]})});let e8=(0,n.jsxs)("div",{ref:e=>{ep.current=e,eI.current=e},"data-testid":"markdown-editor",className:e5,style:e6,onKeyDown:e4,role:ey&&eN?"dialog":void 0,"aria-modal":ey&&eN?"true":void 0,children:[(0,n.jsx)(E,{filePath:r,isDirty:eV,viewMode:R,onViewModeChange:eY,showMobileTabs:eL,copied:ei,onCopy:eQ,isMaximized:ey,onToggleFullscreen:eS,isAutoSaveEnabled:eP,onAutoSaveToggle:eq,isAutoSaving:eK,isSaving:I,onSave:eB,onClose:x?eJ:void 0,hideViewModeToggle:k}),ey&&(0,n.jsx)(O,{isMobile:eg}),_&&(0,n.jsx)($,{onDismiss:()=>ea(!1)}),eL&&(0,n.jsx)(L,{mobileTab:es,onTabChange:ed}),(0,n.jsxs)("div",{ref:ew,className:"flex flex-1 overflow-hidden",style:e7,children:[eL?"editor"===es&&(0,n.jsx)("div",{"data-testid":"markdown-editor-container",className:"flex overflow-hidden w-full flex-1",children:e2(!1)}):(0,n.jsx)("div",{"data-testid":"markdown-editor-container",className:"flex overflow-hidden transition-all duration-200 ".concat(eT.showEditor?"":"hidden"),style:"split"===R?e9:{width:eT.showEditor?"100%":"0%"},children:e2(!0)}),"split"===R&&eT.showEditor&&eT.showPreview&&!eL&&(0,n.jsx)(h.f,{onResize:e0,onDoubleClick:e1,orientation:"horizontal",ariaValueNow:Math.round(100*eF),minRatio:.1}),eL?"preview"===es&&(0,n.jsx)("div",{"data-testid":"markdown-preview-container",className:"flex flex-col overflow-hidden w-full",children:(0,n.jsx)(el,{previewContent:A,onOpenFile:b,filePath:r,worktreeId:t,tocVisible:eM,onToggleTocVisible:eW,tocTitle:j("toc.title"),tocShowLabel:j("toc.show"),tocHideLabel:j("toc.hide")})}):(0,n.jsx)("div",{"data-testid":"markdown-preview-container",className:"flex flex-col overflow-hidden transition-all duration-200 ".concat(eT.showPreview?"":"hidden"),style:"split"===R?e3:{width:eT.showPreview?"100%":"0%"},children:(0,n.jsx)(el,{previewContent:A,onOpenFile:b,filePath:r,worktreeId:t,tocVisible:eM,onToggleTocVisible:eW,tocTitle:j("toc.title"),tocShowLabel:j("toc.show"),tocHideLabel:j("toc.hide")})})]})]});return ey&&eN&&ec?(0,a.createPortal)(e8,ec):e8})}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8676],{50666:(e,t,r)=>{r.d(t,{Ck:()=>i});var n=r(95155),l=r(12115),a=r(53482);function i(e){let{children:t,as:r="div",className:i=""}=e,o=function e(t){return null==t||"boolean"==typeof t?"":"string"==typeof t?t:"number"==typeof t?String(t):Array.isArray(t)?t.map(e).join(""):l.isValidElement(t)?e(t.props.children):""}(t);if(!o||0===o.trim().length)return(0,n.jsx)(r,{className:i||void 0,children:t});let s="relative group ".concat("span"===r?"block ":"").concat(i).trim();return(0,n.jsxs)(r,{className:s,"data-testid":"code-block-with-copy",children:[t,(0,n.jsx)(a.i,{text:o,className:"absolute right-2 top-2 z-10 opacity-100 md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100 focus:opacity-100"})]})}},55924:(e,t,r)=>{r.d(t,{K:()=>a});var n=r(95155),l=r(12115);function a(e){let{entries:t,title:r,headerOffset:a=64,root:i=null,className:o=""}=e,[s,d]=(0,l.useState)(null);return((0,l.useRef)(null).current=s,(0,l.useEffect)(()=>{if("undefined"==typeof IntersectionObserver||0===t.length)return;let e=new IntersectionObserver(e=>{let t=function(e){let t=e.filter(e=>e.isIntersecting).sort((e,t)=>e.boundingClientRect.top-t.boundingClientRect.top);return t.length>0?t[0].target.id:null}(e);t&&d(t)},{root:i,rootMargin:"-".concat(a,"px 0px -70% 0px"),threshold:0}),r=[];for(let n of t){let t=document.getElementById(n.id);t&&(e.observe(t),r.push(t))}return()=>{e.disconnect(),r.length=0}},[t,a,i]),0===t.length)?null:(0,n.jsxs)("nav",{"aria-label":r,className:o,children:[(0,n.jsx)("p",{className:"px-3 pb-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:r}),(0,n.jsx)("ul",{className:"space-y-0.5 text-sm",children:t.map((e,t)=>{let r=e.id===s;return(0,n.jsx)("li",{children:(0,n.jsx)("a",{href:"#".concat(e.id),onClick:t=>((e,t)=>{e.preventDefault();let r="undefined"!=typeof document?document.getElementById(t):null;r&&r.scrollIntoView({behavior:"smooth",block:"start"}),d(t)})(t,e.id),"aria-current":r?"location":void 0,"data-depth":e.depth,style:{paddingLeft:"".concat((e.depth-1)*12+12,"px")},className:["block truncate rounded py-1 pr-2 transition-colors",r?"bg-accent-50 font-medium text-accent-700":"text-muted-foreground hover:bg-muted hover:text-foreground"].join(" "),title:e.text,children:e.text})},"".concat(e.id,"-").concat(t))})})]})}},69352:(e,t,r)=>{r.d(t,{WU:()=>d,d3:()=>c,dj:()=>s,uO:()=>u});var n,l,a,i,o=r(9567);function s(e){return e.startsWith("#")?"anchor":e.startsWith("http://")||e.startsWith("https://")||e.startsWith("mailto:")||e.startsWith("tel:")?"external":"relative"}function d(e,t){if(!t)return null;let r=e.substring(0,e.lastIndexOf("/")+1);try{let e=new URL(r,"file:///"),n=new URL(t,e),l=decodeURIComponent(n.pathname);if(l.startsWith("/")){let e=l.substring(1);if(e.length>0)return e}}catch(e){}return null}function c(e){return!e||0===e.length||e.length>2048||/[\x00-\x1f\x7f]/.test(e)?null:e}let u={...o.j,attributes:{...o.j.attributes,a:[...(null!=(a=null==(n=o.j.attributes)?void 0:n.a)?a:[]).filter(e=>"href"!==e),["href",/^(?:#|mailto:|tel:|https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/]],img:[...(null!=(i=null==(l=o.j.attributes)?void 0:l.img)?i:[]).filter(e=>"src"!==e),["src",/^(?:https?:\/\/|(?![a-zA-Z][a-zA-Z0-9+.-]*:))/],"alt","width","height"]}}},79962:(e,t,r)=>{r.d(t,{K:()=>o,Y:()=>l});var n=r(21286);let l="commandmate:md-toc-visible",a=/^ {0,3}(#{1,6})(?:[ \t]+(.*?))?[ \t]*$/,i=/^( {0,3})(`{3,}|~{3,})(.*)$/;function o(e){if(!e)return[];let t=new n.A,r=[],l=null,o=0;for(let n of e.split("\n")){var s;let e=i.exec(n);if(l){if(e){let t=e[2];t[0]===l&&t.length>=o&&""===e[3].trim()&&(l=null,o=0)}continue}if(e){let t=e[2],r=t[0];if("`"===r&&e[3].includes("`"));else{l=r,o=t.length;continue}}let d=a.exec(n);if(!d)continue;let c=d[1].length,u=function(e){let t=e;return(t=(t=(t=(t=(t=(t=(t=(t=(t=(t=t.replace(/!\[[^\]]*\]\([^)]*\)/g,"")).replace(/!\[[^\]]*\]\[[^\]]*\]/g,"")).replace(/\[([^\]]*)\]\([^)]*\)/g,"$1")).replace(/\[([^\]]*)\]\[[^\]]*\]/g,"$1")).replace(/\[([^\]]*)\]/g,"$1")).replace(/(`+)([\s\S]*?)\1/g,"$2")).replace(/(\*\*|__)(.*?)\1/g,"$2")).replace(/(\*|_)(.*?)\1/g,"$2")).replace(/~~(.*?)~~/g,"$1")).replace(/\\([\\`*_{}[\]()#+\-.!~])/g,"$1")).trim()}((null!=(s=d[2])?s:"").replace(/([ \t]|^)#+[ \t]*$/,"")),m=t.slug(u);r.push({depth:c,text:u,id:m})}return r}},98676:(e,t,r)=>{r.r(t),r.d(t,{MarkdownEditor:()=>ea});var n=r(95155),l=r(12115),a=r(47650),i=r(18955),o=r(80003),s=r(52056),d=r(64269),c=r(60322),u=r(94442),m=r(36402),f=r(3005),h=r(72115),x=r(89715),p=r(64545),w=r(57828),g=r(5917),v=r(75426),b=r(97624),k=r(37354),j=r(46046),y=r(65229),N=r(744);let E=(0,l.memo)(function(e){let{filePath:t,isDirty:r,viewMode:l,onViewModeChange:a,showMobileTabs:o,copied:s,onCopy:d,isMaximized:c,onToggleFullscreen:u,isAutoSaveEnabled:m,onAutoSaveToggle:f,isAutoSaving:h,isSaving:E,onSave:C,onClose:S,hideViewModeToggle:F}=e,A=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"flex items-center justify-between px-4 py-2 border-b border-border bg-muted",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2 min-w-0 flex-shrink",children:[(0,n.jsx)(x.A,{className:"h-4 w-4 text-muted-foreground flex-shrink-0"}),(0,n.jsx)("span",{className:"text-sm font-medium text-foreground truncate",children:t}),r&&(0,n.jsx)("span",{"data-testid":"dirty-indicator",className:"inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-warning-subtle text-warning-foreground flex-shrink-0",children:A("editor.unsaved")})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2 flex-shrink-0",children:[!o&&!F&&(0,n.jsxs)("div",{className:"flex items-center gap-1 bg-muted rounded-lg p-1",children:[(0,n.jsx)("button",{"data-testid":"view-mode-split","aria-pressed":"split"===l,onClick:()=>a("split"),className:"p-1.5 rounded ".concat("split"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.splitView"),children:(0,n.jsx)(p.A,{className:"h-4 w-4"})}),(0,n.jsx)("button",{"data-testid":"view-mode-editor","aria-pressed":"editor"===l,onClick:()=>a("editor"),className:"p-1.5 rounded ".concat("editor"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.editorOnly"),children:(0,n.jsx)(x.A,{className:"h-4 w-4"})}),(0,n.jsx)("button",{"data-testid":"view-mode-preview","aria-pressed":"preview"===l,onClick:()=>a("preview"),className:"p-1.5 rounded ".concat("preview"===l?"bg-white dark:bg-input shadow-sm text-accent-600 dark:text-accent-400":"text-muted-foreground hover:text-foreground"),title:A("editor.previewOnly"),children:(0,n.jsx)(w.A,{className:"h-4 w-4"})})]}),(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"copy-content-button",onClick:d,className:"p-1.5 hover:bg-muted rounded ".concat(s?"text-success":"text-muted-foreground hover:text-foreground"),title:A("actions.copyContent"),children:s?(0,n.jsx)(g.A,{className:"h-4 w-4"}):(0,n.jsx)(v.A,{className:"h-4 w-4"})}),(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"maximize-button",onClick:u,className:"p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted rounded",title:A(c?"editor.exitFullscreen":"editor.enterFullscreen"),"aria-pressed":c,children:c?(0,n.jsx)(b.A,{className:"h-4 w-4"}):(0,n.jsx)(k.A,{className:"h-4 w-4"})}),(0,n.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,n.jsx)("span",{className:"text-xs text-muted-foreground",children:A("editor.auto")}),(0,n.jsx)("button",{"data-testid":"auto-save-toggle",role:"switch","aria-checked":m,onClick:()=>f(!m),className:"relative inline-flex h-5 w-9 items-center rounded-full transition-colors ".concat(m?"bg-accent-600":"bg-input"),children:(0,n.jsx)("span",{className:"inline-block h-3.5 w-3.5 transform rounded-full bg-white transition-transform ".concat(m?"translate-x-4":"translate-x-0.5")})})]}),m?(0,n.jsx)("span",{"data-testid":"auto-save-indicator",className:"text-sm text-muted-foreground",children:h?A("actions.saving"):r?"":A("actions.saved")}):(0,n.jsxs)(N.$n,{variant:"ghost","data-testid":"save-button",onClick:C,disabled:!r||E,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-lg text-sm font-medium transition-colors ".concat(r&&!E?"bg-accent-600 text-white hover:bg-accent-700":"bg-muted text-muted-foreground cursor-not-allowed"),children:[(0,n.jsx)(j.A,{className:"h-4 w-4"}),A(E?"actions.saving":"actions.save")]}),S&&(0,n.jsx)(N.$n,{variant:"ghost","data-testid":"close-button",onClick:S,className:"p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted rounded",title:A("actions.close"),children:(0,n.jsx)(y.A,{className:"h-4 w-4"})})]})]})});var C=r(28857),S=r(22133),F=r(89451),A=r(10934),P=r(92254),R=r(5225);r(1226);let M=(0,r(67909).default)(()=>Promise.all([r.e(221),r.e(7485),r.e(953)]).then(r.bind(r,90953)).then(e=>({default:e.MermaidDiagram})),{loadableGenerated:{webpack:()=>[90953]},ssr:!1,loading:function(){let e=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"mermaid-loading flex items-center gap-2 text-muted-foreground p-4",children:[(0,n.jsx)(f.y,{size:"sm"}),(0,n.jsx)("span",{children:e("mermaid.loading")})]})}});function z(e){let{className:t,children:r}=e;if(t&&t.split(" ").includes("language-mermaid")){let e=null==r?"":"string"==typeof r?r:Array.isArray(r)?r.map(e=>"string"==typeof e?e:"").join(""):String(r);return(0,n.jsx)(M,{code:e})}return(0,n.jsx)("code",{className:t,children:r})}var W=r(50666),I=r(69352),V=r(76246);function T(e){let{apiUrl:t,alt:r,width:a,height:o}=e,s=(0,i.c)("worktree"),[d,c]=(0,l.useState)(null);return((0,l.useEffect)(()=>{let e=!1;return fetch(t).then(e=>e.ok?e.json():null).then(t=>{!e&&(null==t?void 0:t.content)&&c(t.content)}).catch(()=>{}),()=>{e=!0}},[t]),d)?(0,n.jsx)("img",{src:d,alt:r,width:a,height:o,style:{maxWidth:a||"100%"}}):(0,n.jsx)("span",{style:{color:"#999"},children:s("markdownPreview.loadingImage")})}let D=(0,l.memo)(function(e){let{content:t,onOpenFile:r,currentFilePath:a,worktreeId:i}=e,o=(0,l.useRef)(r);o.current=r;let s=(0,l.useRef)(a);s.current=a;let d=(0,l.useRef)(i);d.current=i;let c=(0,l.useCallback)((e,t)=>{let r=(0,I.d3)(t);if(r)switch((0,I.dj)(r)){case"anchor":break;case"external":e.preventDefault(),window.open(r,"_blank","noopener,noreferrer");break;case"relative":{e.preventDefault();let t=s.current,n=o.current;if(t&&n){let e=(0,I.WU)(t,r);e&&n(e)}}}},[]),u=(0,l.useMemo)(()=>({code:z,pre:e=>{let{children:t}=e;return!function(e){let t=l.Children.toArray(e)[0];if(!l.isValidElement(t))return!1;let r=t.props.className;return"string"==typeof r&&r.split(" ").includes("language-mermaid")}(t)?(0,n.jsx)(W.Ck,{children:(0,n.jsx)("pre",{className:"overflow-x-auto",children:t})}):(0,n.jsx)("pre",{children:t})},img:e=>{var t,r,l,a;let{src:i,alt:o,width:c,height:u,...m}=e,f=null!=c?c:null==(r=m.node)||null==(t=r.properties)?void 0:t.width,h=null!=u?u:null==(a=m.node)||null==(l=a.properties)?void 0:l.height;if("string"==typeof i&&!i.startsWith("http://")&&!i.startsWith("https://")&&!i.startsWith("data:")){let e=s.current,t=d.current;if(e&&t){let r=(0,I.WU)(e,i);if(r){let e="/api/worktrees/".concat(t,"/files/").concat((0,V.o)(r));return(0,n.jsx)(T,{apiUrl:e,alt:null!=o?o:"",width:f,height:h})}}}return(0,n.jsx)("img",{src:i,alt:null!=o?o:"",width:f,height:h,style:{maxWidth:f||"100%"}})},a:e=>{let{href:t,children:r,...l}=e;return t?(0,n.jsx)("a",{...l,href:t,onClick:e=>c(e,t),children:r}):(0,n.jsx)("a",{...l,children:r})}}),[c]),m=(0,l.useMemo)(()=>[S.A],[]),f=(0,l.useMemo)(()=>[F.A,[A.A,I.uO],P.A,R.A],[]);return(0,n.jsx)(C.oz,{remarkPlugins:m,rehypePlugins:f,components:u,children:t})}),L=(0,l.memo)(function(e){let{mobileTab:t,onTabChange:r}=e,l=(0,i.c)("worktree");return(0,n.jsxs)("div",{className:"flex border-b border-border",children:[(0,n.jsxs)("button",{"data-testid":"mobile-tab-editor",onClick:()=>r("editor"),className:"flex-1 py-2 text-sm font-medium ".concat("editor"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(x.A,{className:"h-4 w-4 inline-block mr-1"}),l("markdownPreview.editor")]}),(0,n.jsxs)("button",{"data-testid":"mobile-tab-preview",onClick:()=>r("preview"),className:"flex-1 py-2 text-sm font-medium ".concat("preview"===t?"text-accent-600 dark:text-accent-400 border-b-2 border-accent-600 dark:border-accent-400":"text-muted-foreground"),children:[(0,n.jsx)(w.A,{className:"h-4 w-4 inline-block mr-1"}),l("markdownPreview.preview")]})]})}),O=(0,l.memo)(function(e){let{isMobile:t}=e,r=(0,i.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"maximize-hint",className:"flex items-center justify-center px-4 py-1 bg-muted text-muted-foreground text-xs",children:[r("markdownPreview.exitFullscreenHint")," ",t&&r("markdownPreview.exitFullscreenHintSwipe")]})}),$=(0,l.memo)(function(e){let{onDismiss:t}=e,r=(0,i.c)("worktree");return(0,n.jsxs)("div",{"data-testid":"large-file-warning",className:"flex items-center gap-2 px-4 py-2 bg-warning-subtle border-b border-warning-border text-warning-foreground text-sm",children:[(0,n.jsx)(s.A,{className:"h-4 w-4"}),r("markdownPreview.largeFileWarning"),(0,n.jsx)("button",{onClick:t,className:"ml-auto text-warning hover:text-warning",children:(0,n.jsx)(y.A,{className:"h-4 w-4"})})]})});var _=r(55924),K=r(79962),U=r(38218);function H(){if("undefined"==typeof document)return null;let e=document;return e.fullscreenElement||e.webkitFullscreenElement||e.mozFullScreenElement||e.msFullscreenElement||null}var q=r(2317),B=r(60850),Z=r(8269),G=r(51434),X=r(59854),Y=r(9900);let J={split:{showEditor:!0,showPreview:!0,editorWidth:"w-1/2",previewWidth:"w-1/2"},editor:{showEditor:!0,showPreview:!1,editorWidth:"w-full",previewWidth:"w-0"},preview:{showEditor:!1,showPreview:!0,editorWidth:"w-0",previewWidth:"w-full"}},Q="commandmate:md-editor-view-mode",ee={WARNING_THRESHOLD:512e3};function et(e){return"number"==typeof e&&e>=.1&&e<=.9}function er(e){return"boolean"==typeof e}function en(e){return"split"===e||"editor"===e||"preview"===e}let el=(0,l.memo)(function(e){let{previewContent:t,onOpenFile:r,filePath:a,worktreeId:i,tocVisible:s,onToggleTocVisible:d,tocTitle:c,tocShowLabel:u,tocHideLabel:m}=e,f=(0,l.useRef)(null),h=(0,l.useRef)(null),[x,p]=(0,l.useState)(null),[w,g]=(0,l.useState)(!1);(0,l.useEffect)(()=>{p(h.current)},[]),(0,l.useEffect)(()=>{let e=f.current;if(!e||"undefined"==typeof ResizeObserver)return;let t=new ResizeObserver(e=>{var t,r;g((null!=(r=null==(t=e[0])?void 0:t.contentRect.width)?r:0)>=480)});return t.observe(e),()=>t.disconnect()},[]);let v=(0,l.useMemo)(()=>(0,K.K)(t),[t]),b=v.length>=2&&w,k=b&&s;return(0,n.jsxs)("div",{ref:f,className:"relative flex flex-1 overflow-hidden",children:[(0,n.jsx)("div",{ref:h,"data-testid":"markdown-preview",className:"flex-1 min-w-0 p-4 overflow-y-auto prose prose-sm dark:prose-invert max-w-none prose-headings:scroll-mt-2",children:(0,n.jsx)(D,{content:t,onOpenFile:r,currentFilePath:a,worktreeId:i})}),k&&(0,n.jsx)("aside",{"data-testid":"markdown-preview-toc",className:"w-48 flex-shrink-0 overflow-y-auto border-l border-border py-4",children:(0,n.jsx)("div",{className:"sticky top-0",children:(0,n.jsx)(_.K,{entries:v,title:c,headerOffset:0,root:x})})}),b&&(0,n.jsx)("button",{"data-testid":"markdown-preview-toc-toggle",onClick:d,"aria-pressed":s,"aria-label":s?m:u,title:s?m:u,className:"absolute top-2 right-2 z-10 flex items-center justify-center rounded-md border border-border bg-surface/90 p-1.5 text-muted-foreground hover:text-foreground hover:bg-muted shadow-sm",children:(0,n.jsx)(o.A,{className:"h-4 w-4"})})]})}),ea=(0,l.memo)(function(e){let{worktreeId:t,filePath:r,fileType:o,onClose:x,onSave:p,initialViewMode:w,onMaximizedChange:g,onDirtyChange:v,onOpenFile:b}=e,k="text"===(null!=o?o:r.toLowerCase().endsWith(".md")?"markdown":"text"),j=(0,i.c)("worktree"),y=(0,m.SC)(),[N,C]=(0,l.useState)(""),[S,F]=(0,l.useState)(""),[A,P]=(0,l.useState)(""),[R,M]=(0,l.useState)(()=>k?"editor":function(e){if(e&&en(e))return e;{let e=localStorage.getItem(Q);if(e&&en(e))return e}return"split"}(w)),[z,W]=(0,l.useState)(!0),[I,V]=(0,l.useState)(!1),[T,D]=(0,l.useState)(null),[_,ea]=(0,l.useState)(!1),[ei,eo]=(0,l.useState)(!1),[es,ed]=(0,l.useState)("editor"),[ec,eu]=(0,l.useState)(null),{showToast:em}=(0,u.dj)(),ef=(0,l.useRef)(null),eh=(0,l.useRef)(null),ex=(0,l.useRef)(null),ep=(0,l.useRef)(null),ew=(0,l.useRef)(null),eg=(0,U.a)();(0,l.useEffect)(()=>{eg&&ed("preview")},[eg]);let{isKeyboardVisible:ev,keyboardHeight:eb}=(0,G.C)(),{value:ek,setValue:ej}=(0,q.V)({key:"commandmate:md-editor-maximized",defaultValue:!1,validate:er}),{isFullscreen:ey,isFallbackMode:eN,enterFullscreen:eE,exitFullscreen:eC,toggleFullscreen:eS}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{elementRef:t,onEnter:r,onExit:n,onError:a}=e,[i,o]=(0,l.useState)(!1),[s,d]=(0,l.useState)(!1),[c,u]=(0,l.useState)(null),m=(0,l.useCallback)(()=>{let e=null!=H();o(e),!e&&s&&d(!1)},[s]),f=(0,l.useCallback)(async()=>{if(u(null),"undefined"!=typeof navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1||0)){o(!0),d(!0),null==r||r();return}if(function(){if("undefined"==typeof document)return!1;let e=document;return!!(e.fullscreenEnabled||e.webkitFullscreenEnabled||e.mozFullScreenEnabled||e.msFullscreenEnabled)}()&&(null==t?void 0:t.current))try{var e;await ((e=t.current).requestFullscreen?Promise.resolve(e.requestFullscreen()):e.webkitRequestFullscreen?Promise.resolve(e.webkitRequestFullscreen()):e.mozRequestFullScreen?Promise.resolve(e.mozRequestFullScreen()):e.msRequestFullscreen?Promise.resolve(e.msRequestFullscreen()):Promise.reject(Error("Fullscreen API not supported"))),o(!0),d(!1),null==r||r()}catch(t){let e=t instanceof Error?t.message:"Failed to enter fullscreen";u(e),null==a||a(t instanceof Error?t:Error(e)),o(!0),d(!0),null==r||r()}else o(!0),d(!0),null==r||r()},[t,r,a]),h=(0,l.useCallback)(async()=>{if(u(null),s){o(!1),d(!1),null==n||n();return}if(H())try{await function(){if("undefined"==typeof document)return Promise.resolve();let e=document;return e.exitFullscreen?Promise.resolve(e.exitFullscreen()):e.webkitExitFullscreen?Promise.resolve(e.webkitExitFullscreen()):e.mozCancelFullScreen?Promise.resolve(e.mozCancelFullScreen()):e.msExitFullscreen?Promise.resolve(e.msExitFullscreen()):Promise.resolve()}(),o(!1),null==n||n()}catch(t){let e=t instanceof Error?t.message:"Failed to exit fullscreen";u(e),null==a||a(t instanceof Error?t:Error(e)),o(!1),d(!1),null==n||n()}else o(!1),d(!1),null==n||n()},[s,n,a]),x=(0,l.useCallback)(async()=>{i?await h():await f()},[i,f,h]);return(0,l.useEffect)(()=>(function(e){if("undefined"==typeof document)return()=>{};let t=["fullscreenchange","webkitfullscreenchange","mozfullscreenchange","MSFullscreenChange"];for(let r of t)document.addEventListener(r,e);return()=>{for(let r of t)document.removeEventListener(r,e)}})(m),[m]),{isFullscreen:i,isFallbackMode:s,enterFullscreen:f,exitFullscreen:h,toggleFullscreen:x,error:c}}({elementRef:ep,onEnter:()=>ej(!0),onExit:()=>ej(!1)}),{value:eF,setValue:eA}=(0,q.V)({key:"commandmate:md-editor-split-ratio",defaultValue:.5,validate:et}),{value:eP,setValue:eR}=(0,q.V)({key:"commandmate:md-editor-auto-save",defaultValue:!1,validate:er}),{value:eM,setValue:ez}=(0,q.V)({key:K.Y,defaultValue:!0,validate:er}),eW=(0,l.useCallback)(()=>{ez(e=>!e)},[ez]),{ref:eI}=(0,Z.hU)({onSwipeDown:()=>{ey&&eC()},threshold:150,enabled:ey&&eg}),eV=N!==S,eT=k?J.editor:J[R];(0,l.useEffect)(()=>{null==v||v(eV)},[eV,v]);let eD=eg&&window.innerHeight>window.innerWidth,eL=!k&&eD&&"split"===R,eO=(0,l.useMemo)(()=>(0,d.sg)(e=>{P(e)},300),[]),e$=(0,l.useCallback)(async()=>{W(!0),D(null);try{let n=await fetch("/api/worktrees/".concat(t,"/files/").concat(r)),l=await n.json();if(!n.ok||!l.success){var e;throw Error((null==(e=l.error)?void 0:e.message)||j("editor.loadError"))}let a=l.content||"";C(a),F(a),P(a),new Blob([a]).size>ee.WARNING_THRESHOLD&&ea(!0)}catch(e){D(e instanceof Error?e.message:j("editor.loadError"))}finally{W(!1)}},[t,r]),e_=(0,l.useCallback)(async e=>{let n=await fetch("/api/worktrees/".concat(t,"/files/").concat(r),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:e})});if(401===n.status||n.redirected)throw Error(j("editor.sessionExpired"));let l=await n.json();if(!n.ok||!l.success){var a;throw Error((null==(a=l.error)?void 0:a.message)||j("editor.saveError"))}F(e)},[t,r,j]),{isSaving:eK,error:eU,saveNow:eH}=(0,B.U)({value:N,saveFn:e_,debounceMs:3e3,disabled:!eP}),eq=(0,l.useCallback)(e=>{eR(e),e&&eV&&e_(N)},[eR,eV,e_,N]),eB=(0,l.useCallback)(async()=>{if(eV&&!I){V(!0);try{await e_(N),em(j("editor.saveSuccess"),"success"),p&&p(r)}catch(e){em(e instanceof Error?e.message:j("editor.saveError"),"error")}finally{V(!1)}}},[e_,N,eV,I,p,r,em,j]),eZ=N.split("\n").length,eG=(0,l.useCallback)(()=>{ef.current&&eh.current&&(eh.current.scrollTop=ef.current.scrollTop)},[]),eX=(0,l.useCallback)(e=>{let t=e.target.value;C(t),eO(t)},[eO]),eY=(0,l.useCallback)(e=>{M(e),localStorage.setItem(Q,e)},[]),eJ=(0,l.useCallback)(async()=>{if(eP){if((eV||eK)&&(await eH(),eU)&&!await y({description:j("editor.saveFailedCloseConfirm"),variant:"danger"}))return}else if(eV&&!await y({description:j("editor.unsavedCloseConfirm"),variant:"danger"}))return;null==x||x()},[eP,eV,eK,eH,eU,x,y,j]),eQ=(0,l.useCallback)(async()=>{try{await (0,c.l)(N),eo(!0),setTimeout(()=>eo(!1),Y.pX)}catch(e){}},[N]),e0=(0,l.useCallback)(e=>{if(!ew.current)return;let t=ew.current.offsetWidth;if(0===t)return;let r=e/t;eA(e=>Math.max(.1,Math.min(.9,e+r)))},[eA]),e1=(0,l.useCallback)(()=>{eA(.5)},[eA]),e4=(0,l.useCallback)(e=>{if((e.ctrlKey||e.metaKey)&&"s"===e.key){e.preventDefault(),eP?(async()=>{await eH(),null==p||p(r)})():eB();return}if((e.ctrlKey||e.metaKey)&&e.shiftKey&&"F"===e.key){e.preventDefault(),eS();return}if("Escape"===e.key&&ey){e.preventDefault(),eC();return}},[eB,eP,eH,p,r,eS,eC,ey]),e2=(0,l.useCallback)(e=>(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{ref:eh,className:"flex-shrink-0 py-4 pl-2 pr-2 text-right select-none text-muted-foreground font-mono text-sm bg-muted dark:bg-muted/50 border-r border-border overflow-hidden","aria-hidden":"true",children:Array.from({length:eZ},(e,t)=>(0,n.jsx)("div",{className:"leading-[1.5rem]",children:t+1},t+1))}),(0,n.jsx)("textarea",{ref:ef,"data-testid":"markdown-editor-textarea",value:N,onChange:eX,onKeyDown:e4,onScroll:eG,className:"flex-1 py-4 pr-4 pl-3 font-mono text-sm resize-none bg-surface text-foreground focus:outline-none leading-[1.5rem]".concat(e?" focus:ring-2 focus:ring-ring focus:ring-inset":""),placeholder:k?j("editor.placeholder"):j("editor.placeholderMarkdown"),spellCheck:!1})]}),[eZ,N,eX,e4,eG,k,j]);(0,l.useEffect)(()=>{let e=e=>{"Escape"===e.key&&ey&&(e.preventDefault(),eC())};return ey&&document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[ey,eC]),(0,l.useEffect)(()=>{ek&&!ey&&eE()},[]),(0,l.useEffect)(()=>{if("undefined"==typeof document)return;let e=document.getElementById("markdown-editor-portal");return e||((e=document.createElement("div")).id="markdown-editor-portal",document.body.appendChild(e)),eu(e),()=>{let e=document.getElementById("markdown-editor-portal");e&&0===e.childNodes.length&&e.remove()}},[]),(0,l.useEffect)(()=>{null==g||g(ey)},[ey,g]),(0,l.useEffect)(()=>{e$()},[e$]),(0,l.useEffect)(()=>{let e=eP?eV||eK:eV,t=t=>{e&&(t.preventDefault(),t.returnValue="")};return e?(ex.current=t,window.addEventListener("beforeunload",t)):ex.current&&(window.removeEventListener("beforeunload",ex.current),ex.current=null),()=>{ex.current&&window.removeEventListener("beforeunload",ex.current)}},[eV,eK,eP]),(0,l.useEffect)(()=>{eU&&eP&&(eR(!1),em(j("editor.autoSaveFailed"),"error"))},[eU,eP,eR,em,j]);let e5=(0,l.useMemo)(()=>{let e="flex flex-col bg-surface";return ey&&eN?"".concat(e," fixed inset-0"):"".concat(e," h-full")},[ey,eN]),e6=(0,l.useMemo)(()=>{if(ey)return{zIndex:X.M.MAXIMIZED_EDITOR}},[ey]),e9=(0,l.useMemo)(()=>{if("split"===R&&!eL)return{width:"".concat(100*eF,"%"),flexShrink:0}},[R,eF,eL]),e3=(0,l.useMemo)(()=>{if("split"===R&&!eL)return{width:"".concat((1-eF)*100,"%"),flexShrink:0}},[R,eF,eL]),e7=(0,l.useMemo)(()=>{if(ev&&eb>0)return{paddingBottom:eb}},[ev,eb]);if(z)return(0,n.jsx)("div",{"data-testid":"markdown-editor",className:"flex items-center justify-center h-full bg-surface",children:(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)(f.y,{size:"xl",variant:"accent",className:"inline-block"}),(0,n.jsx)("p",{className:"mt-4 text-muted-foreground",children:j("editor.loading")})]})});if(T)return(0,n.jsx)("div",{"data-testid":"markdown-editor-error",className:"flex items-center justify-center h-full bg-surface",children:(0,n.jsxs)("div",{className:"text-center",children:[(0,n.jsx)(s.A,{className:"h-12 w-12 text-danger mx-auto mb-4"}),(0,n.jsx)("p",{className:"text-danger-foreground",children:T}),x&&(0,n.jsx)("button",{onClick:x,className:"mt-4 px-4 py-2 bg-muted hover:bg-muted/80 rounded-lg text-foreground",children:j("actions.close")})]})});let e8=(0,n.jsxs)("div",{ref:e=>{ep.current=e,eI.current=e},"data-testid":"markdown-editor",className:e5,style:e6,onKeyDown:e4,role:ey&&eN?"dialog":void 0,"aria-modal":ey&&eN?"true":void 0,children:[(0,n.jsx)(E,{filePath:r,isDirty:eV,viewMode:R,onViewModeChange:eY,showMobileTabs:eL,copied:ei,onCopy:eQ,isMaximized:ey,onToggleFullscreen:eS,isAutoSaveEnabled:eP,onAutoSaveToggle:eq,isAutoSaving:eK,isSaving:I,onSave:eB,onClose:x?eJ:void 0,hideViewModeToggle:k}),ey&&(0,n.jsx)(O,{isMobile:eg}),_&&(0,n.jsx)($,{onDismiss:()=>ea(!1)}),eL&&(0,n.jsx)(L,{mobileTab:es,onTabChange:ed}),(0,n.jsxs)("div",{ref:ew,className:"flex flex-1 overflow-hidden",style:e7,children:[eL?"editor"===es&&(0,n.jsx)("div",{"data-testid":"markdown-editor-container",className:"flex overflow-hidden w-full flex-1",children:e2(!1)}):(0,n.jsx)("div",{"data-testid":"markdown-editor-container",className:"flex overflow-hidden transition-all duration-200 ".concat(eT.showEditor?"":"hidden"),style:"split"===R?e9:{width:eT.showEditor?"100%":"0%"},children:e2(!0)}),"split"===R&&eT.showEditor&&eT.showPreview&&!eL&&(0,n.jsx)(h.f,{onResize:e0,onDoubleClick:e1,orientation:"horizontal",ariaValueNow:Math.round(100*eF),minRatio:.1}),eL?"preview"===es&&(0,n.jsx)("div",{"data-testid":"markdown-preview-container",className:"flex flex-col overflow-hidden w-full",children:(0,n.jsx)(el,{previewContent:A,onOpenFile:b,filePath:r,worktreeId:t,tocVisible:eM,onToggleTocVisible:eW,tocTitle:j("toc.title"),tocShowLabel:j("toc.show"),tocHideLabel:j("toc.hide")})}):(0,n.jsx)("div",{"data-testid":"markdown-preview-container",className:"flex flex-col overflow-hidden transition-all duration-200 ".concat(eT.showPreview?"":"hidden"),style:"split"===R?e3:{width:eT.showPreview?"100%":"0%"},children:(0,n.jsx)(el,{previewContent:A,onOpenFile:b,filePath:r,worktreeId:t,tocVisible:eM,onToggleTocVisible:eW,tocTitle:j("toc.title"),tocShowLabel:j("toc.show"),tocHideLabel:j("toc.hide")})})]})]});return ey&&eN&&ec?(0,a.createPortal)(e8,ec):e8})}}]);