@puddle-code/cli 0.0.55 → 0.0.56

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 (32) hide show
  1. package/CHANGELOG.md +11 -6
  2. package/dist/index.js +31 -5
  3. package/dist/public/assets/{Dashboard-Zy1p889G.js → Dashboard-DPqwwUiD.js} +1 -1
  4. package/dist/public/assets/{EditorTabClose-CNutQ8jD.js → EditorTabClose-DhBdVAJ8.js} +1 -1
  5. package/dist/public/assets/LazyTerminal-BnRoMF57.js +2 -0
  6. package/dist/public/assets/{ModelRefcount-C0OKUgxA.js → ModelRefcount-BhPXKC1X.js} +1 -1
  7. package/dist/public/assets/{PaneEditorBody-B88Ve_Um.js → PaneEditorBody-CuJQKX7l.js} +2 -2
  8. package/dist/public/assets/SettingsDialog-BuhPsjMd.js +1 -0
  9. package/dist/public/assets/{Terminal-D5J5edCq.js → Terminal-B7UULA8q.js} +2 -2
  10. package/dist/public/assets/Workspace-D2ZvlY63.js +7 -0
  11. package/dist/public/assets/{buffer-store-B0PeSmyA.js → buffer-store-BTxNhwb6.js} +3 -3
  12. package/dist/public/assets/context-menu-BbpcCnCP.js +1 -0
  13. package/dist/public/assets/{cssMode-Bs34S34J.js → cssMode-CYBVfK4L.js} +1 -1
  14. package/dist/public/assets/editor-context-DBjXfTll.js +1 -0
  15. package/dist/public/assets/{editor-sync-D8goZh5D.js → editor-sync-BkL2SFMx.js} +1 -1
  16. package/dist/public/assets/{file-links-BxADyqBz.js → file-links-B5m-T1pu.js} +1 -1
  17. package/dist/public/assets/hotkeys-CekBkaTu.js +73 -0
  18. package/dist/public/assets/{htmlMode-BHdZ3i0j.js → htmlMode-YN0GJaW0.js} +1 -1
  19. package/dist/public/assets/index-tq6zC_Gs.js +10 -0
  20. package/dist/public/assets/{jsonMode-D65P-gpW.js → jsonMode-BB6_HJep.js} +1 -1
  21. package/dist/public/assets/{session-seed-CbqaUf_D.js → session-seed-CQJvHQ4H.js} +1 -1
  22. package/dist/public/assets/{tsMode-xCXSLtgj.js → tsMode-BKCJzLfw.js} +1 -1
  23. package/dist/public/assets/{use-find-controls-DHY2DUR7.js → use-find-controls-BLr0BXJn.js} +1 -1
  24. package/dist/public/index.html +3 -3
  25. package/package.json +1 -1
  26. package/dist/public/assets/LazyTerminal-D02uMOCY.js +0 -2
  27. package/dist/public/assets/SettingsDialog-CH5WxI03.js +0 -1
  28. package/dist/public/assets/Workspace-CgTBejI-.js +0 -7
  29. package/dist/public/assets/context-menu-DIsDoDEm.js +0 -1
  30. package/dist/public/assets/editor-context-BZHPtUDq.js +0 -1
  31. package/dist/public/assets/hotkeys-BApA7bsN.js +0 -73
  32. package/dist/public/assets/index-PreRneCj.js +0 -10
package/CHANGELOG.md CHANGED
@@ -7,11 +7,16 @@ Past releases: see docs/changelogs/.
7
7
 
8
8
  # Changelog
9
9
 
10
- ## [0.0.55] — 2026-08-21
10
+ ## [0.0.56] — 2026-08-22
11
11
 
12
- ### Fixed
12
+ ### Added
13
13
 
14
- - Honour the configured editor tab size instead of letting Monaco override it from file contents.
15
- - Use each newly registered repository's checked-out clone branch as its default base instead of assuming `main`.
16
- - Make terminal file paths clickable across every visual row when they wrap onto multiple lines.
17
- - Preserve each terminal's scroll position when leaving and returning to its session.
14
+ - Synchronise native conversation catalogues, titles, parentage, cwd, and missing state into profile-safe project/worktree placements.
15
+ - Follow exact in-agent `/clear`, `/resume`, and `/fork` transitions while preserving frozen terminal history, shells, environment, and runtime ownership.
16
+ - Add additive lifecycle hooks for Claude Code and Gemini CLI, a managed OpenCode plugin, and a Codex app-server bridge with direct-launch fallback.
17
+
18
+ ### Changed
19
+
20
+ - Store native conversations separately from immutable Puddle session placements and expose the joined identity through protocol 16.4.
21
+ - Refresh eligible conversation catalogues on project activation, using debounced filesystem watches, a five-minute safety sweep, and adaptive fallback polling.
22
+ - Keep missing native conversations visible, disable their resume action, and focus the existing placement when a conversation is already live elsewhere.
package/dist/index.js CHANGED
@@ -4260,7 +4260,7 @@ import {
4260
4260
  import { dirname as dirname3, join as join4, resolve } from "node:path";
4261
4261
 
4262
4262
  // ../shared/src/protocol.ts
4263
- var PROTOCOL_VERSION = { major: 16, minor: 3 };
4263
+ var PROTOCOL_VERSION = { major: 16, minor: 4 };
4264
4264
 
4265
4265
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
4266
4266
  var external_exports = {};
@@ -18780,7 +18780,9 @@ config(en_default());
18780
18780
  var errorResponseSchema = external_exports.object({
18781
18781
  error: external_exports.object({
18782
18782
  code: external_exports.string(),
18783
- message: external_exports.string()
18783
+ message: external_exports.string(),
18784
+ /** Optional machine-readable context for recoverable conflicts. */
18785
+ details: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
18784
18786
  })
18785
18787
  });
18786
18788
  var isoTimestamp = external_exports.iso.datetime({ offset: true });
@@ -18799,10 +18801,23 @@ var versionResponseSchema = external_exports.object({
18799
18801
  });
18800
18802
 
18801
18803
  // ../shared/src/api/agent-signal.ts
18802
- var agentSignalRequestSchema = external_exports.object({
18804
+ var statusSignalSchema = external_exports.object({
18803
18805
  nonce: external_exports.string().min(16),
18804
18806
  state: external_exports.enum(["working", "waiting_input"])
18805
18807
  });
18808
+ var agentLifecycleSignalSchema = external_exports.object({
18809
+ nonce: external_exports.string().min(16),
18810
+ event: external_exports.enum(["session_start", "session_end"]),
18811
+ /** Agent-native conversation id. Required for a start; optional on a best-effort end hook. */
18812
+ agent_session_ref: external_exports.string().min(1).optional(),
18813
+ cwd: external_exports.string().min(1),
18814
+ source: external_exports.enum(["startup", "resume", "clear", "fork", "compact", "exit", "other"]),
18815
+ parent_agent_session_ref: external_exports.string().min(1).optional(),
18816
+ native_title: external_exports.string().optional(),
18817
+ native_created_at: external_exports.iso.datetime({ offset: true }).optional(),
18818
+ native_updated_at: external_exports.iso.datetime({ offset: true }).optional()
18819
+ });
18820
+ var agentSignalRequestSchema = external_exports.union([statusSignalSchema, agentLifecycleSignalSchema]);
18806
18821
 
18807
18822
  // ../shared/src/api/config.ts
18808
18823
  var fields = {
@@ -19152,6 +19167,10 @@ var sessionSchema = external_exports.object({
19152
19167
  /** Null for terminal sessions, which run a plain shell rather than an agent. */
19153
19168
  agent_type: external_exports.string().nullable(),
19154
19169
  agent_session_ref: external_exports.string().nullable(),
19170
+ /** Durable native-conversation catalogue row; null for terminal sessions. */
19171
+ conversation_id: rowId.nullable().optional(),
19172
+ /** Native parent conversation, when the agent records a fork relationship. */
19173
+ parent_conversation_id: rowId.nullable().optional(),
19155
19174
  /** User-set display override; null means "use the agent's own name" (agent_title) then the id. */
19156
19175
  title: external_exports.string().nullable(),
19157
19176
  /**
@@ -19161,6 +19180,12 @@ var sessionSchema = external_exports.object({
19161
19180
  * older daemons omit it; null when the agent has not named the session yet.
19162
19181
  */
19163
19182
  agent_title: external_exports.string().nullable().optional(),
19183
+ /** Two successful native scans could no longer find this conversation. */
19184
+ conversation_missing: external_exports.boolean().optional(),
19185
+ /** This placement owns worktree/branch-dependent destructive actions. */
19186
+ branch_owner: external_exports.boolean().optional(),
19187
+ /** Strength of exact in-agent lifecycle synchronisation for this runtime. */
19188
+ native_sync: external_exports.enum(["pending", "full", "fallback"]).optional(),
19164
19189
  /**
19165
19190
  * The terminal-title "sequence" name: the last title the process set on its
19166
19191
  * PTY via an OSC 0/1/2 escape, normalised (leading spinner/status glyphs
@@ -19852,7 +19877,7 @@ import { readFileSync } from "node:fs";
19852
19877
  import { dirname, join as join2 } from "node:path";
19853
19878
  import { fileURLToPath } from "node:url";
19854
19879
  function cliVersion() {
19855
- if (true) return "0.0.55";
19880
+ if (true) return "0.0.56";
19856
19881
  const here = dirname(fileURLToPath(import.meta.url));
19857
19882
  for (const candidate of [
19858
19883
  join2(here, "..", "..", "package.json"),
@@ -20209,7 +20234,8 @@ var RELEASE_PROTOCOLS = {
20209
20234
  "0.0.52": { major: 16, minor: 3 },
20210
20235
  "0.0.53": { major: 16, minor: 3 },
20211
20236
  "0.0.54": { major: 16, minor: 3 },
20212
- "0.0.55": { major: 16, minor: 3 }
20237
+ "0.0.55": { major: 16, minor: 3 },
20238
+ "0.0.56": { major: 16, minor: 4 }
20213
20239
  };
20214
20240
  function validProtocol(value) {
20215
20241
  if (typeof value !== "object" || value === null) return false;
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,r}from"./x-BJOrp_m5.js";import{_t as i,et as a,ft as o,it as s,p as c,st as l,tt as u,v as d,wt as f}from"./hotkeys-BApA7bsN.js";import{a as p,h as m,i as h,n as g,o as _,t as v}from"./dialog-DjL0qoAv.js";import{a as y,c as b,i as x,o as S,s as C,t as w}from"./LazyTerminal-D02uMOCY.js";import{A as T,M as E,c as D,j as O,k,n as A,r as j,t as M}from"./context-menu-DIsDoDEm.js";import{r as N}from"./dist-DDFe8e3m.js";import{Et as P,Gt as F,Mt as I,at as L,ct as R,lt as z,st as B}from"./index-PreRneCj.js";var V=e(t(),1),H=n(),U=!1;function W(){let[e,t]=(0,V.useState)(U),[n,r]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!e)return;let t=!1;return z.spawnShell(f).then(e=>{t||r(e)}),()=>{t=!0}},[e]);let i=()=>{U=!1,t(!1),r(null)};return{open:e,term:n,toggle:()=>{e?(n&&z.killShell(f,n),i()):(U=!0,t(!0))},onExit:i}}function G({term:e,onExit:t}){return(0,H.jsx)(`div`,{className:`h-72 shrink-0 pb-6`,children:(0,H.jsx)(`div`,{className:`mx-auto size-full max-w-4xl px-6`,children:e!==null&&(0,H.jsx)(w,{stream:`home`,term:e,onExit:t})})})}var K=[{status:`running`,colour:`bg-running`},{status:`waiting_input`,colour:`bg-waiting`},{status:`interrupted`,colour:`bg-interrupted`}];function q({projectId:e}){let t=i(e),n=(0,V.useMemo)(()=>{let e=new Map;for(let n of t.data??[])e.set(n.status,(e.get(n.status)??0)+1);return e},[t.data]),r=(t.data??[]).filter(e=>e.status!==`archived`).length;return(0,H.jsxs)(`div`,{className:`flex items-center gap-3 text-2xs text-fg-muted tabular-nums`,children:[(0,H.jsxs)(`span`,{children:[r,` session`,r===1?``:`s`]}),K.map(({status:e,colour:t})=>{let r=n.get(e)??0;return r===0?null:(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full ${t}`}),r,` `,e.replace(`_`,` `)]},e)})]})}function J({icon:e,label:t,onClick:n}){return(0,H.jsx)(`button`,{type:`button`,"aria-label":t,title:t,onClick:e=>{e.preventDefault(),e.stopPropagation(),n()},className:`flex items-center rounded-md p-1.5 text-fg-muted transition-colors hover:bg-ground hover:text-fg`,children:(0,H.jsx)(e,{className:`size-4`})})}function Y({project:e,repoPath:t,draggable:n,dragging:i,onDragStart:a,onDragEnd:o,onDragOver:s}){let c=u(),[l,d]=(0,V.useState)(!1),[f,S]=(0,V.useState)(e.name),[w,T]=(0,V.useState)(R(e)),k=t=>c.mutate({id:e.id,archived:t},{onError:e=>x(e)}),N=()=>{S(e.name),T(R(e)),d(!0)},P=()=>{let t=f.trim(),n=B(w);if(!t){d(!1);return}let r={...t===e.name?{}:{name:t},...n&&n!==R(e)?{abbrev:n}:{}};if(Object.keys(r).length===0){d(!1);return}c.mutate({id:e.id,...r},{onSuccess:()=>d(!1),onError:e=>x(e)})};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(M,{children:[(0,H.jsx)(D,{asChild:!0,children:(0,H.jsxs)(`div`,{draggable:n,onDragStart:a,onDragEnd:o,onDragOver:s,className:r(`group relative transition-opacity`,i&&`opacity-50`),children:[(0,H.jsxs)(F,{draggable:!1,to:`/project/${e.id}`,className:`block rounded-lg bg-surface p-4 transition-colors hover:bg-elevated`,children:[(0,H.jsx)(`h2`,{className:`truncate pr-16 text-base font-semibold text-fg group-hover:text-accent`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:t??`…`}),(0,H.jsx)(`div`,{className:`mt-3`,children:(0,H.jsx)(q,{projectId:e.id})})]}),(0,H.jsx)(`div`,{className:`absolute right-2 top-2 hidden gap-0.5 group-hover:flex has-[[data-state=open]]:flex pointer-coarse:flex`,children:e.archived?(0,H.jsx)(J,{icon:E,label:`Reopen project`,onClick:()=>k(!1)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(J,{icon:y,label:`Edit project`,onClick:N}),(0,H.jsx)(J,{icon:O,label:`Archive project`,onClick:()=>k(!0)})]})})]})}),(0,H.jsx)(A,{children:e.archived?(0,H.jsxs)(j,{onSelect:()=>k(!1),children:[(0,H.jsx)(E,{}),` Reopen`]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(j,{onSelect:N,children:[(0,H.jsx)(y,{}),` Edit`]}),(0,H.jsxs)(j,{onSelect:()=>k(!0),children:[(0,H.jsx)(O,{}),` Archive`]})]})})]}),(0,H.jsx)(v,{open:l,onOpenChange:d,children:(0,H.jsxs)(g,{children:[(0,H.jsx)(p,{children:(0,H.jsx)(_,{children:`Edit project`})}),(0,H.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>{e.preventDefault(),P()},children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(C,{htmlFor:`project-name-${e.id}`,children:`Name`}),(0,H.jsx)(b,{id:`project-name-${e.id}`,value:f,onChange:e=>S(e.target.value),autoFocus:!0})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(C,{htmlFor:`project-abbrev-${e.id}`,children:`Abbreviation`}),(0,H.jsx)(b,{id:`project-abbrev-${e.id}`,maxLength:5,value:w,onChange:e=>T(B(e.target.value)),className:`w-24 uppercase`}),(0,H.jsxs)(`p`,{className:`text-2xs text-fg-muted`,children:[`Up to `,5,` characters — the label on the collapsed sidebar rail.`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(C,{className:`text-fg-muted`,children:`Path`}),(0,H.jsx)(`p`,{className:`truncate text-2xs text-fg-muted`,children:t??`…`})]}),(0,H.jsxs)(h,{children:[(0,H.jsx)(m,{type:`button`,variant:`ghost`,onClick:()=>d(!1),children:`Cancel`}),(0,H.jsx)(m,{type:`submit`,disabled:!f.trim()||c.isPending,children:`Save`})]})]})]})})]})}function X({icon:e,label:t,hint:n,onClick:r}){return(0,H.jsxs)(`button`,{type:`button`,onClick:r,className:`group flex flex-col rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,children:[(0,H.jsxs)(`h2`,{className:`flex items-center gap-2 truncate text-base font-semibold text-fg group-hover:text-accent`,children:[(0,H.jsx)(e,{className:`size-4 shrink-0`}),t]}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:n})]})}function Z(){let e=d(),t=l(e??void 0),n=o(),i=s(e??void 0),u=a(e??``),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null),[g,_]=(0,V.useState)(!1),v=W(),y=c(`palette.toggle`),b=e=>n.data?.find(t=>t.id===e)?.path,x=t.data??[],C=i.data?.projectOrder??[],w=k(x.filter(e=>!e.archived),C),E=x.filter(e=>e.archived),D=(e,t)=>{e!==t&&u.mutate({projectOrder:T(w.map(e=>e.id),e,t)})};return(0,H.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-4xl p-6`,children:[x.length===0&&(0,H.jsxs)(`div`,{className:`mb-8 mt-16 flex flex-col items-center gap-3 text-center`,children:[(0,H.jsx)(S,{className:`size-8 text-fg-muted`}),(0,H.jsxs)(`p`,{className:`text-sm text-fg-secondary`,children:[`No projects yet — open one below, or press `,y,`.`]})]}),(0,H.jsxs)(`div`,{className:`grid auto-rows-fr grid-cols-1 gap-3 sm:grid-cols-2`,children:[w.map(e=>(0,H.jsx)(Y,{project:e,repoPath:b(e.repo_id),draggable:!0,dragging:m===e.id,onDragStart:()=>h(e.id),onDragEnd:()=>h(null),onDragOver:t=>{t.preventDefault(),m&&m!==e.id&&D(m,e.id)}},e.id)),(0,H.jsx)(X,{icon:I,label:`Open project`,hint:`Point at a repository on this host`,onClick:()=>p(!0)}),(0,H.jsx)(X,{icon:P,label:v.open?`Close terminal`:`Open terminal`,hint:v.open?`End the shell below`:`A shell at ~ for cloning repositories`,onClick:v.toggle})]}),E.length>0&&(0,H.jsxs)(`div`,{className:`mt-6`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>_(e=>!e),className:`flex items-center gap-1.5 px-1 py-1.5 text-2xs uppercase tracking-wide text-fg-muted transition-colors hover:text-fg`,children:[(0,H.jsx)(N,{className:r(`size-3 transition-transform`,g&&`rotate-90`)}),(0,H.jsx)(O,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Archived`}),(0,H.jsx)(`span`,{className:`tabular-nums`,children:E.length})]}),g&&(0,H.jsx)(`div`,{className:`mt-2 grid grid-cols-1 gap-3 sm:grid-cols-2`,children:E.map(e=>(0,H.jsx)(Y,{project:e,repoPath:b(e.repo_id),draggable:!1,dragging:!1,onDragStart:()=>{},onDragEnd:()=>{},onDragOver:()=>{}},e.id))})]})]})}),v.open&&(0,H.jsx)(G,{term:v.term,onExit:v.onExit}),e!==null&&(0,H.jsx)(L,{profileId:e,open:f,onOpenChange:p})]})}export{Z as Dashboard};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,r}from"./x-BJOrp_m5.js";import{Tt as i,at as a,ct as o,nt as s,p as c,pt as l,tt as u,v as d,vt as f}from"./hotkeys-CekBkaTu.js";import{a as p,h as m,i as h,n as g,o as _,t as v}from"./dialog-DjL0qoAv.js";import{a as y,c as b,l as x,o as S,s as C,t as w}from"./LazyTerminal-BnRoMF57.js";import{A as T,M as E,c as D,j as O,k,n as A,r as j,t as M}from"./context-menu-BbpcCnCP.js";import{r as N}from"./dist-DDFe8e3m.js";import{Dt as P,Kt as F,Nt as I,at as L,ct as R,lt as z,st as B}from"./index-tq6zC_Gs.js";var V=e(t(),1),H=n(),U=!1;function W(){let[e,t]=(0,V.useState)(U),[n,r]=(0,V.useState)(null);(0,V.useEffect)(()=>{if(!e)return;let t=!1;return z.spawnShell(i).then(e=>{t||r(e)}),()=>{t=!0}},[e]);let a=()=>{U=!1,t(!1),r(null)};return{open:e,term:n,toggle:()=>{e?(n&&z.killShell(i,n),a()):(U=!0,t(!0))},onExit:a}}function G({term:e,onExit:t}){return(0,H.jsx)(`div`,{className:`h-72 shrink-0 pb-6`,children:(0,H.jsx)(`div`,{className:`mx-auto size-full max-w-4xl px-6`,children:e!==null&&(0,H.jsx)(w,{stream:`home`,term:e,onExit:t})})})}var K=[{status:`running`,colour:`bg-running`},{status:`waiting_input`,colour:`bg-waiting`},{status:`interrupted`,colour:`bg-interrupted`}];function q({projectId:e}){let t=f(e),n=(0,V.useMemo)(()=>{let e=new Map;for(let n of t.data??[])e.set(n.status,(e.get(n.status)??0)+1);return e},[t.data]),r=(t.data??[]).filter(e=>e.status!==`archived`).length;return(0,H.jsxs)(`div`,{className:`flex items-center gap-3 text-2xs text-fg-muted tabular-nums`,children:[(0,H.jsxs)(`span`,{children:[r,` session`,r===1?``:`s`]}),K.map(({status:e,colour:t})=>{let r=n.get(e)??0;return r===0?null:(0,H.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,H.jsx)(`span`,{className:`size-1.5 rounded-full ${t}`}),r,` `,e.replace(`_`,` `)]},e)})]})}function J({icon:e,label:t,onClick:n}){return(0,H.jsx)(`button`,{type:`button`,"aria-label":t,title:t,onClick:e=>{e.preventDefault(),e.stopPropagation(),n()},className:`flex items-center rounded-md p-1.5 text-fg-muted transition-colors hover:bg-ground hover:text-fg`,children:(0,H.jsx)(e,{className:`size-4`})})}function Y({project:e,repoPath:t,draggable:n,dragging:i,onDragStart:a,onDragEnd:o,onDragOver:c}){let l=s(),[u,d]=(0,V.useState)(!1),[f,C]=(0,V.useState)(e.name),[w,T]=(0,V.useState)(R(e)),k=t=>l.mutate({id:e.id,archived:t},{onError:e=>y(e)}),N=()=>{C(e.name),T(R(e)),d(!0)},P=()=>{let t=f.trim(),n=B(w);if(!t){d(!1);return}let r={...t===e.name?{}:{name:t},...n&&n!==R(e)?{abbrev:n}:{}};if(Object.keys(r).length===0){d(!1);return}l.mutate({id:e.id,...r},{onSuccess:()=>d(!1),onError:e=>y(e)})};return(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(M,{children:[(0,H.jsx)(D,{asChild:!0,children:(0,H.jsxs)(`div`,{draggable:n,onDragStart:a,onDragEnd:o,onDragOver:c,className:r(`group relative transition-opacity`,i&&`opacity-50`),children:[(0,H.jsxs)(F,{draggable:!1,to:`/project/${e.id}`,className:`block rounded-lg bg-surface p-4 transition-colors hover:bg-elevated`,children:[(0,H.jsx)(`h2`,{className:`truncate pr-16 text-base font-semibold text-fg group-hover:text-accent`,children:e.name}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:t??`…`}),(0,H.jsx)(`div`,{className:`mt-3`,children:(0,H.jsx)(q,{projectId:e.id})})]}),(0,H.jsx)(`div`,{className:`absolute right-2 top-2 hidden gap-0.5 group-hover:flex has-[[data-state=open]]:flex pointer-coarse:flex`,children:e.archived?(0,H.jsx)(J,{icon:E,label:`Reopen project`,onClick:()=>k(!1)}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(J,{icon:S,label:`Edit project`,onClick:N}),(0,H.jsx)(J,{icon:O,label:`Archive project`,onClick:()=>k(!0)})]})})]})}),(0,H.jsx)(A,{children:e.archived?(0,H.jsxs)(j,{onSelect:()=>k(!1),children:[(0,H.jsx)(E,{}),` Reopen`]}):(0,H.jsxs)(H.Fragment,{children:[(0,H.jsxs)(j,{onSelect:N,children:[(0,H.jsx)(S,{}),` Edit`]}),(0,H.jsxs)(j,{onSelect:()=>k(!0),children:[(0,H.jsx)(O,{}),` Archive`]})]})})]}),(0,H.jsx)(v,{open:u,onOpenChange:d,children:(0,H.jsxs)(g,{children:[(0,H.jsx)(p,{children:(0,H.jsx)(_,{children:`Edit project`})}),(0,H.jsxs)(`form`,{className:`flex flex-col gap-3`,onSubmit:e=>{e.preventDefault(),P()},children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(b,{htmlFor:`project-name-${e.id}`,children:`Name`}),(0,H.jsx)(x,{id:`project-name-${e.id}`,value:f,onChange:e=>C(e.target.value),autoFocus:!0})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,H.jsx)(b,{htmlFor:`project-abbrev-${e.id}`,children:`Abbreviation`}),(0,H.jsx)(x,{id:`project-abbrev-${e.id}`,maxLength:5,value:w,onChange:e=>T(B(e.target.value)),className:`w-24 uppercase`}),(0,H.jsxs)(`p`,{className:`text-2xs text-fg-muted`,children:[`Up to `,5,` characters — the label on the collapsed sidebar rail.`]})]}),(0,H.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,H.jsx)(b,{className:`text-fg-muted`,children:`Path`}),(0,H.jsx)(`p`,{className:`truncate text-2xs text-fg-muted`,children:t??`…`})]}),(0,H.jsxs)(h,{children:[(0,H.jsx)(m,{type:`button`,variant:`ghost`,onClick:()=>d(!1),children:`Cancel`}),(0,H.jsx)(m,{type:`submit`,disabled:!f.trim()||l.isPending,children:`Save`})]})]})]})})]})}function X({icon:e,label:t,hint:n,onClick:r}){return(0,H.jsxs)(`button`,{type:`button`,onClick:r,className:`group flex flex-col rounded-lg bg-surface p-4 text-left transition-colors hover:bg-elevated`,children:[(0,H.jsxs)(`h2`,{className:`flex items-center gap-2 truncate text-base font-semibold text-fg group-hover:text-accent`,children:[(0,H.jsx)(e,{className:`size-4 shrink-0`}),t]}),(0,H.jsx)(`p`,{className:`mt-1 truncate text-2xs text-fg-muted`,children:n})]})}function Z(){let e=d(),t=o(e??void 0),n=l(),i=a(e??void 0),s=u(e??``),[f,p]=(0,V.useState)(!1),[m,h]=(0,V.useState)(null),[g,_]=(0,V.useState)(!1),v=W(),y=c(`palette.toggle`),b=e=>n.data?.find(t=>t.id===e)?.path,x=t.data??[],S=i.data?.projectOrder??[],w=k(x.filter(e=>!e.archived),S),E=x.filter(e=>e.archived),D=(e,t)=>{e!==t&&s.mutate({projectOrder:T(w.map(e=>e.id),e,t)})};return(0,H.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,H.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-4xl p-6`,children:[x.length===0&&(0,H.jsxs)(`div`,{className:`mb-8 mt-16 flex flex-col items-center gap-3 text-center`,children:[(0,H.jsx)(C,{className:`size-8 text-fg-muted`}),(0,H.jsxs)(`p`,{className:`text-sm text-fg-secondary`,children:[`No projects yet — open one below, or press `,y,`.`]})]}),(0,H.jsxs)(`div`,{className:`grid auto-rows-fr grid-cols-1 gap-3 sm:grid-cols-2`,children:[w.map(e=>(0,H.jsx)(Y,{project:e,repoPath:b(e.repo_id),draggable:!0,dragging:m===e.id,onDragStart:()=>h(e.id),onDragEnd:()=>h(null),onDragOver:t=>{t.preventDefault(),m&&m!==e.id&&D(m,e.id)}},e.id)),(0,H.jsx)(X,{icon:I,label:`Open project`,hint:`Point at a repository on this host`,onClick:()=>p(!0)}),(0,H.jsx)(X,{icon:P,label:v.open?`Close terminal`:`Open terminal`,hint:v.open?`End the shell below`:`A shell at ~ for cloning repositories`,onClick:v.toggle})]}),E.length>0&&(0,H.jsxs)(`div`,{className:`mt-6`,children:[(0,H.jsxs)(`button`,{type:`button`,onClick:()=>_(e=>!e),className:`flex items-center gap-1.5 px-1 py-1.5 text-2xs uppercase tracking-wide text-fg-muted transition-colors hover:text-fg`,children:[(0,H.jsx)(N,{className:r(`size-3 transition-transform`,g&&`rotate-90`)}),(0,H.jsx)(O,{className:`size-3`}),(0,H.jsx)(`span`,{children:`Archived`}),(0,H.jsx)(`span`,{className:`tabular-nums`,children:E.length})]}),g&&(0,H.jsx)(`div`,{className:`mt-2 grid grid-cols-1 gap-3 sm:grid-cols-2`,children:E.map(e=>(0,H.jsx)(Y,{project:e,repoPath:b(e.repo_id),draggable:!1,dragging:!1,onDragStart:()=>{},onDragEnd:()=>{},onDragOver:()=>{}},e.id))})]})]})}),v.open&&(0,H.jsx)(G,{term:v.term,onExit:v.onExit}),e!==null&&(0,H.jsx)(L,{profileId:e,open:f,onOpenChange:p})]})}export{Z as Dashboard};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,n as r,t as i}from"./x-BJOrp_m5.js";import{a,h as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-DjL0qoAv.js";import{l as f,r as p,t as m}from"./buffer-store-B0PeSmyA.js";import{s as h,t as g}from"./editor-sync-D8goZh5D.js";var _=r(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),v=e(t(),1),y=n();function b(e,t,n){let r=m(e,t,n);return(0,v.useSyncExternalStore)((0,v.useCallback)(e=>f(r,e),[r]),()=>p(r))}function x({session:e,path:t,kind:n,root:r}){return b(e,t,r)&&n!==`commit`?(0,y.jsx)(_,{"aria-hidden":!0,className:`size-2 shrink-0 fill-current text-fg-muted group-hover:hidden`}):null}function S({session:e,path:t,kind:n,root:r,label:f,onClose:p}){let m=b(e,t,r)&&n!==`commit`,[_,x]=(0,v.useState)(!1),S=()=>m?x(!0):p();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{onClick:e=>{e.stopPropagation(),S()},className:`hidden size-4 items-center justify-center rounded-sm text-fg-muted transition-colors hover:text-fg group-hover:flex pointer-coarse:flex`,"aria-label":`Close ${f}`,children:(0,y.jsx)(i,{className:`size-3`})}),(0,y.jsx)(d,{open:_,onOpenChange:e=>!e&&x(!1),children:(0,y.jsxs)(c,{children:[(0,y.jsxs)(a,{children:[(0,y.jsxs)(l,{children:[`Discard changes to `,f,`?`]}),(0,y.jsx)(u,{children:`This file has unsaved changes. Closing the tab will discard them.`})]}),(0,y.jsxs)(s,{children:[(0,y.jsx)(o,{variant:`ghost`,onClick:()=>x(!1),children:`Keep editing`}),(0,y.jsx)(o,{variant:`danger`,onClick:()=>{h(e,t,r),g(e,t,r),x(!1),p()},children:`Discard`})]})]})})]})}export{x as EditorDirtyDot,S as EditorTabClose};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,n as r,t as i}from"./x-BJOrp_m5.js";import{a,h as o,i as s,n as c,o as l,r as u,t as d}from"./dialog-DjL0qoAv.js";import{l as f,r as p,t as m}from"./buffer-store-BTxNhwb6.js";import{s as h,t as g}from"./editor-sync-BkL2SFMx.js";var _=r(`circle`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),v=e(t(),1),y=n();function b(e,t,n){let r=m(e,t,n);return(0,v.useSyncExternalStore)((0,v.useCallback)(e=>f(r,e),[r]),()=>p(r))}function x({session:e,path:t,kind:n,root:r}){return b(e,t,r)&&n!==`commit`?(0,y.jsx)(_,{"aria-hidden":!0,className:`size-2 shrink-0 fill-current text-fg-muted group-hover:hidden`}):null}function S({session:e,path:t,kind:n,root:r,label:f,onClose:p}){let m=b(e,t,r)&&n!==`commit`,[_,x]=(0,v.useState)(!1),S=()=>m?x(!0):p();return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(`button`,{onClick:e=>{e.stopPropagation(),S()},className:`hidden size-4 items-center justify-center rounded-sm text-fg-muted transition-colors hover:text-fg group-hover:flex pointer-coarse:flex`,"aria-label":`Close ${f}`,children:(0,y.jsx)(i,{className:`size-3`})}),(0,y.jsx)(d,{open:_,onOpenChange:e=>!e&&x(!1),children:(0,y.jsxs)(c,{children:[(0,y.jsxs)(a,{children:[(0,y.jsxs)(l,{children:[`Discard changes to `,f,`?`]}),(0,y.jsx)(u,{children:`This file has unsaved changes. Closing the tab will discard them.`})]}),(0,y.jsxs)(s,{children:[(0,y.jsx)(o,{variant:`ghost`,onClick:()=>x(!1),children:`Keep editing`}),(0,y.jsx)(o,{variant:`danger`,onClick:()=>{h(e,t,r),g(e,t,r),x(!1),p()},children:`Discard`})]})]})})]})}export{x as EditorDirtyDot,S as EditorTabClose};
@@ -0,0 +1,2 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Terminal-B7UULA8q.js","assets/rolldown-runtime-QTnfLwEv.js","assets/react-CZI7_Jkm.js","assets/x-BJOrp_m5.js","assets/hotkeys-CekBkaTu.js","assets/file-links-B5m-T1pu.js","assets/index-tq6zC_Gs.js","assets/preload-helper-Czpn1I53.js","assets/dialog-DjL0qoAv.js","assets/index-CTI7M7xM.css","assets/use-find-controls-BLr0BXJn.js","assets/chevron-down-59O6CgEo.js","assets/Terminal-BrP-ENHg.css"])))=>i.map(i=>d[i]);
2
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,n as r,o as i,r as a}from"./x-BJOrp_m5.js";import{Ht as o,xt as s}from"./hotkeys-CekBkaTu.js";import{t as c}from"./preload-helper-Czpn1I53.js";import{C as l,D as u,S as d,b as f,k as p}from"./dialog-DjL0qoAv.js";var m=e(t(),1),h=[`top`,`right`,`bottom`,`left`],g=Math.min,_=Math.max,v=Math.round,y=Math.floor,b=e=>({x:e,y:e}),x={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function S(e,t,n){return _(e,g(t,n))}function C(e,t){return typeof e==`function`?e(t):e}function w(e){return e.split(`-`)[0]}function T(e){return e.split(`-`)[1]}function E(e){return e===`x`?`y`:`x`}function D(e){return e===`y`?`height`:`width`}function O(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function k(e){return E(O(e))}function A(e,t,n){n===void 0&&(n=!1);let r=T(e),i=k(e),a=D(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=z(o)),[o,z(o)]}function j(e){let t=z(e);return[M(e),t,M(t)]}function M(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var N=[`left`,`right`],P=[`right`,`left`],F=[`top`,`bottom`],I=[`bottom`,`top`];function L(e,t,n){switch(e){case`top`:case`bottom`:return n?t?P:N:t?N:P;case`left`:case`right`:return t?F:I;default:return[]}}function R(e,t,n,r){let i=T(e),a=L(w(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(M)))),a}function z(e){let t=w(e);return x[t]+e.slice(t.length)}function ee(e){return{top:e.top??0,right:e.right??0,bottom:e.bottom??0,left:e.left??0}}function te(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:ee(e)}function B(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function ne(e,t,n){let{reference:r,floating:i}=e,a=O(t),o=k(t),s=D(o),c=w(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}let m=T(t);return m&&(p[o]+=f*(m===`end`?1:-1)*(n&&l?-1:1)),p}async function re(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=C(t,e),p=te(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=B(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=B(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var ie=50,ae=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:re},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=ne(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<ie&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=ne(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},oe=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=C(e,t)||{};if(l==null)return{};let d=te(u),f={x:n,y:r},p=k(i),m=D(p),h=await o.getDimensions(l),_=p===`y`,v=_?`top`:`left`,y=_?`bottom`:`right`,b=_?`clientHeight`:`clientWidth`,x=a.reference[m]+a.reference[p]-f[p]-a.floating[m],w=f[p]-a.reference[p],E=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),O=E?E[b]:0;(!O||!await(o.isElement==null?void 0:o.isElement(E)))&&(O=s.floating[b]||a.floating[m]);let A=x/2-w/2,j=O/2-h[m]/2-1,M=g(d[v],j),N=g(d[y],j),P=O-h[m]-N,F=O/2-h[m]/2+A,I=S(M,F,P),L=!c.arrow&&T(i)!=null&&F!==I&&a.reference[m]/2-(F<M?M:N)-h[m]/2<0,R=L?F<M?F-M:F-P:0;return{[p]:f[p]+R,data:{[p]:I,centerOffset:F-I-R,...L&&{alignmentOffset:R}},reset:L}}}),se=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=C(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=w(r),_=O(o),v=w(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[z(o)]:j(o)),x=p!==`none`;!d&&x&&b.push(...R(o,m,p,y));let S=[o,...b],T=await s.detectOverflow(t,h),E=[],D=i.flip?.overflows||[];if(l&&E.push(T[g]),u){let e=A(r,a,y);E.push(T[e[0]],T[e[1]])}if(D=[...D,{placement:r,overflows:E}],!E.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==O(t))||D.every(e=>O(e.placement)!==_||e.overflows[0]>0)))return{data:{index:e,overflows:D},reset:{placement:t}};let n=D.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=D.filter(e=>{if(x){let t=O(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function ce(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function le(e){return h.some(t=>e[t]>=0)}var ue=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=C(e,t);switch(i){case`referenceHidden`:{let e=ce(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:le(e)}}}case`escaped`:{let e=ce(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:le(e)}}}default:return{}}}}},de=new Set([`left`,`top`]);async function fe(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=w(n),s=T(n),c=O(n)===`y`,l=de.has(o)?-1:1,u=a&&c?-1:1,d=C(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var pe=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await fe(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},me=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=C(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=O(i),p=E(f),m=u[p],h=u[f],g=(e,t)=>S(t+d[e===`y`?`top`:`left`],t,t-d[e===`y`?`bottom`:`right`]);o&&(m=g(p,m)),s&&(h=g(f,h));let _=c.fn({...t,[p]:m,[f]:h});return{..._,data:{x:_.x-n,y:_.y-r,enabled:{[p]:o,[f]:s}}}}}},he=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=C(e,t),u={x:n,y:r},d=O(i),f=E(d),p=u[f],m=u[d],h=C(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:h.mainAxis??0,crossAxis:h.crossAxis??0};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=de.has(w(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},ge=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){let{placement:n,rects:r,platform:i,elements:a}=t,{apply:o=()=>{},...s}=C(e,t),c=await i.detectOverflow(t,s),l=w(n),u=T(n),d=O(n)===`y`,{width:f,height:p}=r.floating,m,h;l===`top`||l===`bottom`?(m=l,h=u===(await(i.isRTL==null?void 0:i.isRTL(a.floating))?`start`:`end`)?`left`:`right`):(h=l,m=u===`end`?`top`:`bottom`);let v=p-c.top-c.bottom,y=f-c.left-c.right,b=g(p-c[m],v),x=g(f-c[h],y),S=t.middlewareData.shift,E=!S,D=b,k=x;S!=null&&S.enabled.x&&(k=y),S!=null&&S.enabled.y&&(D=v),E&&!u&&(d?k=f-2*_(c.left,c.right):D=p-2*_(c.top,c.bottom)),await o({...t,availableWidth:k,availableHeight:D});let A=await i.getDimensions(a.floating);return f!==A.width||p!==A.height?{reset:{rects:!0}}:{}}}};function _e(){return typeof window<`u`}function V(e){return ve(e)?(e.nodeName||``).toLowerCase():`#document`}function H(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function U(e){return((ve(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function ve(e){return _e()?e instanceof Node||e instanceof H(e).Node:!1}function W(e){return _e()?e instanceof Element||e instanceof H(e).Element:!1}function G(e){return _e()?e instanceof HTMLElement||e instanceof H(e).HTMLElement:!1}function ye(e){return!_e()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof H(e).ShadowRoot}function be(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=J(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function xe(e){return/^(table|td|th)$/.test(V(e))}function Se(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var Ce=/transform|translate|scale|rotate|perspective|filter/,we=/paint|layout|strict|content/,K=e=>!!e&&e!==`none`,Te;function Ee(e){let t=W(e)?J(e):e;return K(t.transform)||K(t.translate)||K(t.scale)||K(t.rotate)||K(t.perspective)||!Oe()&&(K(t.backdropFilter)||K(t.filter))||Ce.test(t.willChange||``)||we.test(t.contain||``)}function De(e){let t=Y(e);for(;G(t)&&!q(t);){if(Ee(t))return t;if(Se(t))return null;t=Y(t)}return null}function Oe(){return Te??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),Te}function q(e){return/^(html|body|#document)$/.test(V(e))}function J(e){return H(e).getComputedStyle(e)}function ke(e){return W(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Y(e){if(V(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||ye(e)&&e.host||U(e);return ye(t)?t.host:t}function Ae(e){let t=Y(e);return q(t)?(e.ownerDocument||e).body:G(t)&&be(t)?t:Ae(t)}function X(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=Ae(e),i=r===e.ownerDocument?.body,a=H(r);if(i){let e=je(a);return t.concat(a,a.visualViewport||[],be(r)?r:[],e&&n?X(e):[])}else return t.concat(r,X(r,[],n))}function je(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Me(e){let t=J(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=G(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=v(n)!==a||v(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Ne(e){return W(e)?e:e.contextElement}function Z(e){let t=Ne(e);if(!G(t))return b(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Me(t),o=(a?v(n.width):n.width)/r,s=(a?v(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var Pe=b(0);function Fe(e){let t=H(e);return!Oe()||!t.visualViewport?Pe:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function Ie(e,t,n){return t===void 0&&(t=!1),!!n&&t&&n===H(e)}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Ne(e),o=b(1);t&&(r?W(r)&&(o=Z(r)):o=Z(e));let s=Ie(a,n,r)?Fe(a):b(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a&&r){let e=H(a),t=W(r)?H(r):r,n=e,i=je(n);for(;i&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=J(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=H(i),i=je(n)}}return B({width:u,height:d,x:c,y:l})}function Le(e,t){let n=ke(e).scrollLeft;return t?t.left+n:Q(U(e)).left+n}function Re(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-Le(e,n),y:n.top+t.scrollTop}}function ze(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=U(r),s=t?Se(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=b(1),u=b(0),d=G(r);if((d||!a)&&((V(r)!==`body`||be(o))&&(c=ke(r)),d)){let e=Q(r);l=Z(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?Re(o,c):b(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function Be(e){return e.getClientRects?Array.from(e.getClientRects()):[]}function Ve(e){let t=ke(e),n=e.ownerDocument.body,r=_(e.scrollWidth,e.clientWidth,n.scrollWidth,n.clientWidth),i=_(e.scrollHeight,e.clientHeight,n.scrollHeight,n.clientHeight),a=-t.scrollLeft+Le(e),o=-t.scrollTop;return J(n).direction===`rtl`&&(a+=_(e.clientWidth,n.clientWidth)-r),{width:r,height:i,x:a,y:o}}var He=25;function Ue(e,t,n){n===void 0&&(n=`viewport`);let r=n===`layoutViewport`,i=H(e),a=U(e),o=i.visualViewport,s=a.clientWidth,c=a.clientHeight,l=0,u=0;if(o){let e=!Oe()||t===`fixed`;r?e||(l=-o.offsetLeft,u=-o.offsetTop):(s=o.width,c=o.height,e&&(l=o.offsetLeft,u=o.offsetTop))}if(Le(a)<=0){let e=a.ownerDocument,t=e.body,n=getComputedStyle(t),r=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,i=Math.abs(a.clientWidth-t.clientWidth-r),o=getComputedStyle(a).scrollbarGutter===`stable both-edges`?i/2:i;o<=He&&(s-=o)}return{width:s,height:c,x:l,y:u}}function We(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Z(e);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function Ge(e,t,n){let r;if(t===`viewport`||t===`layoutViewport`)r=Ue(e,n,t);else if(t===`document`)r=Ve(U(e));else if(W(t))r=We(t,n);else{let n=Fe(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return B(r)}function Ke(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>W(e)&&V(e)!==`body`),i=null,a=J(e).position===`fixed`,o=a?Y(e):e;for(;W(o)&&!q(o);){let e=J(o),t=Ee(o),n=i?i.position:a?`fixed`:``;!t&&(n===`fixed`||n===`absolute`&&e.position===`static`)?r=r.filter(e=>e!==o):i=e,o=Y(o)}return t.set(e,r),r}function qe(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Se(t)?[]:Ke(t,this._c):[].concat(n),r],o=Ge(t,a[0],i),s=o.top,c=o.right,l=o.bottom,u=o.left;for(let e=1;e<a.length;e++){let n=Ge(t,a[e],i);s=_(n.top,s),c=g(n.right,c),l=g(n.bottom,l),u=_(n.left,u)}return{width:c-u,height:l-s,x:u,y:s}}function Je(e){let{width:t,height:n}=Me(e);return{width:t,height:n}}function Ye(e,t,n){let r=G(t),i=U(t),a=n===`fixed`,o=Q(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=b(0);if((r||!a)&&((V(t)!==`body`||be(i))&&(s=ke(t)),r)){let e=Q(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}!r&&i&&(c.x=Le(i));let l=i&&!r&&!a?Re(i,s):b(0);return{x:o.left+s.scrollLeft-c.x-l.x,y:o.top+s.scrollTop-c.y-l.y,width:o.width,height:o.height}}function Xe(e){return J(e).position===`static`}function Ze(e,t){if(!G(e)||J(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return U(e)===n&&(n=n.ownerDocument.body),n}function Qe(e,t){let n=H(e);if(Se(e))return n;if(!G(e)){let t=Y(e);for(;t&&!q(t);){if(W(t)&&!Xe(t))return t;t=Y(t)}return n}let r=Ze(e,t);for(;r&&xe(r)&&Xe(r);)r=Ze(r,t);return r&&q(r)&&Xe(r)&&!Ee(r)?n:r||De(e)||n}var $e=async function(e){let t=this.getOffsetParent||Qe,n=this.getDimensions,r=await n(e.floating);return{reference:Ye(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function et(e){return J(e).direction===`rtl`}var tt={convertOffsetParentRelativeRectToViewportRelativeRect:ze,getDocumentElement:U,getClippingRect:qe,getOffsetParent:Qe,getElementRects:$e,getClientRects:Be,getDimensions:Je,getScale:Z,isElement:W,isRTL:et};function nt(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function rt(e,t,n){let r=null,i,a=U(e);function o(){var e;clearTimeout(i),(e=r)==null||e.disconnect(),r=null}function s(n,c){n===void 0&&(n=!1),c===void 0&&(c=1),o();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(n||t(),!f||!p)return;let m=y(d),h=y(a.clientWidth-(u+f)),v=y(a.clientHeight-(d+p)),b=y(u),x={rootMargin:-m+`px `+-h+`px `+-v+`px `+-b+`px`,threshold:_(0,g(1,c))||1},S=!0;function C(t){let n=t[0].intersectionRatio;if(!nt(l,e.getBoundingClientRect()))return s();if(n!==c){if(!S)return s();n?s(!1,n):i=setTimeout(()=>{s(!1,1e-7)},1e3)}S=!1}try{r=new IntersectionObserver(C,{...x,root:a.ownerDocument})}catch{r=new IntersectionObserver(C,x)}r.observe(e)}let c=H(e),l=()=>s(n);return c.addEventListener(`resize`,l),s(!0),()=>{c.removeEventListener(`resize`,l),o()}}function it(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Ne(e),u=i||a?[...l?X(l):[],...t?X(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n),a&&e.addEventListener(`resize`,n)});let d=l&&s?rt(l,n,a):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!nt(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var at=pe,ot=me,st=se,ct=ge,lt=ue,ut=oe,dt=he,ft=(e,t,n)=>{let r=new Map,i=n??{},a={...tt,...i.platform,_c:r};return ae(e,t,{...i,platform:a})},pt=e(i(),1),mt=typeof document<`u`?m.useLayoutEffect:function(){};function ht(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!ht(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!ht(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function gt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function _t(e,t){let n=gt(e);return Math.round(t*n)/n}function vt(e){let t=m.useRef(e);return mt(()=>{t.current=e}),t}function yt(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=m.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=m.useState(r);ht(f,r)||p(r);let[h,g]=m.useState(null),[_,v]=m.useState(null),y=m.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=m.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=m.useRef(null),w=m.useRef(null),T=m.useRef(u),E=c!=null,D=vt(c),O=vt(i),k=vt(l),A=m.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:f};O.current&&(e.platform=O.current),ft(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};j.current&&!ht(T.current,t)&&(T.current=t,pt.flushSync(()=>{d(t)}))})},[f,t,n,O,k]);mt(()=>{l===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let j=m.useRef(!1);mt(()=>(j.current=!0,()=>{j.current=!1}),[]),mt(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,A);A()}},[x,S,A,D,E]);let M=m.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),N=m.useMemo(()=>({reference:x,floating:S}),[x,S]),P=m.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=_t(N.floating,u.x),r=_t(N.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...gt(N.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,N.floating,u.x,u.y]);return m.useMemo(()=>({...u,update:A,refs:M,elements:N,floatingStyles:P}),[u,A,M,N,P])}var bt=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:ut({element:r.current,padding:i}).fn(n):r?ut({element:r,padding:i}).fn(n):{}}}},xt=(e,t)=>{let n=at(e);return{name:n.name,fn:n.fn,options:[e,t]}},St=(e,t)=>{let n=ot(e);return{name:n.name,fn:n.fn,options:[e,t]}},Ct=(e,t)=>({fn:dt(e).fn,options:[e,t]}),wt=(e,t)=>{let n=st(e);return{name:n.name,fn:n.fn,options:[e,t]}},Tt=(e,t)=>{let n=ct(e);return{name:n.name,fn:n.fn,options:[e,t]}},Et=(e,t)=>{let n=lt(e);return{name:n.name,fn:n.fn,options:[e,t]}},Dt=(e,t)=>{let n=bt(e);return{name:n.name,fn:n.fn,options:[e,t]}},$=n(),Ot=`Arrow`,kt=m.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,$.jsx)(l.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,$.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});kt.displayName=Ot;var At=kt;function jt(e){let[t,n]=m.useState(void 0);return f(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var Mt=`Popper`,[Nt,Pt]=u(Mt),[Ft,It]=Nt(Mt),Lt=e=>{let{__scopePopper:t,children:n}=e,[r,i]=m.useState(null),[a,o]=m.useState(void 0);return(0,$.jsx)(Ft,{scope:t,anchor:r,onAnchorChange:i,placementState:a,setPlacementState:o,children:n})};Lt.displayName=Mt;var Rt=`PopperAnchor`,zt=m.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=It(Rt,n),o=m.useRef(null),s=a.onAnchorChange,c=p(t,m.useCallback(e=>{o.current=e,e&&s(e)},[s])),u=m.useRef(null);m.useEffect(()=>{if(!r)return;let e=u.current;u.current=r.current,e!==u.current&&s(u.current)});let d=a.placementState&&Yt(a.placementState),f=d?.[0],h=d?.[1];return r?null:(0,$.jsx)(l.div,{"data-radix-popper-side":f,"data-radix-popper-align":h,...i,ref:c})});zt.displayName=Rt;var Bt=`PopperContent`,[Vt,Ht]=Nt(Bt),Ut=m.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:s=0,avoidCollisions:c=!0,collisionBoundary:u=[],collisionPadding:h=0,sticky:g=`partial`,hideWhenDetached:_=!1,updatePositionStrategy:v=`optimized`,onPlaced:y,...b}=e,x=It(Bt,n),[S,C]=m.useState(null),w=p(t,C),[T,E]=m.useState(null),D=jt(T),O=D?.width??0,k=D?.height??0,A=r+(a===`center`?``:`-`+a),j=typeof h==`number`?h:{top:0,right:0,bottom:0,left:0,...h},M=Array.isArray(u)?u:[u],N=M.length>0,P={padding:j,boundary:M.filter(qt),altBoundary:N},{refs:F,floatingStyles:I,placement:L,isPositioned:R,middlewareData:z}=yt({strategy:`fixed`,placement:A,whileElementsMounted:(...e)=>it(...e,{animationFrame:v===`always`}),elements:{reference:x.anchor},middleware:[xt({mainAxis:i+k,alignmentAxis:o}),c&&St({mainAxis:!0,crossAxis:!1,limiter:g===`partial`?Ct():void 0,...P}),c&&wt({...P}),Tt({...P,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),T&&Dt({element:T,padding:s}),Jt({arrowWidth:O,arrowHeight:k}),_&&Et({strategy:`referenceHidden`,...P,boundary:N?P.boundary:void 0})]}),ee=x.setPlacementState;f(()=>(ee(L),()=>{ee(void 0)}),[L,ee]);let[te,B]=Yt(L),ne=d(y);f(()=>{R&&ne?.()},[R,ne]);let re=z.arrow?.x,ie=z.arrow?.y,ae=z.arrow?.centerOffset!==0,[oe,se]=m.useState();return f(()=>{S&&se(window.getComputedStyle(S).zIndex)},[S]),(0,$.jsx)(`div`,{ref:F.setFloating,"data-radix-popper-content-wrapper":``,style:{...I,transform:R?I.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:oe,"--radix-popper-transform-origin":[z.transformOrigin?.x,z.transformOrigin?.y].join(` `),...z.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,$.jsx)(Vt,{scope:n,placedSide:te,placedAlign:B,onArrowChange:E,arrowX:re,arrowY:ie,shouldHideArrow:ae,children:(0,$.jsx)(l.div,{"data-side":te,"data-align":B,...b,ref:w,style:{...b.style,animation:R?void 0:`none`}})})})});Ut.displayName=Bt;var Wt=`PopperArrow`,Gt={top:`bottom`,right:`left`,bottom:`top`,left:`right`},Kt=m.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=Ht(Wt,n),a=Gt[i.placedSide];return(0,$.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,$.jsx)(At,{...r,ref:t,style:{...r.style,display:`block`}})})});Kt.displayName=Wt;function qt(e){return e!==null}var Jt=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=Yt(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function Yt(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var Xt=Lt,Zt=zt,Qt=Ut,$t=Kt,en=`rounded-md bg-border/50 text-sm text-fg placeholder:text-fg-muted transition-colors hover:bg-border/80 focus:bg-border/80 disabled:cursor-not-allowed disabled:opacity-50`,tn=`relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg outline-none transition-colors`,nn=`data-[highlighted]:bg-action data-[highlighted]:text-action-ink data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,rn=`data-[selected=true]:bg-action data-[selected=true]:text-action-ink data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`;function an({className:e,type:t,...n}){return(0,$.jsx)(`input`,{type:t,className:a(`flex h-8 w-full px-2.5`,en,e),...n})}function on({className:e,...t}){return(0,$.jsx)(`textarea`,{className:a(`flex min-h-16 w-full px-2.5 py-2`,en,e),...t})}var sn=`Label`,cn=m.forwardRef((e,t)=>(0,$.jsx)(l.label,{...e,ref:t,onMouseDown:t=>{t.target.closest(`button, input, select, textarea`)||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));cn.displayName=sn;var ln=cn;function un({className:e,...t}){return(0,$.jsx)(ln,{className:a(`text-xs font-medium text-fg-secondary peer-disabled:cursor-not-allowed peer-disabled:opacity-50`,e),...t})}var dn=r(`folder-git-2`,[[`path`,{d:`M18 19a5 5 0 0 1-5-5v8`,key:`sz5oeg`}],[`path`,{d:`M9 20H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H20a2 2 0 0 1 2 2v5`,key:`1w6njk`}],[`circle`,{cx:`13`,cy:`12`,r:`2`,key:`1j92g6`}],[`circle`,{cx:`20`,cy:`19`,r:`2`,key:`1obnsp`}]]),fn=r(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]);function pn(e){o.error(hn(e),{id:`err:${hn(e)}`})}function mn(e){if(!(e instanceof s)||e.code!==`conversation_live`)return null;let t=e.details?.existing_session_id,n=e.details?.existing_project_id;return typeof t==`string`&&typeof n==`string`?{sessionId:t,projectId:n}:null}function hn(e){return e instanceof Error&&e.message.trim()!==``?e.message:typeof e==`string`&&e.trim()!==``?e:`Something went wrong`}function gn({id:e,value:t,onValueChange:n,onChoose:r,hints:i,placeholder:o,className:s,hintsClassName:c,autoFocus:l}){let[u,d]=(0,m.useState)(!1),[f,p]=(0,m.useState)(0),h=e=>{n(e.value),r?.(e),d(!1)};return(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(an,{id:e,value:t,onChange:e=>{n(e.target.value),d(!0),p(0)},onFocus:()=>d(!0),onBlur:()=>d(!1),onKeyDown:e=>{if(!(!u||i.length===0))if(e.key===`ArrowDown`)e.preventDefault(),p(e=>(e+1)%i.length);else if(e.key===`ArrowUp`)e.preventDefault(),p(e=>(e-1+i.length)%i.length);else if(e.key===`Enter`||e.key===`Tab`){let t=i[f]??i[0];t&&(e.preventDefault(),h(t))}else e.key===`Escape`&&(e.stopPropagation(),d(!1))},placeholder:o,className:s,autoComplete:`off`,spellCheck:!1,autoFocus:l}),u&&i.length>0&&(0,$.jsx)(`ul`,{className:a(`absolute top-full z-10 mt-1 max-h-56 overflow-y-auto rounded-md bg-elevated p-1 shadow-xl`,c??`w-full`),children:i.map((e,t)=>(0,$.jsx)(`li`,{children:(0,$.jsxs)(`button`,{type:`button`,onMouseDown:t=>{t.preventDefault(),h(e)},onMouseEnter:()=>p(t),className:a(`relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-fg outline-none transition-colors`,`data-[selected=true]:bg-action data-[selected=true]:text-action-ink data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50`,`w-full text-xs`),"data-selected":t===f,children:[(0,$.jsx)(`span`,{className:`truncate`,children:e.label??e.value}),e.badge&&(0,$.jsx)(`span`,{className:`ml-auto shrink-0 text-2xs opacity-70`,children:e.badge})]})},e.value))})]})}var _n=(0,m.lazy)(()=>c(()=>import(`./Terminal-B7UULA8q.js`).then(e=>({default:e.Terminal})),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))),vn=null;async function yn(){vn=(await c(()=>import(`./Terminal-B7UULA8q.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12]))).Terminal}function bn(e){return vn?(0,$.jsx)(vn,{...e}):(0,$.jsx)(m.Suspense,{fallback:(0,$.jsx)(`div`,{className:`size-full bg-ground`}),children:(0,$.jsx)(_n,{...e})})}export{Qt as _,pn as a,jt as b,un as c,en as d,rn as f,$t as g,Zt as h,mn as i,an as l,tn as m,yn as n,fn as o,nn as p,gn as r,dn as s,bn as t,on as u,Xt as v,Pt as y};
@@ -1 +1 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,s as r,t as i}from"./buffer-store-B0PeSmyA.js";var a=e(t(),1);function o({buffers:e}){let t=(0,a.useRef)(new Set);return(0,a.useEffect)(()=>{let a=new Set(e.map(e=>i(e.session,e.path,e.root))),o=t.current;for(let e of a)o.has(e)||(r(e),o.add(e));for(let e of[...o])a.has(e)||(n(e),o.delete(e))},[e]),(0,a.useEffect)(()=>()=>{for(let e of t.current)n(e);t.current.clear()},[]),null}export{o as ModelRefcount};
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,s as r,t as i}from"./buffer-store-BTxNhwb6.js";var a=e(t(),1);function o({buffers:e}){let t=(0,a.useRef)(new Set);return(0,a.useEffect)(()=>{let a=new Set(e.map(e=>i(e.session,e.path,e.root))),o=t.current;for(let e of a)o.has(e)||(r(e),o.add(e));for(let e of[...o])a.has(e)||(n(e),o.delete(e))},[e]),(0,a.useEffect)(()=>()=>{for(let e of t.current)n(e);t.current.clear()},[]),null}export{o as ModelRefcount};
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n}from"./x-BJOrp_m5.js";import{Kt as r,L as i,St as a,Vt as o,bt as s,c,p as l,v as u}from"./hotkeys-BApA7bsN.js";import{A as d,B as f,D as p,F as m,M as h,N as g,O as _,P as v,S as y,a as b,d as x,f as S,g as ee,m as te,n as ne,o as re,p as ie,v as ae,w as oe}from"./editor-context-BZHPtUDq.js";import{t as se}from"./preload-helper-Czpn1I53.js";import{a as ce,n as le,r as ue,t as de}from"./use-find-controls-DHY2DUR7.js";import{F as fe,I as C,J as pe,N as me,P as he,X as ge,Y as _e,a as ve,mt as ye}from"./index-PreRneCj.js";import{c as be,i as xe,p as w,r as Se}from"./editor.api2-4X9Vh9Zw.js";import{a as Ce,c as we,d as T,f as Te,i as Ee,l as De,n as Oe,o as ke,r as Ae,s as je,t as Me,u as Ne}from"./buffer-store-B0PeSmyA.js";import{a as Pe,c as Fe,i as Ie,l as Le,n as Re,o as ze,r as Be,s as Ve}from"./editor-sync-D8goZh5D.js";import{r as He}from"./buffer-logic-CqYsttLM.js";var E=e(t(),1),Ue=new Map,We=new Map,Ge=1;function Ke(e){for(let t of We.get(e)??[])t()}function qe(e,t){Ue.set(e,t),Ke(e)}function Je(e){let t={phase:`unresolved`,revision:Ge++};return qe(e,t),t}function Ye(e){let t=Ue.get(e);return!t||t.phase!==`unresolved`&&t.phase!==`load-error`?null:(qe(e,{phase:`loading`,revision:t.revision}),t.revision)}function Xe(e,t,n,r){let i=Ue.get(e);return!i||i.phase!==`loading`||i.revision!==t?!1:(qe(e,{phase:`opening`,revision:t,content:n,mtimeMs:r}),!0)}function Ze(e,t){let n=Ue.get(e);return!n||n.phase!==`opening`||n.revision!==t?!1:(qe(e,{...n,phase:`comparing`}),!0)}function Qe(e,t,n){let r=Ue.get(e);return!r||r.phase!==`loading`||r.revision!==t?!1:(qe(e,{phase:`load-error`,revision:t,message:n}),!0)}function $e(e,t){return t&&e?.phase===`unresolved`}function et(e){return e?.phase===`comparing`?e.mtimeMs:void 0}function tt(e){return e?.phase===`loading`||e?.phase===`load-error`||e?.phase===`opening`}function nt(e){return e.phase===`opening`||e.phase===`comparing`}function rt(e){Ue.delete(e)&&Ke(e)}function it(e){return Ue.get(e)??null}function at(e,t){let n=We.get(e);return n||(n=new Set,We.set(e,n)),n.add(t),()=>n.delete(t)}function ot(e){return{tabSize:e,insertSpaces:!0,detectIndentation:!1}}var D=n();function st({session:e,path:t,conflict:n,model:r,onTakeDisk:i,onKeepMine:a,onSave:o,onReady:s}){let c=ge(),l=(0,E.useId)(),u=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),d=(0,E.useRef)(o);d.current=o;let f=(0,E.useRef)(null),p=()=>{let e=f.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),f.current=null},m=(0,E.useRef)(p);return m.current=p,(0,E.useEffect)(()=>()=>m.current(),[]),(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3 bg-elevated px-3 py-1.5 text-xs text-fg-secondary`,children:[(0,D.jsx)(`span`,{children:`This file changed on disk. Yours is on the right — merge what you want, then save.`}),(0,D.jsx)(`button`,{type:`button`,onClick:i,className:`ml-auto shrink-0 text-fg-muted transition-colors hover:text-fg`,children:`Take the disk version`}),(0,D.jsx)(`button`,{type:`button`,onClick:a,disabled:n.phase!==`comparing`,className:`shrink-0 text-fg-muted transition-colors hover:text-fg`,children:`Keep mine`})]}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(Te,{modifiedModelPath:r.uri.toString(),originalModelPath:`puddle-disk://${encodeURIComponent(e)}/${n.mtimeMs}/${encodeURIComponent(l)}/${t.split(`/`).map(encodeURIComponent).join(`/`)}`,original:n.content,language:r.getLanguageId(),theme:Ne,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),onMount:e=>{f.current=e,e.onDidDispose(()=>{f.current=null}),e.getModifiedEditor().addCommand(xe.CtrlCmd|Se.KeyS,()=>d.current()),s?.(n.revision)},options:{readOnly:n.phase!==`comparing`,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:u,fontSize:c.editorFontSize,...ot(c.editorTabSize),wordWrap:c.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})})]})}function ct({session:e,path:t,buffer:n,focused:r}){let i=n.conflict;return!i||i.phase===`unresolved`?null:nt(i)&&n.model?(0,D.jsx)(st,{session:e,path:t,conflict:i,model:n.model,onTakeDisk:n.takeDisk,onKeepMine:n.keepMine,onSave:n.save,onReady:r?n.comparisonReady:void 0}):i.phase===`load-error`?(0,D.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 bg-ground px-4 text-center text-sm text-fg-muted`,children:[(0,D.jsx)(`span`,{children:`The disk version could not be loaded.`}),(0,D.jsx)(`span`,{className:`max-w-lg text-xs text-fg-secondary`,children:i.message}),(0,D.jsx)(`button`,{type:`button`,onClick:n.compare,className:`rounded-md bg-elevated px-3 py-1.5 text-xs text-fg-secondary transition-colors hover:bg-border hover:text-fg`,children:`Retry compare`})]}):(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center bg-ground text-sm text-fg-muted`,children:`Loading the disk version…`})}function lt(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function ut(e,t,n){return lt(e/Math.max(1,t-n))}function dt(e,t,n){return lt(e)*Math.max(0,t-n)}function O(e,t){return JSON.stringify([e,t.session,t.root??null,t.path])}var ft=new class{positions=new Map;listeners=new Map;revision=0;publish(e,t,n){let r={ratio:lt(n),revision:++this.revision},i=O(e,t);this.positions.set(i,r);for(let e of this.listeners.get(i)??[])e(r);return r}get(e,t){return this.positions.get(O(e,t))}subscribe(e,t,n){let r=O(e,t),i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n);let a=this.positions.get(r);return a&&n(a),()=>{i?.delete(n),i?.size===0&&this.listeners.delete(r)}}};function pt(e){let t=null;return{schedule:()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,e()}))},dispose:()=>{t!==null&&cancelAnimationFrame(t),t=null}}}function mt(e,t){if(t.driver&&t.receiver)throw Error(`a preview scroll surface cannot be both driver and receiver`);let n=t.store??ft,r,i=()=>void 0,a,o=t=>{r=t,e.scrollTop=dt(t.ratio,e.scrollHeight,e.clientHeight)};t.receiver?i=n.subscribe(t.channel,t.target,o):t.driver&&(a=pt(()=>{n.publish(t.channel,t.target,ut(e.scrollTop,e.scrollHeight,e.clientHeight))}),e.addEventListener(`scroll`,a.schedule,{passive:!0}),a.schedule());let s=new ResizeObserver(()=>{t.receiver&&r?o(r):t.driver&&a?.schedule()});for(let e of t.resizeElements??[])s.observe(e);return()=>{t.driver&&a&&e.removeEventListener(`scroll`,a.schedule),i(),s.disconnect(),a?.dispose()}}function ht(e,t,n){if(t.driver&&t.receiver)throw Error(`a Monaco scroll surface cannot be both driver and receiver`);let r=t.store??ft,i=[],a,o=()=>void 0,s,c=()=>e.getLayoutInfo().height,l=t=>{a=t,e.setScrollTop(dt(t.ratio,e.getScrollHeight(),c()),n)};return t.receiver?(o=r.subscribe(t.channel,t.target,l),i.push(e.onDidChangeModel(()=>a&&l(a))),i.push(e.onDidLayoutChange(()=>a&&l(a)))):t.driver&&(s=pt(()=>{r.publish(t.channel,t.target,ut(e.getScrollTop(),e.getScrollHeight(),c()))}),i.push(e.onDidScrollChange(s.schedule)),i.push(e.onDidChangeModel(s.schedule)),i.push(e.onDidLayoutChange(s.schedule)),s.schedule()),()=>{o();for(let e of i)e.dispose();s?.dispose()}}function gt(e){return!e}function _t(e){let t=e.split(`+`),n=t.pop()??``,r=0;for(let e of t)e===`meta`?r|=xe.CtrlCmd:e===`ctrl`?r|=xe.WinCtrl:e===`alt`?r|=xe.Alt:e===`shift`&&(r|=xe.Shift);let i=Se[/^Key[A-Z]$/.test(n)?`Key${n.slice(3)}`:/^Digit[0-9]$/.test(n)?`Digit${n.slice(5)}`:n];return typeof i==`number`?r|i:null}function vt(e,t){let n=_t(c(`editor.save`));n!==null&&e.addCommand(n,()=>t.onSave());let r=_t(c(`editor.wordWrap`));e.addAction({id:`puddle.toggleWordWrap`,label:`Toggle Word Wrap`,keybindings:r===null?[]:[r],run:()=>_e({editorWordWrap:gt(pe().editorWordWrap)})})}function yt(e){return`file-conflict:${e}`}function bt(e,t,n,r,i){let a=i?.passive===!0,c=i?.focused??!0,l=Me(e,t,r),u=m(e,t,{root:r,live:i?.live}),d=g(e,r),[f,p]=(0,E.useState)(null),[h,_]=(0,E.useState)(!1),v=(0,E.useRef)(!1),y=(0,E.useRef)(null),b=(0,E.useRef)(null),x=(0,E.useRef)(n);x.current=n;let S=(0,E.useRef)(!1),te=(0,E.useCallback)((e,t)=>{b.current?.cancel(),S.current=!0;try{ke(l,e,t)}finally{S.current=!1}},[l]),ne=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>De(l,e),[l]),()=>Ae(l)),re=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>ze(l,e),[l]),()=>Pe(l)),ie=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>at(l,e),[l]),()=>it(l));(0,E.useEffect)(()=>{let n=u.data;if(!n||n.binary||n.content===null||v.current)return;v.current=!0;let i=we(l)!==void 0,a=Oe(e,t,n.content,n.mtime_ms,r);p(a),!i&&Le(e,t,r).then(e=>{e&&(e.base_mtime_ms===n.mtime_ms?He(a,e.content)&&_(!0):o(`This file has an unsaved draft from an earlier version.`,{description:`The file changed on disk since the draft was saved.`,duration:12e3,action:{label:`Restore draft`,onClick:()=>{He(a,e.content)&&_(!0)}}}))})},[u.data,l,e,t,r]),(0,E.useEffect)(()=>{if(!f||a)return;let n=Fe(e,t,r);b.current=n;let i=f.onDidChangeContent(()=>{S.current||(n(f.getValue(),we(l)??0),Re(e,t,r))});return()=>{n.flush(),i.dispose(),b.current=null}},[f,l,e,t,r,a]),(0,E.useEffect)(()=>{!f||!re.savedElsewhere||Ae(l)||u.refetch().then(e=>{Ae(l)||(e.data&&e.data.content!==null&&te(e.data.content,e.data.mtime_ms),Ie(l))})},[re.savedElsewhere,f,l]),(0,E.useEffect)(()=>{let e=u.data;!f||!e||e.content===null||!Ae(l)&&e.mtime_ms!==we(l)&&te(e.content,e.mtime_ms)},[u.data,f,l]);let oe=(0,E.useCallback)((n,i)=>{Ee(l,n,i),b.current?.cancel(),Ve(e,t,r),Be(e,t,i,r),_(!1),rt(l)},[l,e,t,r]),se=(0,E.useCallback)(()=>{let e=Ye(l);e!==null&&(o.dismiss(yt(l)),u.refetch({throwOnError:!0}).then(t=>{let n=t.data;if(!n)throw Error(`The disk version did not load.`);if(n.content===null)throw Error(`The file on disk is binary and cannot be compared as text.`);Xe(l,e,n.content,n.mtime_ms)}).catch(t=>{Qe(l,e,t instanceof Error?t.message:`The disk version did not load.`)}))},[u,l]),ce=(0,E.useRef)(se);ce.current=se,(0,E.useEffect)(()=>{if(!$e(ie,c))return;let e=yt(l);return o(`File changed on disk`,{id:e,description:`Nothing was written — your unsaved version is intact.`,duration:1/0,closeButton:!0,action:{label:`Compare`,onClick:()=>ce.current()}}),()=>{o.dismiss(e)}},[ie,c,l]);let le=(0,E.useCallback)(()=>{u.refetch().then(n=>{n.data&&n.data.content!==null&&te(n.data.content,n.data.mtime_ms),Ve(e,t,r),_(!1),rt(l)})},[l,e,t,te]),ue=(0,E.useCallback)((e,n)=>{d.mutate({path:t,content:e},{onSuccess:e=>oe(n,e.mtime_ms),onError:e=>o.error(e instanceof Error?e.message:`Overwrite failed`)})},[d,t,oe]),de=(0,E.useCallback)(()=>{if(!f||!Ae(l))return;let e=f.getValue(),n=f.getAlternativeVersionId();if(tt(it(l)))return;let r=et(it(l))??we(l);d.mutate({path:t,content:e,expected_mtime_ms:r},{onSuccess:e=>oe(n,e.mtime_ms),onError:e=>{e instanceof s&&e.status===409&&e.code===`stale_file`?Je(l):o.error(e instanceof Error?e.message:`Save failed`)}})},[f,l,d,t,oe]),fe=(0,E.useRef)(de);fe.current=de,(0,E.useEffect)(()=>ee(ae(e,t,r),()=>fe.current()),[e,t,r]);let C=(0,E.useCallback)(()=>{let n=y.current,i=x.current;r===void 0&&(!n||!i||i.session!==e||i.path!==t||(n.revealLineInCenter(i.line),n.setPosition({lineNumber:i.line,column:i.column??1}),n.focus()))},[e,t,r]),pe=(0,E.useCallback)(e=>{y.current=e,vt(e,{onSave:()=>fe.current()}),C()},[C]);(0,E.useEffect)(()=>{C()},[n,f,C]);let me=(0,E.useCallback)(()=>{le()},[le]),he=(0,E.useCallback)(()=>{!f||it(l)?.phase!==`comparing`||ue(f.getValue(),f.getAlternativeVersionId())},[f,l,ue]),ge=(0,E.useCallback)(e=>{Ze(l,e)},[l]),_e,ve=null;u.data?.binary?_e=`binary`:u.error?u.error instanceof s&&u.error.status===413?_e=`too-large`:(_e=`error`,ve=u.error instanceof Error?u.error.message:`Failed to load file`):_e=f?`ready`:`loading`;let ye=ne&&re.savedElsewhere?`saved-elsewhere`:ne&&re.dirtyElsewhere?`dirty-elsewhere`:null;return{status:_e,errorMessage:ve,model:f,dirty:ne,restoredNotice:h,discardRestore:me,peerBadge:ye,conflict:ie,takeDisk:le,keepMine:he,compare:se,comparisonReady:ge,save:de,onMount:pe}}function xt(e,t,n,r){for(let i of e)if(Et([i],n).some(e=>(r===void 0||e.kind===r)&&t>=e.startLineNumber&&t<=e.endLineNumber))return i;return null}function St(e,t){return wt(e.modifiedStartLineNumber,e.modifiedEndLineNumber)>0?Math.min(t,e.modifiedEndLineNumber):Math.max(0,Math.min(t,e.modifiedStartLineNumber-1))}function Ct(e){let t=wt(e.originalStartLineNumber,e.originalEndLineNumber),n=wt(e.modifiedStartLineNumber,e.modifiedEndLineNumber);return Math.max(5,Math.min(14,t+n+4))}function wt(e,t){return t===0?0:Math.max(0,t-e+1)}function Tt(e,t){if(e>t)return{startLineNumber:Math.max(1,t),endLineNumber:Math.max(1,t),kind:`deleted-after`};let n=Math.max(1,e);return{startLineNumber:n,endLineNumber:n,kind:`deleted-before`}}function Et(e,t){let n=[];for(let r of e){let e=wt(r.originalStartLineNumber,r.originalEndLineNumber),i=wt(r.modifiedStartLineNumber,r.modifiedEndLineNumber);if(e===0&&i>0){n.push({startLineNumber:r.modifiedStartLineNumber,endLineNumber:r.modifiedEndLineNumber,kind:`added`});continue}if(i===0&&e>0){n.push(Tt(r.modifiedStartLineNumber,t));continue}let a=Math.min(e,i);a>0&&n.push({startLineNumber:r.modifiedStartLineNumber,endLineNumber:r.modifiedStartLineNumber+a-1,kind:`modified`}),i>a&&n.push({startLineNumber:r.modifiedStartLineNumber+a,endLineNumber:r.modifiedEndLineNumber,kind:`added`}),e>a&&n.push(Tt(r.modifiedStartLineNumber+i,t))}return n}var Dt=28,Ot=[[`puddle-dirty-added`,`added`],[`puddle-dirty-modified`,`modified`],[`puddle-dirty-deleted-before`,`deleted-before`],[`puddle-dirty-deleted-after`,`deleted-after`]];function kt(e){if(e){for(let[t,n]of Ot)if(e.classList.contains(t)||e.closest(`.${t}`))return n}}function At({editor:e,original:t,modified:n,path:r}){let i=[],a=null,o=!1,s=t=>{try{e.changeViewZones(e=>e.removeZone(t))}catch{}},c=()=>{let e=a;e&&(a=null,e.frame!==null&&cancelAnimationFrame(e.frame),e.diffEditor&&(e.diffEditor.setModel(null),e.diffEditor.dispose()),s(e.zoneId))},l=e=>{let t=e.diffEditor;if(!t)return;let r=Math.max(1,Math.min(n.getLineCount(),e.change.modifiedStartLineNumber));t.getModifiedEditor().revealLineInCenter(r,w.ScrollType.Immediate)},u=(i,s)=>{if(a?.anchorLine===i){c();return}c();let u=e.getOption(w.EditorOption.lineHeight),d=document.createElement(`div`);d.className=`puddle-dirty-peek`;let f=document.createElement(`div`);f.className=`puddle-dirty-peek-header`;let p=document.createElement(`span`);p.className=`puddle-dirty-peek-title`,p.textContent=`${r.split(`/`).pop()??r} · Local changes against HEAD`;let m=document.createElement(`button`);m.type=`button`,m.className=`puddle-dirty-peek-close`,m.setAttribute(`aria-label`,`Close inline change`),m.title=`Close inline change`,m.textContent=`×`,m.addEventListener(`pointerdown`,e=>{e.preventDefault(),e.stopPropagation(),c()}),m.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),c()});let h=document.createElement(`div`);h.className=`puddle-dirty-peek-editor`,f.append(p,m),d.append(f,h);let g=document.createElement(`div`);g.className=`puddle-dirty-peek-margin`;let _={afterLineNumber:St(s,n.getLineCount()),heightInPx:Dt+Ct(s)*u,domNode:d,marginDomNode:g,suppressMouseDown:!1},v=``;e.changeViewZones(e=>{v=e.addZone(_)});let y={anchorLine:i,change:s,zone:_,zoneId:v,frame:null,diffEditor:null};a=y,y.frame=requestAnimationFrame(()=>{if(y.frame=null,o||a!==y)return;let r=w.createDiffEditor(h,{readOnly:!0,domReadOnly:!0,originalEditable:!1,renderSideBySide:!1,renderMarginRevertIcon:!1,renderOverviewRuler:!1,enableSplitViewResizing:!1,isInEmbeddedEditor:!0,automaticLayout:!0,fontFamily:e.getOption(w.EditorOption.fontFamily),fontSize:e.getOption(w.EditorOption.fontSize),lineHeight:u,minimap:{enabled:!1},glyphMargin:!1,folding:!1,scrollBeyondLastLine:!1,fixedOverflowWidgets:!0,hideUnchangedRegions:{enabled:!0,minimumLineCount:0,contextLineCount:2,revealLineCount:3}});y.diffEditor=r,r.setModel({original:t,modified:n}),r.onDidUpdateDiff(()=>l(y)),l(y)}),e.revealLineInCenter(Math.max(1,Math.min(n.getLineCount(),s.modifiedStartLineNumber)))},d=e.onMouseDown(e=>{if(!e.event.leftButton||e.target.type!==w.MouseTargetType.GUTTER_LINE_DECORATIONS||e.target.position===null)return;let t=e.target.position.lineNumber,r=xt(i,t,n.getLineCount(),kt(e.target.element));r&&(e.event.preventDefault(),e.event.stopPropagation(),u(t,r))});return{update(t){if(i=t,!a)return;let r=a,o=xt(t,r.anchorLine,n.getLineCount());if(!o){c();return}r.change=o,r.zone.afterLineNumber=St(o,n.getLineCount()),r.zone.heightInPx=Dt+Ct(o)*e.getOption(w.EditorOption.lineHeight);try{e.changeViewZones(e=>e.layoutZone(r.zoneId))}catch{c();return}l(r)},dispose(){o=!0,d.dispose(),c()}}}var jt={added:`puddle-dirty-added`,modified:`puddle-dirty-modified`,"deleted-before":`puddle-dirty-deleted-before`,"deleted-after":`puddle-dirty-deleted-after`};function Mt(e,t,n,r){let a=i(),o=d(e,t,{root:n,enabled:a.data!==void 0&&ye(a.data.protocol)&&r!==null}),[s,c]=(0,E.useState)(null),l=(0,E.useCallback)(e=>{c(e)},[]);return(0,E.useEffect)(()=>{let e=o.data;if(!s||!r||!e||e.repository===null||e.ignored||e.binary)return;let n=document.createElement(`div`);n.className=`puddle-hidden-diff-controller`,document.body.appendChild(n);let i=w.createModel(e.exists?e.content??``:``,r.getLanguageId()),a=w.createDiffEditor(n,{readOnly:!0,automaticLayout:!1,renderSideBySide:!1,minimap:{enabled:!1}}),c=s.createDecorationsCollection();a.setModel({original:i,modified:r});let l=At({editor:s,original:i,modified:r,path:t}),u=()=>{let e=a.getLineChanges();e&&(l.update(e),c.set(Et(e,r.getLineCount()).map(e=>({range:new be(e.startLineNumber,1,e.endLineNumber,1),options:{isWholeLine:!0,linesDecorationsClassName:jt[e.kind]}}))))},d=a.onDidUpdateDiff(u);return u(),()=>{d.dispose(),l.dispose(),c.clear(),a.setModel(null),a.dispose(),i.dispose(),n.remove()}},[s,r,o.data]),l}function Nt({message:e,session:t,path:n,root:r,download:i}){return(0,D.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 bg-ground text-sm text-fg-muted`,children:[(0,D.jsx)(`span`,{children:e}),i&&(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void y(t,n,r).catch(e=>o.error(e instanceof Error?e.message:`Download failed`)),className:`flex items-center gap-1.5 text-fg-secondary transition-colors hover:text-fg`,children:[(0,D.jsx)(f,{className:`size-4`}),`Download`]})]})}function Pt({session:e,path:t,reveal:n,root:r,focused:i=!0,scrollDriver:a=!1,scrollReceiver:o=!1,scrollChannel:s=`profile`}){let c=ge(),l=bt(e,t,n,r,{focused:i}),u=Mt(e,t,r,l.model),d=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),[f,p]=(0,E.useState)(null),m=(0,E.useMemo)(()=>({session:e,path:t,root:r}),[e,t,r]),h=l.conflict!==null&&l.conflict.phase!==`unresolved`;if((0,E.useEffect)(()=>{if(!(!f||!l.model||h))return ht(f,{channel:s,target:m,driver:a,receiver:o},w.ScrollType.Immediate)},[f,l.model,h,s,m,a,o]),l.conflict&&l.conflict.phase!==`unresolved`)return(0,D.jsx)(ct,{session:e,path:t,buffer:l,focused:i});if(l.status===`binary`)return(0,D.jsx)(Nt,{message:`Binary file — use Download`,session:e,path:t,root:r,download:!0});if(l.status===`too-large`)return(0,D.jsx)(Nt,{message:`File too large to edit — use Download`,session:e,path:t,root:r,download:!0});if(l.status===`error`)return(0,D.jsx)(Nt,{message:l.errorMessage??`Failed to load file`,session:e,path:t,root:r});let g=l.peerBadge===`saved-elsewhere`?`Saved in another window`:l.peerBadge===`dirty-elsewhere`?`Also being edited in another window`:null;return(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[l.restoredNotice&&(0,D.jsxs)(`div`,{className:`flex items-center gap-3 bg-elevated px-3 py-1.5 text-xs text-fg-secondary`,children:[(0,D.jsx)(`span`,{children:`Restored unsaved changes`}),(0,D.jsx)(`button`,{type:`button`,onClick:l.discardRestore,className:`text-fg-muted transition-colors hover:text-fg`,children:`Discard`})]}),g&&(0,D.jsx)(`div`,{className:`bg-surface px-3 py-1 text-xs text-fg-muted`,children:g}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:l.model&&(0,D.jsx)(T,{path:l.model.uri.toString(),defaultValue:l.model.getValue(),theme:`puddle`,keepCurrentModel:!0,onMount:e=>{l.onMount(e),u(e),p(e)},loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),options:{automaticLayout:!0,fontFamily:d,fontSize:c.editorFontSize,...ot(c.editorTabSize),wordWrap:c.editorWordWrap?`on`:`off`,minimap:{enabled:!1},glyphMargin:!1,lineDecorationsWidth:10,fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})})]})}function k({children:e}){return(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center px-4 text-xs text-fg-muted`,children:e})}function Ft(e,t){let n=(0,E.useRef)(t);n.current=t,(0,E.useEffect)(()=>(je(e),()=>{n.current?.(),Ce(e)}),[e])}function It(e,t,n,r){let i=r.split(`/`).map(encodeURIComponent).join(`/`);return`${e}://${encodeURIComponent(t)}/${encodeURIComponent(n)}/${i}`}function Lt({session:e,refName:t,path:n,content:r}){let i=ge(),a=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);return(0,D.jsx)(T,{path:It(`puddle-view`,e,t,n),defaultValue:r,theme:Ne,loading:(0,D.jsx)(k,{children:`…`}),options:{readOnly:!0,automaticLayout:!0,fontFamily:a,fontSize:i.editorFontSize,...ot(i.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Rt({session:e,against:t,path:n,root:r,indexBase:i=!1}){let a=_(e,t,n,{root:r,enabled:!i}),o=h(e,n,{root:r,enabled:i}),s=i?o:a;return s.isPending?(0,D.jsx)(k,{children:`…`}):s.error?(0,D.jsx)(k,{children:s.error instanceof Error?s.error.message:`Failed to load`}):s.data.binary?(0,D.jsx)(k,{children:`Binary file — deleted`}):(0,D.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,D.jsx)(`div`,{className:`bg-surface px-4 py-1 text-xs text-fg-muted`,children:`Deleted`}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(Lt,{session:e,refName:`${t}:${r??``}`,path:n,content:s.data.content??``})})]})}function zt({session:e,against:t,path:n,basePath:r,root:i,indexBase:a=!1,focused:o=!0}){let c=ge(),l=bt(e,n,null,i,{focused:o}),u=_(e,t,r,{root:i,enabled:!a}),d=h(e,r,{root:i,enabled:a}),f=a?d:u,p=(0,E.useRef)(null);Ft(Me(e,n,i),()=>{let e=p.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),p.current=null});let m=(0,E.useRef)(l.save);m.current=l.save;let g=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),v=f.error instanceof s&&f.error.status===404;return l.conflict&&l.conflict.phase!==`unresolved`?(0,D.jsx)(ct,{session:e,path:n,buffer:l,focused:o}):l.status===`binary`||f.data?.binary?(0,D.jsx)(k,{children:`Binary file`}):l.status===`too-large`?(0,D.jsx)(k,{children:`File too large to show`}):l.status===`error`?(0,D.jsx)(k,{children:l.errorMessage??`Failed to load file`}):v||a&&d.data&&!d.data.exists?(0,D.jsx)(Pt,{session:e,path:n,reveal:null,root:i,focused:o}):f.isPending||!l.model?(0,D.jsx)(k,{children:`…`}):f.error?(0,D.jsx)(k,{children:f.error instanceof Error?f.error.message:`Failed to load base`}):(0,D.jsx)(Te,{modifiedModelPath:l.model.uri.toString(),originalModelPath:It(`puddle-base`,e,`${t}:${i??``}`,r),original:f.data.content??``,language:l.model.getLanguageId(),theme:Ne,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(k,{children:`…`}),onMount:e=>{p.current=e,e.onDidDispose(()=>{p.current=null}),e.getModifiedEditor().addCommand(xe.CtrlCmd|Se.KeyS,()=>m.current())},options:{readOnly:!1,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:g,fontSize:c.editorFontSize,...ot(c.editorTabSize),wordWrap:c.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Bt({session:e,against:t,entry:n,root:r}){let i=ge(),a=n.old_path??n.path,o=_(e,t,a,{root:r,enabled:n.status!==`added`}),s=h(e,n.path,{root:r,enabled:n.status!==`deleted`}),c=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);if(n.status===`deleted`)return(0,D.jsx)(Rt,{session:e,against:t,path:a,root:r});if(s.isPending||n.status!==`added`&&o.isPending)return(0,D.jsx)(k,{children:`…`});if(s.error||o.error){let e=s.error??o.error;return(0,D.jsx)(k,{children:e instanceof Error?e.message:`Failed to load staged content`})}return s.data.binary||o.data?.binary?(0,D.jsx)(k,{children:`Binary file`}):n.status===`added`?(0,D.jsx)(Lt,{session:e,refName:`index:${r??``}`,path:n.path,content:s.data.content??``}):o.data?(0,D.jsx)(Te,{originalModelPath:It(`puddle-head`,e,`${t}:${r??``}`,a),modifiedModelPath:It(`puddle-index`,e,`${t}:${r??``}`,n.path),original:o.data.content??``,modified:s.data.content??``,theme:Ne,loading:(0,D.jsx)(k,{children:`…`}),options:{readOnly:!0,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:c,fontSize:i.editorFontSize,...ot(i.editorTabSize),wordWrap:i.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}}):(0,D.jsx)(k,{children:`Failed to load HEAD content`})}function Vt({session:e,path:t,root:n,focused:r}){return Ft(Me(e,t,n)),(0,D.jsx)(Pt,{session:e,path:t,reveal:null,root:n,focused:r})}function Ht({session:e,against:t,entry:n,root:r,area:i,focused:a=!0}){if(i===`staged`)return(0,D.jsx)(Bt,{session:e,against:t,entry:n,root:r});switch(n.status){case`added`:return(0,D.jsx)(Vt,{session:e,path:n.path,root:r,focused:a});case`deleted`:return(0,D.jsx)(Rt,{session:e,against:t,path:n.path,root:r,indexBase:i===`unstaged`});case`modified`:case`renamed`:return(0,D.jsx)(zt,{session:e,against:t,path:n.path,basePath:n.old_path??n.path,root:r,indexBase:i===`unstaged`,focused:a});default:return null}}function Ut({session:e,sha:t,path:n,root:r}){let i=_(e,t,n,{root:r});return i.isPending?(0,D.jsx)(k,{children:`…`}):i.error?(0,D.jsx)(k,{children:i.error instanceof Error?i.error.message:`Failed to load file`}):i.data.binary?(0,D.jsx)(k,{children:`Binary file`}):(0,D.jsx)(Lt,{session:e,refName:`${t}:${r??``}`,path:n,content:i.data.content??``})}function Wt({session:e,originalRef:t,originalPath:n,originalContent:r,modifiedRef:i,modifiedPath:a,modifiedContent:o,root:s}){let c=ge(),l=(0,E.useRef)(null),u=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);return(0,E.useEffect)(()=>()=>{let e=l.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),t?.modified.dispose(),l.current=null},[]),(0,D.jsx)(Te,{originalModelPath:It(`puddle-hist-orig`,e,`${t}:${s??``}`,n),modifiedModelPath:It(`puddle-hist-mod`,e,`${i}:${s??``}`,a),original:r,modified:o,theme:Ne,keepCurrentOriginalModel:!0,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(k,{children:`…`}),onMount:e=>{l.current=e,e.onDidDispose(()=>{l.current=null})},options:{readOnly:!0,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:u,fontSize:c.editorFontSize,...ot(c.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Gt({session:e,sha:t,path:n,basePath:r,root:i}){let a=_(e,`${t}^`,r,{root:i}),o=_(e,t,n,{root:i});return a.error instanceof s&&a.error.status===404?(0,D.jsx)(Ut,{session:e,sha:t,path:n,root:i}):a.isPending||o.isPending?(0,D.jsx)(k,{children:`…`}):a.error?(0,D.jsx)(k,{children:a.error instanceof Error?a.error.message:`Failed to load original`}):o.error?(0,D.jsx)(k,{children:o.error instanceof Error?o.error.message:`Failed to load file`}):a.data.binary||o.data.binary?(0,D.jsx)(k,{children:`Binary file`}):(0,D.jsx)(Wt,{session:e,originalRef:`${t}^`,originalPath:r,originalContent:a.data.content??``,modifiedRef:t,modifiedPath:n,modifiedContent:o.data.content??``,root:i})}function Kt({session:e,sha:t,entry:n,isRootCommit:r,root:i}){switch(te(n.status,r)){case`added`:return(0,D.jsx)(Ut,{session:e,sha:t,path:n.path,root:i});case`deleted`:return(0,D.jsx)(Rt,{session:e,against:`${t}^`,path:n.path,root:i});case`modified`:case`renamed`:return(0,D.jsx)(Gt,{session:e,sha:t,path:n.path,basePath:n.old_path??n.path,root:i});default:return null}}function qt({session:e,sha:t,path:n,root:r}){let i=p(e,t,r);if(i.isPending)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:`Loading commit…`});if(i.error)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:i.error instanceof Error?i.error.message:`Failed to load commit`});let a=i.data.files.find(e=>e.path===n);return a?(0,D.jsx)(`div`,{className:`h-full`,children:(0,D.jsx)(Kt,{session:e,sha:t,entry:a,isRootCommit:i.data.parents.length===0,root:r})}):(0,D.jsxs)(`div`,{className:`flex h-full items-center justify-center px-4 text-center text-xs text-fg-muted`,children:[(0,D.jsx)(`span`,{className:`text-fg-secondary`,children:n}),` is not part of`,` `,(0,D.jsx)(`span`,{className:`font-mono`,children:t.slice(0,7)}),`.`]})}function Jt({session:e,path:t,root:n,area:r,focused:i=!0}){let a=v(e,{root:n,against:r===void 0?`base`:`head`,area:r});if(a.isPending)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:`Loading diff…`});if(a.error)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:a.error instanceof Error?a.error.message:`Failed to load diff`});let o=a.data.entries.find(e=>e.path===t);return o?(0,D.jsx)(`div`,{className:`h-full`,children:(0,D.jsx)(Ht,{session:e,against:a.data.against,entry:o,root:n,area:r,focused:i})}):(0,D.jsxs)(`div`,{className:`flex h-full items-center justify-center px-4 text-center text-xs text-fg-muted`,children:[`No changes to `,(0,D.jsx)(`span`,{className:`mx-1 text-fg-secondary`,children:t}),` against the base.`]})}var Yt=800;function Xt({name:e}){let t=ge(),n=u(),i=ie(n,e),a=r(),s=l(`editor.save`),c=(0,E.useRef)(null),d=(0,E.useRef)(null),f=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);if((0,E.useEffect)(()=>{if(n===null)return;let t=ve(t=>{x(n,e,t).catch(e=>o.error(e instanceof Error?e.message:`Draft not saved`))},Yt);return d.current=t,()=>{t.flush(),d.current=null}},[n,e]),n===null)return null;if(i.error)return(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center bg-ground text-sm text-fg-muted`,children:i.error instanceof Error?i.error.message:`Failed to load the draft`});if(i.data===void 0)return(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`});let p=()=>{let t=c.current;t&&(d.current?.flush(),re({name:e,content:t.getValue()}))};return(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[(0,D.jsxs)(`div`,{className:`bg-surface px-3 py-1 text-xs text-fg-muted`,children:[`Draft — not in any worktree; `,s,` saves it into one`]}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(T,{path:`puddle-untitled://${n}/${e}`,defaultValue:i.data.content,theme:Ne,keepCurrentModel:!1,loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),onMount:t=>{c.current=t,b(e,t.getValue()),vt(t,{onSave:p})},onChange:t=>{let r=t??``;b(e,r),S(a,n,e,r),d.current?.(r)},options:{automaticLayout:!0,fontFamily:f,fontSize:t.editorFontSize,...ot(t.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1,wordWrap:t.editorWordWrap?`on`:`off`}})})]})}function Zt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Qt(e){if(Array.isArray(e))return e}function $t(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function en(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n}from"./x-BJOrp_m5.js";import{Ct as r,Ht as i,R as a,c as o,p as s,qt as c,v as l,xt as u}from"./hotkeys-CekBkaTu.js";import{A as d,B as f,D as p,F as m,M as h,N as g,O as _,P as v,S as y,a as b,d as x,f as S,g as ee,m as te,n as ne,o as re,p as ie,v as ae,w as oe}from"./editor-context-DBjXfTll.js";import{t as se}from"./preload-helper-Czpn1I53.js";import{a as ce,n as le,r as ue,t as de}from"./use-find-controls-BLr0BXJn.js";import{F as fe,I as C,J as pe,N as me,P as he,X as ge,Y as _e,a as ve,ht as ye}from"./index-tq6zC_Gs.js";import{c as be,i as xe,p as w,r as Se}from"./editor.api2-4X9Vh9Zw.js";import{a as Ce,c as we,d as T,f as Te,i as Ee,l as De,n as Oe,o as ke,r as Ae,s as je,t as Me,u as Ne}from"./buffer-store-BTxNhwb6.js";import{a as Pe,c as Fe,i as Ie,l as Le,n as Re,o as ze,r as Be,s as Ve}from"./editor-sync-BkL2SFMx.js";import{r as He}from"./buffer-logic-CqYsttLM.js";var E=e(t(),1),Ue=new Map,We=new Map,Ge=1;function Ke(e){for(let t of We.get(e)??[])t()}function qe(e,t){Ue.set(e,t),Ke(e)}function Je(e){let t={phase:`unresolved`,revision:Ge++};return qe(e,t),t}function Ye(e){let t=Ue.get(e);return!t||t.phase!==`unresolved`&&t.phase!==`load-error`?null:(qe(e,{phase:`loading`,revision:t.revision}),t.revision)}function Xe(e,t,n,r){let i=Ue.get(e);return!i||i.phase!==`loading`||i.revision!==t?!1:(qe(e,{phase:`opening`,revision:t,content:n,mtimeMs:r}),!0)}function Ze(e,t){let n=Ue.get(e);return!n||n.phase!==`opening`||n.revision!==t?!1:(qe(e,{...n,phase:`comparing`}),!0)}function Qe(e,t,n){let r=Ue.get(e);return!r||r.phase!==`loading`||r.revision!==t?!1:(qe(e,{phase:`load-error`,revision:t,message:n}),!0)}function $e(e,t){return t&&e?.phase===`unresolved`}function et(e){return e?.phase===`comparing`?e.mtimeMs:void 0}function tt(e){return e?.phase===`loading`||e?.phase===`load-error`||e?.phase===`opening`}function nt(e){return e.phase===`opening`||e.phase===`comparing`}function rt(e){Ue.delete(e)&&Ke(e)}function it(e){return Ue.get(e)??null}function at(e,t){let n=We.get(e);return n||(n=new Set,We.set(e,n)),n.add(t),()=>n.delete(t)}function ot(e){return{tabSize:e,insertSpaces:!0,detectIndentation:!1}}var D=n();function st({session:e,path:t,conflict:n,model:r,onTakeDisk:i,onKeepMine:a,onSave:o,onReady:s}){let c=ge(),l=(0,E.useId)(),u=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),d=(0,E.useRef)(o);d.current=o;let f=(0,E.useRef)(null),p=()=>{let e=f.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),f.current=null},m=(0,E.useRef)(p);return m.current=p,(0,E.useEffect)(()=>()=>m.current(),[]),(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[(0,D.jsxs)(`div`,{className:`flex items-center gap-3 bg-elevated px-3 py-1.5 text-xs text-fg-secondary`,children:[(0,D.jsx)(`span`,{children:`This file changed on disk. Yours is on the right — merge what you want, then save.`}),(0,D.jsx)(`button`,{type:`button`,onClick:i,className:`ml-auto shrink-0 text-fg-muted transition-colors hover:text-fg`,children:`Take the disk version`}),(0,D.jsx)(`button`,{type:`button`,onClick:a,disabled:n.phase!==`comparing`,className:`shrink-0 text-fg-muted transition-colors hover:text-fg`,children:`Keep mine`})]}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(Te,{modifiedModelPath:r.uri.toString(),originalModelPath:`puddle-disk://${encodeURIComponent(e)}/${n.mtimeMs}/${encodeURIComponent(l)}/${t.split(`/`).map(encodeURIComponent).join(`/`)}`,original:n.content,language:r.getLanguageId(),theme:Ne,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),onMount:e=>{f.current=e,e.onDidDispose(()=>{f.current=null}),e.getModifiedEditor().addCommand(xe.CtrlCmd|Se.KeyS,()=>d.current()),s?.(n.revision)},options:{readOnly:n.phase!==`comparing`,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:u,fontSize:c.editorFontSize,...ot(c.editorTabSize),wordWrap:c.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})})]})}function ct({session:e,path:t,buffer:n,focused:r}){let i=n.conflict;return!i||i.phase===`unresolved`?null:nt(i)&&n.model?(0,D.jsx)(st,{session:e,path:t,conflict:i,model:n.model,onTakeDisk:n.takeDisk,onKeepMine:n.keepMine,onSave:n.save,onReady:r?n.comparisonReady:void 0}):i.phase===`load-error`?(0,D.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 bg-ground px-4 text-center text-sm text-fg-muted`,children:[(0,D.jsx)(`span`,{children:`The disk version could not be loaded.`}),(0,D.jsx)(`span`,{className:`max-w-lg text-xs text-fg-secondary`,children:i.message}),(0,D.jsx)(`button`,{type:`button`,onClick:n.compare,className:`rounded-md bg-elevated px-3 py-1.5 text-xs text-fg-secondary transition-colors hover:bg-border hover:text-fg`,children:`Retry compare`})]}):(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center bg-ground text-sm text-fg-muted`,children:`Loading the disk version…`})}function lt(e){return Number.isFinite(e)?Math.min(1,Math.max(0,e)):0}function ut(e,t,n){return lt(e/Math.max(1,t-n))}function dt(e,t,n){return lt(e)*Math.max(0,t-n)}function O(e,t){return JSON.stringify([e,t.session,t.root??null,t.path])}var ft=new class{positions=new Map;listeners=new Map;revision=0;publish(e,t,n){let r={ratio:lt(n),revision:++this.revision},i=O(e,t);this.positions.set(i,r);for(let e of this.listeners.get(i)??[])e(r);return r}get(e,t){return this.positions.get(O(e,t))}subscribe(e,t,n){let r=O(e,t),i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n);let a=this.positions.get(r);return a&&n(a),()=>{i?.delete(n),i?.size===0&&this.listeners.delete(r)}}};function pt(e){let t=null;return{schedule:()=>{t===null&&(t=requestAnimationFrame(()=>{t=null,e()}))},dispose:()=>{t!==null&&cancelAnimationFrame(t),t=null}}}function mt(e,t){if(t.driver&&t.receiver)throw Error(`a preview scroll surface cannot be both driver and receiver`);let n=t.store??ft,r,i=()=>void 0,a,o=t=>{r=t,e.scrollTop=dt(t.ratio,e.scrollHeight,e.clientHeight)};t.receiver?i=n.subscribe(t.channel,t.target,o):t.driver&&(a=pt(()=>{n.publish(t.channel,t.target,ut(e.scrollTop,e.scrollHeight,e.clientHeight))}),e.addEventListener(`scroll`,a.schedule,{passive:!0}),a.schedule());let s=new ResizeObserver(()=>{t.receiver&&r?o(r):t.driver&&a?.schedule()});for(let e of t.resizeElements??[])s.observe(e);return()=>{t.driver&&a&&e.removeEventListener(`scroll`,a.schedule),i(),s.disconnect(),a?.dispose()}}function ht(e,t,n){if(t.driver&&t.receiver)throw Error(`a Monaco scroll surface cannot be both driver and receiver`);let r=t.store??ft,i=[],a,o=()=>void 0,s,c=()=>e.getLayoutInfo().height,l=t=>{a=t,e.setScrollTop(dt(t.ratio,e.getScrollHeight(),c()),n)};return t.receiver?(o=r.subscribe(t.channel,t.target,l),i.push(e.onDidChangeModel(()=>a&&l(a))),i.push(e.onDidLayoutChange(()=>a&&l(a)))):t.driver&&(s=pt(()=>{r.publish(t.channel,t.target,ut(e.getScrollTop(),e.getScrollHeight(),c()))}),i.push(e.onDidScrollChange(s.schedule)),i.push(e.onDidChangeModel(s.schedule)),i.push(e.onDidLayoutChange(s.schedule)),s.schedule()),()=>{o();for(let e of i)e.dispose();s?.dispose()}}function gt(e){return!e}function _t(e){let t=e.split(`+`),n=t.pop()??``,r=0;for(let e of t)e===`meta`?r|=xe.CtrlCmd:e===`ctrl`?r|=xe.WinCtrl:e===`alt`?r|=xe.Alt:e===`shift`&&(r|=xe.Shift);let i=Se[/^Key[A-Z]$/.test(n)?`Key${n.slice(3)}`:/^Digit[0-9]$/.test(n)?`Digit${n.slice(5)}`:n];return typeof i==`number`?r|i:null}function vt(e,t){let n=_t(o(`editor.save`));n!==null&&e.addCommand(n,()=>t.onSave());let r=_t(o(`editor.wordWrap`));e.addAction({id:`puddle.toggleWordWrap`,label:`Toggle Word Wrap`,keybindings:r===null?[]:[r],run:()=>_e({editorWordWrap:gt(pe().editorWordWrap)})})}function yt(e){return`file-conflict:${e}`}function bt(e,t,n,r,a){let o=a?.passive===!0,s=a?.focused??!0,c=Me(e,t,r),l=m(e,t,{root:r,live:a?.live}),d=g(e,r),[f,p]=(0,E.useState)(null),[h,_]=(0,E.useState)(!1),v=(0,E.useRef)(!1),y=(0,E.useRef)(null),b=(0,E.useRef)(null),x=(0,E.useRef)(n);x.current=n;let S=(0,E.useRef)(!1),te=(0,E.useCallback)((e,t)=>{b.current?.cancel(),S.current=!0;try{ke(c,e,t)}finally{S.current=!1}},[c]),ne=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>De(c,e),[c]),()=>Ae(c)),re=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>ze(c,e),[c]),()=>Pe(c)),ie=(0,E.useSyncExternalStore)((0,E.useCallback)(e=>at(c,e),[c]),()=>it(c));(0,E.useEffect)(()=>{let n=l.data;if(!n||n.binary||n.content===null||v.current)return;v.current=!0;let a=we(c)!==void 0,o=Oe(e,t,n.content,n.mtime_ms,r);p(o),!a&&Le(e,t,r).then(e=>{e&&(e.base_mtime_ms===n.mtime_ms?He(o,e.content)&&_(!0):i(`This file has an unsaved draft from an earlier version.`,{description:`The file changed on disk since the draft was saved.`,duration:12e3,action:{label:`Restore draft`,onClick:()=>{He(o,e.content)&&_(!0)}}}))})},[l.data,c,e,t,r]),(0,E.useEffect)(()=>{if(!f||o)return;let n=Fe(e,t,r);b.current=n;let i=f.onDidChangeContent(()=>{S.current||(n(f.getValue(),we(c)??0),Re(e,t,r))});return()=>{n.flush(),i.dispose(),b.current=null}},[f,c,e,t,r,o]),(0,E.useEffect)(()=>{!f||!re.savedElsewhere||Ae(c)||l.refetch().then(e=>{Ae(c)||(e.data&&e.data.content!==null&&te(e.data.content,e.data.mtime_ms),Ie(c))})},[re.savedElsewhere,f,c]),(0,E.useEffect)(()=>{let e=l.data;!f||!e||e.content===null||!Ae(c)&&e.mtime_ms!==we(c)&&te(e.content,e.mtime_ms)},[l.data,f,c]);let oe=(0,E.useCallback)((n,i)=>{Ee(c,n,i),b.current?.cancel(),Ve(e,t,r),Be(e,t,i,r),_(!1),rt(c)},[c,e,t,r]),se=(0,E.useCallback)(()=>{let e=Ye(c);e!==null&&(i.dismiss(yt(c)),l.refetch({throwOnError:!0}).then(t=>{let n=t.data;if(!n)throw Error(`The disk version did not load.`);if(n.content===null)throw Error(`The file on disk is binary and cannot be compared as text.`);Xe(c,e,n.content,n.mtime_ms)}).catch(t=>{Qe(c,e,t instanceof Error?t.message:`The disk version did not load.`)}))},[l,c]),ce=(0,E.useRef)(se);ce.current=se,(0,E.useEffect)(()=>{if(!$e(ie,s))return;let e=yt(c);return i(`File changed on disk`,{id:e,description:`Nothing was written — your unsaved version is intact.`,duration:1/0,closeButton:!0,action:{label:`Compare`,onClick:()=>ce.current()}}),()=>{i.dismiss(e)}},[ie,s,c]);let le=(0,E.useCallback)(()=>{l.refetch().then(n=>{n.data&&n.data.content!==null&&te(n.data.content,n.data.mtime_ms),Ve(e,t,r),_(!1),rt(c)})},[c,e,t,te]),ue=(0,E.useCallback)((e,n)=>{d.mutate({path:t,content:e},{onSuccess:e=>oe(n,e.mtime_ms),onError:e=>i.error(e instanceof Error?e.message:`Overwrite failed`)})},[d,t,oe]),de=(0,E.useCallback)(()=>{if(!f||!Ae(c))return;let e=f.getValue(),n=f.getAlternativeVersionId();if(tt(it(c)))return;let r=et(it(c))??we(c);d.mutate({path:t,content:e,expected_mtime_ms:r},{onSuccess:e=>oe(n,e.mtime_ms),onError:e=>{e instanceof u&&e.status===409&&e.code===`stale_file`?Je(c):i.error(e instanceof Error?e.message:`Save failed`)}})},[f,c,d,t,oe]),fe=(0,E.useRef)(de);fe.current=de,(0,E.useEffect)(()=>ee(ae(e,t,r),()=>fe.current()),[e,t,r]);let C=(0,E.useCallback)(()=>{let n=y.current,i=x.current;r===void 0&&(!n||!i||i.session!==e||i.path!==t||(n.revealLineInCenter(i.line),n.setPosition({lineNumber:i.line,column:i.column??1}),n.focus()))},[e,t,r]),pe=(0,E.useCallback)(e=>{y.current=e,vt(e,{onSave:()=>fe.current()}),C()},[C]);(0,E.useEffect)(()=>{C()},[n,f,C]);let me=(0,E.useCallback)(()=>{le()},[le]),he=(0,E.useCallback)(()=>{!f||it(c)?.phase!==`comparing`||ue(f.getValue(),f.getAlternativeVersionId())},[f,c,ue]),ge=(0,E.useCallback)(e=>{Ze(c,e)},[c]),_e,ve=null;l.data?.binary?_e=`binary`:l.error?l.error instanceof u&&l.error.status===413?_e=`too-large`:(_e=`error`,ve=l.error instanceof Error?l.error.message:`Failed to load file`):_e=f?`ready`:`loading`;let ye=ne&&re.savedElsewhere?`saved-elsewhere`:ne&&re.dirtyElsewhere?`dirty-elsewhere`:null;return{status:_e,errorMessage:ve,model:f,dirty:ne,restoredNotice:h,discardRestore:me,peerBadge:ye,conflict:ie,takeDisk:le,keepMine:he,compare:se,comparisonReady:ge,save:de,onMount:pe}}function xt(e,t,n,r){for(let i of e)if(Et([i],n).some(e=>(r===void 0||e.kind===r)&&t>=e.startLineNumber&&t<=e.endLineNumber))return i;return null}function St(e,t){return wt(e.modifiedStartLineNumber,e.modifiedEndLineNumber)>0?Math.min(t,e.modifiedEndLineNumber):Math.max(0,Math.min(t,e.modifiedStartLineNumber-1))}function Ct(e){let t=wt(e.originalStartLineNumber,e.originalEndLineNumber),n=wt(e.modifiedStartLineNumber,e.modifiedEndLineNumber);return Math.max(5,Math.min(14,t+n+4))}function wt(e,t){return t===0?0:Math.max(0,t-e+1)}function Tt(e,t){if(e>t)return{startLineNumber:Math.max(1,t),endLineNumber:Math.max(1,t),kind:`deleted-after`};let n=Math.max(1,e);return{startLineNumber:n,endLineNumber:n,kind:`deleted-before`}}function Et(e,t){let n=[];for(let r of e){let e=wt(r.originalStartLineNumber,r.originalEndLineNumber),i=wt(r.modifiedStartLineNumber,r.modifiedEndLineNumber);if(e===0&&i>0){n.push({startLineNumber:r.modifiedStartLineNumber,endLineNumber:r.modifiedEndLineNumber,kind:`added`});continue}if(i===0&&e>0){n.push(Tt(r.modifiedStartLineNumber,t));continue}let a=Math.min(e,i);a>0&&n.push({startLineNumber:r.modifiedStartLineNumber,endLineNumber:r.modifiedStartLineNumber+a-1,kind:`modified`}),i>a&&n.push({startLineNumber:r.modifiedStartLineNumber+a,endLineNumber:r.modifiedEndLineNumber,kind:`added`}),e>a&&n.push(Tt(r.modifiedStartLineNumber+i,t))}return n}var Dt=28,Ot=[[`puddle-dirty-added`,`added`],[`puddle-dirty-modified`,`modified`],[`puddle-dirty-deleted-before`,`deleted-before`],[`puddle-dirty-deleted-after`,`deleted-after`]];function kt(e){if(e){for(let[t,n]of Ot)if(e.classList.contains(t)||e.closest(`.${t}`))return n}}function At({editor:e,original:t,modified:n,path:r}){let i=[],a=null,o=!1,s=t=>{try{e.changeViewZones(e=>e.removeZone(t))}catch{}},c=()=>{let e=a;e&&(a=null,e.frame!==null&&cancelAnimationFrame(e.frame),e.diffEditor&&(e.diffEditor.setModel(null),e.diffEditor.dispose()),s(e.zoneId))},l=e=>{let t=e.diffEditor;if(!t)return;let r=Math.max(1,Math.min(n.getLineCount(),e.change.modifiedStartLineNumber));t.getModifiedEditor().revealLineInCenter(r,w.ScrollType.Immediate)},u=(i,s)=>{if(a?.anchorLine===i){c();return}c();let u=e.getOption(w.EditorOption.lineHeight),d=document.createElement(`div`);d.className=`puddle-dirty-peek`;let f=document.createElement(`div`);f.className=`puddle-dirty-peek-header`;let p=document.createElement(`span`);p.className=`puddle-dirty-peek-title`,p.textContent=`${r.split(`/`).pop()??r} · Local changes against HEAD`;let m=document.createElement(`button`);m.type=`button`,m.className=`puddle-dirty-peek-close`,m.setAttribute(`aria-label`,`Close inline change`),m.title=`Close inline change`,m.textContent=`×`,m.addEventListener(`pointerdown`,e=>{e.preventDefault(),e.stopPropagation(),c()}),m.addEventListener(`click`,e=>{e.preventDefault(),e.stopPropagation(),c()});let h=document.createElement(`div`);h.className=`puddle-dirty-peek-editor`,f.append(p,m),d.append(f,h);let g=document.createElement(`div`);g.className=`puddle-dirty-peek-margin`;let _={afterLineNumber:St(s,n.getLineCount()),heightInPx:Dt+Ct(s)*u,domNode:d,marginDomNode:g,suppressMouseDown:!1},v=``;e.changeViewZones(e=>{v=e.addZone(_)});let y={anchorLine:i,change:s,zone:_,zoneId:v,frame:null,diffEditor:null};a=y,y.frame=requestAnimationFrame(()=>{if(y.frame=null,o||a!==y)return;let r=w.createDiffEditor(h,{readOnly:!0,domReadOnly:!0,originalEditable:!1,renderSideBySide:!1,renderMarginRevertIcon:!1,renderOverviewRuler:!1,enableSplitViewResizing:!1,isInEmbeddedEditor:!0,automaticLayout:!0,fontFamily:e.getOption(w.EditorOption.fontFamily),fontSize:e.getOption(w.EditorOption.fontSize),lineHeight:u,minimap:{enabled:!1},glyphMargin:!1,folding:!1,scrollBeyondLastLine:!1,fixedOverflowWidgets:!0,hideUnchangedRegions:{enabled:!0,minimumLineCount:0,contextLineCount:2,revealLineCount:3}});y.diffEditor=r,r.setModel({original:t,modified:n}),r.onDidUpdateDiff(()=>l(y)),l(y)}),e.revealLineInCenter(Math.max(1,Math.min(n.getLineCount(),s.modifiedStartLineNumber)))},d=e.onMouseDown(e=>{if(!e.event.leftButton||e.target.type!==w.MouseTargetType.GUTTER_LINE_DECORATIONS||e.target.position===null)return;let t=e.target.position.lineNumber,r=xt(i,t,n.getLineCount(),kt(e.target.element));r&&(e.event.preventDefault(),e.event.stopPropagation(),u(t,r))});return{update(t){if(i=t,!a)return;let r=a,o=xt(t,r.anchorLine,n.getLineCount());if(!o){c();return}r.change=o,r.zone.afterLineNumber=St(o,n.getLineCount()),r.zone.heightInPx=Dt+Ct(o)*e.getOption(w.EditorOption.lineHeight);try{e.changeViewZones(e=>e.layoutZone(r.zoneId))}catch{c();return}l(r)},dispose(){o=!0,d.dispose(),c()}}}var jt={added:`puddle-dirty-added`,modified:`puddle-dirty-modified`,"deleted-before":`puddle-dirty-deleted-before`,"deleted-after":`puddle-dirty-deleted-after`};function Mt(e,t,n,r){let i=a(),o=d(e,t,{root:n,enabled:i.data!==void 0&&ye(i.data.protocol)&&r!==null}),[s,c]=(0,E.useState)(null),l=(0,E.useCallback)(e=>{c(e)},[]);return(0,E.useEffect)(()=>{let e=o.data;if(!s||!r||!e||e.repository===null||e.ignored||e.binary)return;let n=document.createElement(`div`);n.className=`puddle-hidden-diff-controller`,document.body.appendChild(n);let i=w.createModel(e.exists?e.content??``:``,r.getLanguageId()),a=w.createDiffEditor(n,{readOnly:!0,automaticLayout:!1,renderSideBySide:!1,minimap:{enabled:!1}}),c=s.createDecorationsCollection();a.setModel({original:i,modified:r});let l=At({editor:s,original:i,modified:r,path:t}),u=()=>{let e=a.getLineChanges();e&&(l.update(e),c.set(Et(e,r.getLineCount()).map(e=>({range:new be(e.startLineNumber,1,e.endLineNumber,1),options:{isWholeLine:!0,linesDecorationsClassName:jt[e.kind]}}))))},d=a.onDidUpdateDiff(u);return u(),()=>{d.dispose(),l.dispose(),c.clear(),a.setModel(null),a.dispose(),i.dispose(),n.remove()}},[s,r,o.data]),l}function Nt({message:e,session:t,path:n,root:r,download:a}){return(0,D.jsxs)(`div`,{className:`flex h-full flex-col items-center justify-center gap-3 bg-ground text-sm text-fg-muted`,children:[(0,D.jsx)(`span`,{children:e}),a&&(0,D.jsxs)(`button`,{type:`button`,onClick:()=>void y(t,n,r).catch(e=>i.error(e instanceof Error?e.message:`Download failed`)),className:`flex items-center gap-1.5 text-fg-secondary transition-colors hover:text-fg`,children:[(0,D.jsx)(f,{className:`size-4`}),`Download`]})]})}function Pt({session:e,path:t,reveal:n,root:r,focused:i=!0,scrollDriver:a=!1,scrollReceiver:o=!1,scrollChannel:s=`profile`}){let c=ge(),l=bt(e,t,n,r,{focused:i}),u=Mt(e,t,r,l.model),d=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),[f,p]=(0,E.useState)(null),m=(0,E.useMemo)(()=>({session:e,path:t,root:r}),[e,t,r]),h=l.conflict!==null&&l.conflict.phase!==`unresolved`;if((0,E.useEffect)(()=>{if(!(!f||!l.model||h))return ht(f,{channel:s,target:m,driver:a,receiver:o},w.ScrollType.Immediate)},[f,l.model,h,s,m,a,o]),l.conflict&&l.conflict.phase!==`unresolved`)return(0,D.jsx)(ct,{session:e,path:t,buffer:l,focused:i});if(l.status===`binary`)return(0,D.jsx)(Nt,{message:`Binary file — use Download`,session:e,path:t,root:r,download:!0});if(l.status===`too-large`)return(0,D.jsx)(Nt,{message:`File too large to edit — use Download`,session:e,path:t,root:r,download:!0});if(l.status===`error`)return(0,D.jsx)(Nt,{message:l.errorMessage??`Failed to load file`,session:e,path:t,root:r});let g=l.peerBadge===`saved-elsewhere`?`Saved in another window`:l.peerBadge===`dirty-elsewhere`?`Also being edited in another window`:null;return(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[l.restoredNotice&&(0,D.jsxs)(`div`,{className:`flex items-center gap-3 bg-elevated px-3 py-1.5 text-xs text-fg-secondary`,children:[(0,D.jsx)(`span`,{children:`Restored unsaved changes`}),(0,D.jsx)(`button`,{type:`button`,onClick:l.discardRestore,className:`text-fg-muted transition-colors hover:text-fg`,children:`Discard`})]}),g&&(0,D.jsx)(`div`,{className:`bg-surface px-3 py-1 text-xs text-fg-muted`,children:g}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:l.model&&(0,D.jsx)(T,{path:l.model.uri.toString(),defaultValue:l.model.getValue(),theme:`puddle`,keepCurrentModel:!0,onMount:e=>{l.onMount(e),u(e),p(e)},loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),options:{automaticLayout:!0,fontFamily:d,fontSize:c.editorFontSize,...ot(c.editorTabSize),wordWrap:c.editorWordWrap?`on`:`off`,minimap:{enabled:!1},glyphMargin:!1,lineDecorationsWidth:10,fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})})]})}function k({children:e}){return(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center px-4 text-xs text-fg-muted`,children:e})}function Ft(e,t){let n=(0,E.useRef)(t);n.current=t,(0,E.useEffect)(()=>(je(e),()=>{n.current?.(),Ce(e)}),[e])}function It(e,t,n,r){let i=r.split(`/`).map(encodeURIComponent).join(`/`);return`${e}://${encodeURIComponent(t)}/${encodeURIComponent(n)}/${i}`}function Lt({session:e,refName:t,path:n,content:r}){let i=ge(),a=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);return(0,D.jsx)(T,{path:It(`puddle-view`,e,t,n),defaultValue:r,theme:Ne,loading:(0,D.jsx)(k,{children:`…`}),options:{readOnly:!0,automaticLayout:!0,fontFamily:a,fontSize:i.editorFontSize,...ot(i.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Rt({session:e,against:t,path:n,root:r,indexBase:i=!1}){let a=_(e,t,n,{root:r,enabled:!i}),o=h(e,n,{root:r,enabled:i}),s=i?o:a;return s.isPending?(0,D.jsx)(k,{children:`…`}):s.error?(0,D.jsx)(k,{children:s.error instanceof Error?s.error.message:`Failed to load`}):s.data.binary?(0,D.jsx)(k,{children:`Binary file — deleted`}):(0,D.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,D.jsx)(`div`,{className:`bg-surface px-4 py-1 text-xs text-fg-muted`,children:`Deleted`}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(Lt,{session:e,refName:`${t}:${r??``}`,path:n,content:s.data.content??``})})]})}function zt({session:e,against:t,path:n,basePath:r,root:i,indexBase:a=!1,focused:o=!0}){let s=ge(),c=bt(e,n,null,i,{focused:o}),l=_(e,t,r,{root:i,enabled:!a}),d=h(e,r,{root:i,enabled:a}),f=a?d:l,p=(0,E.useRef)(null);Ft(Me(e,n,i),()=>{let e=p.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),p.current=null});let m=(0,E.useRef)(c.save);m.current=c.save;let g=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]),v=f.error instanceof u&&f.error.status===404;return c.conflict&&c.conflict.phase!==`unresolved`?(0,D.jsx)(ct,{session:e,path:n,buffer:c,focused:o}):c.status===`binary`||f.data?.binary?(0,D.jsx)(k,{children:`Binary file`}):c.status===`too-large`?(0,D.jsx)(k,{children:`File too large to show`}):c.status===`error`?(0,D.jsx)(k,{children:c.errorMessage??`Failed to load file`}):v||a&&d.data&&!d.data.exists?(0,D.jsx)(Pt,{session:e,path:n,reveal:null,root:i,focused:o}):f.isPending||!c.model?(0,D.jsx)(k,{children:`…`}):f.error?(0,D.jsx)(k,{children:f.error instanceof Error?f.error.message:`Failed to load base`}):(0,D.jsx)(Te,{modifiedModelPath:c.model.uri.toString(),originalModelPath:It(`puddle-base`,e,`${t}:${i??``}`,r),original:f.data.content??``,language:c.model.getLanguageId(),theme:Ne,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(k,{children:`…`}),onMount:e=>{p.current=e,e.onDidDispose(()=>{p.current=null}),e.getModifiedEditor().addCommand(xe.CtrlCmd|Se.KeyS,()=>m.current())},options:{readOnly:!1,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:g,fontSize:s.editorFontSize,...ot(s.editorTabSize),wordWrap:s.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Bt({session:e,against:t,entry:n,root:r}){let i=ge(),a=n.old_path??n.path,o=_(e,t,a,{root:r,enabled:n.status!==`added`}),s=h(e,n.path,{root:r,enabled:n.status!==`deleted`}),c=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);if(n.status===`deleted`)return(0,D.jsx)(Rt,{session:e,against:t,path:a,root:r});if(s.isPending||n.status!==`added`&&o.isPending)return(0,D.jsx)(k,{children:`…`});if(s.error||o.error){let e=s.error??o.error;return(0,D.jsx)(k,{children:e instanceof Error?e.message:`Failed to load staged content`})}return s.data.binary||o.data?.binary?(0,D.jsx)(k,{children:`Binary file`}):n.status===`added`?(0,D.jsx)(Lt,{session:e,refName:`index:${r??``}`,path:n.path,content:s.data.content??``}):o.data?(0,D.jsx)(Te,{originalModelPath:It(`puddle-head`,e,`${t}:${r??``}`,a),modifiedModelPath:It(`puddle-index`,e,`${t}:${r??``}`,n.path),original:o.data.content??``,modified:s.data.content??``,theme:Ne,loading:(0,D.jsx)(k,{children:`…`}),options:{readOnly:!0,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:c,fontSize:i.editorFontSize,...ot(i.editorTabSize),wordWrap:i.editorWordWrap?`on`:`off`,minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}}):(0,D.jsx)(k,{children:`Failed to load HEAD content`})}function Vt({session:e,path:t,root:n,focused:r}){return Ft(Me(e,t,n)),(0,D.jsx)(Pt,{session:e,path:t,reveal:null,root:n,focused:r})}function Ht({session:e,against:t,entry:n,root:r,area:i,focused:a=!0}){if(i===`staged`)return(0,D.jsx)(Bt,{session:e,against:t,entry:n,root:r});switch(n.status){case`added`:return(0,D.jsx)(Vt,{session:e,path:n.path,root:r,focused:a});case`deleted`:return(0,D.jsx)(Rt,{session:e,against:t,path:n.path,root:r,indexBase:i===`unstaged`});case`modified`:case`renamed`:return(0,D.jsx)(zt,{session:e,against:t,path:n.path,basePath:n.old_path??n.path,root:r,indexBase:i===`unstaged`,focused:a});default:return null}}function Ut({session:e,sha:t,path:n,root:r}){let i=_(e,t,n,{root:r});return i.isPending?(0,D.jsx)(k,{children:`…`}):i.error?(0,D.jsx)(k,{children:i.error instanceof Error?i.error.message:`Failed to load file`}):i.data.binary?(0,D.jsx)(k,{children:`Binary file`}):(0,D.jsx)(Lt,{session:e,refName:`${t}:${r??``}`,path:n,content:i.data.content??``})}function Wt({session:e,originalRef:t,originalPath:n,originalContent:r,modifiedRef:i,modifiedPath:a,modifiedContent:o,root:s}){let c=ge(),l=(0,E.useRef)(null),u=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);return(0,E.useEffect)(()=>()=>{let e=l.current;if(!e)return;let t=e.getModel();e.setModel(null),t?.original.dispose(),t?.modified.dispose(),l.current=null},[]),(0,D.jsx)(Te,{originalModelPath:It(`puddle-hist-orig`,e,`${t}:${s??``}`,n),modifiedModelPath:It(`puddle-hist-mod`,e,`${i}:${s??``}`,a),original:r,modified:o,theme:Ne,keepCurrentOriginalModel:!0,keepCurrentModifiedModel:!0,loading:(0,D.jsx)(k,{children:`…`}),onMount:e=>{l.current=e,e.onDidDispose(()=>{l.current=null})},options:{readOnly:!0,originalEditable:!1,renderSideBySide:!0,automaticLayout:!0,fontFamily:u,fontSize:c.editorFontSize,...ot(c.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1}})}function Gt({session:e,sha:t,path:n,basePath:r,root:i}){let a=_(e,`${t}^`,r,{root:i}),o=_(e,t,n,{root:i});return a.error instanceof u&&a.error.status===404?(0,D.jsx)(Ut,{session:e,sha:t,path:n,root:i}):a.isPending||o.isPending?(0,D.jsx)(k,{children:`…`}):a.error?(0,D.jsx)(k,{children:a.error instanceof Error?a.error.message:`Failed to load original`}):o.error?(0,D.jsx)(k,{children:o.error instanceof Error?o.error.message:`Failed to load file`}):a.data.binary||o.data.binary?(0,D.jsx)(k,{children:`Binary file`}):(0,D.jsx)(Wt,{session:e,originalRef:`${t}^`,originalPath:r,originalContent:a.data.content??``,modifiedRef:t,modifiedPath:n,modifiedContent:o.data.content??``,root:i})}function Kt({session:e,sha:t,entry:n,isRootCommit:r,root:i}){switch(te(n.status,r)){case`added`:return(0,D.jsx)(Ut,{session:e,sha:t,path:n.path,root:i});case`deleted`:return(0,D.jsx)(Rt,{session:e,against:`${t}^`,path:n.path,root:i});case`modified`:case`renamed`:return(0,D.jsx)(Gt,{session:e,sha:t,path:n.path,basePath:n.old_path??n.path,root:i});default:return null}}function qt({session:e,sha:t,path:n,root:r}){let i=p(e,t,r);if(i.isPending)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:`Loading commit…`});if(i.error)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:i.error instanceof Error?i.error.message:`Failed to load commit`});let a=i.data.files.find(e=>e.path===n);return a?(0,D.jsx)(`div`,{className:`h-full`,children:(0,D.jsx)(Kt,{session:e,sha:t,entry:a,isRootCommit:i.data.parents.length===0,root:r})}):(0,D.jsxs)(`div`,{className:`flex h-full items-center justify-center px-4 text-center text-xs text-fg-muted`,children:[(0,D.jsx)(`span`,{className:`text-fg-secondary`,children:n}),` is not part of`,` `,(0,D.jsx)(`span`,{className:`font-mono`,children:t.slice(0,7)}),`.`]})}function Jt({session:e,path:t,root:n,area:r,focused:i=!0}){let a=v(e,{root:n,against:r===void 0?`base`:`head`,area:r});if(a.isPending)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:`Loading diff…`});if(a.error)return(0,D.jsx)(`div`,{className:`px-4 py-3 text-xs text-fg-muted`,children:a.error instanceof Error?a.error.message:`Failed to load diff`});let o=a.data.entries.find(e=>e.path===t);return o?(0,D.jsx)(`div`,{className:`h-full`,children:(0,D.jsx)(Ht,{session:e,against:a.data.against,entry:o,root:n,area:r,focused:i})}):(0,D.jsxs)(`div`,{className:`flex h-full items-center justify-center px-4 text-center text-xs text-fg-muted`,children:[`No changes to `,(0,D.jsx)(`span`,{className:`mx-1 text-fg-secondary`,children:t}),` against the base.`]})}var Yt=800;function Xt({name:e}){let t=ge(),n=l(),r=ie(n,e),a=c(),o=s(`editor.save`),u=(0,E.useRef)(null),d=(0,E.useRef)(null),f=(0,E.useMemo)(()=>getComputedStyle(document.documentElement).getPropertyValue(`--font-mono`).trim()||void 0,[]);if((0,E.useEffect)(()=>{if(n===null)return;let t=ve(t=>{x(n,e,t).catch(e=>i.error(e instanceof Error?e.message:`Draft not saved`))},Yt);return d.current=t,()=>{t.flush(),d.current=null}},[n,e]),n===null)return null;if(r.error)return(0,D.jsx)(`div`,{className:`flex h-full items-center justify-center bg-ground text-sm text-fg-muted`,children:r.error instanceof Error?r.error.message:`Failed to load the draft`});if(r.data===void 0)return(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`});let p=()=>{let t=u.current;t&&(d.current?.flush(),re({name:e,content:t.getValue()}))};return(0,D.jsxs)(`div`,{className:`flex h-full flex-col bg-ground`,children:[(0,D.jsxs)(`div`,{className:`bg-surface px-3 py-1 text-xs text-fg-muted`,children:[`Draft — not in any worktree; `,o,` saves it into one`]}),(0,D.jsx)(`div`,{className:`min-h-0 flex-1`,children:(0,D.jsx)(T,{path:`puddle-untitled://${n}/${e}`,defaultValue:r.data.content,theme:Ne,keepCurrentModel:!1,loading:(0,D.jsx)(`div`,{className:`p-3 text-xs text-fg-muted`,children:`…`}),onMount:t=>{u.current=t,b(e,t.getValue()),vt(t,{onSave:p})},onChange:t=>{let r=t??``;b(e,r),S(a,n,e,r),d.current?.(r)},options:{automaticLayout:!0,fontFamily:f,fontSize:t.editorFontSize,...ot(t.editorTabSize),minimap:{enabled:!1},fixedOverflowWidgets:!0,scrollBeyondLastLine:!1,wordWrap:t.editorWordWrap?`on`:`off`}})})]})}function Zt(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function Qt(e){if(Array.isArray(e))return e}function $t(e,t){var n=e==null?null:typeof Symbol<`u`&&e[Symbol.iterator]||e[`@@iterator`];if(n!=null){var r,i,a,o,s=[],c=!0,l=!1;try{if(a=(n=n.call(e)).next,t!==0)for(;!(c=(r=a.call(n)).done)&&(s.push(r.value),s.length!==t);c=!0);}catch(e){l=!0,i=e}finally{try{if(!c&&n.return!=null&&(o=n.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}function en(){throw TypeError(`Invalid attempt to destructure non-iterable instance.
2
2
  In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function tn(e,t){return Qt(e)||$t(e,t)||nn(e,t)||en()}function nn(e,t){if(e){if(typeof e==`string`)return Zt(e,t);var n={}.toString.call(e).slice(8,-1);return n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`?Array.from(e):n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Zt(e,t):void 0}}var rn=Object.entries,an=Object.setPrototypeOf,on=Object.isFrozen,sn=Object.getPrototypeOf,cn=Object.getOwnPropertyDescriptor,ln=Object.freeze,un=Object.seal,dn=Object.create,fn=typeof Reflect<`u`&&Reflect,pn=fn.apply,mn=fn.construct;ln||=function(e){return e},un||=function(e){return e},pn||=function(e,t){var n=[...arguments].slice(2);return e.apply(t,n)},mn||=function(e){return new e(...[...arguments].slice(1))};var hn=Fn(Array.prototype.forEach),gn=Fn(Array.prototype.lastIndexOf),_n=Fn(Array.prototype.pop),vn=Fn(Array.prototype.push),yn=Fn(Array.prototype.splice),bn=Array.isArray,xn=Fn(String.prototype.toLowerCase),Sn=Fn(String.prototype.toString),Cn=Fn(String.prototype.match),wn=Fn(String.prototype.replace),Tn=Fn(String.prototype.indexOf),En=Fn(String.prototype.trim),Dn=Fn(Number.prototype.toString),On=Fn(Boolean.prototype.toString),kn=typeof BigInt>`u`?null:Fn(BigInt.prototype.toString),An=typeof Symbol>`u`?null:Fn(Symbol.prototype.toString),jn=Fn(Object.prototype.hasOwnProperty),Mn=Fn(Object.prototype.toString),Nn=Fn(RegExp.prototype.test),Pn=In(TypeError);function Fn(e){return function(t){t instanceof RegExp&&(t.lastIndex=0);var n=[...arguments].slice(1);return pn(e,t,n)}}function In(e){return function(){return mn(e,[...arguments])}}function A(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:xn;if(an&&an(e,null),!bn(t))return e;let r=t.length;for(;r--;){let i=t[r];if(typeof i==`string`){let e=n(i);e!==i&&(on(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Ln(e){for(let t=0;t<e.length;t++)jn(e,t)||(e[t]=null);return e}function Rn(e){let t=dn(null);for(let r of rn(e)){var n=tn(r,2);let i=n[0],a=n[1];jn(e,i)&&(bn(a)?t[i]=Ln(a):a&&typeof a==`object`&&a.constructor===Object?t[i]=Rn(a):t[i]=a)}return t}function zn(e){switch(typeof e){case`string`:return e;case`number`:return Dn(e);case`boolean`:return On(e);case`bigint`:return kn?kn(e):`0`;case`symbol`:return An?An(e):`Symbol()`;case`undefined`:return Mn(e);case`function`:case`object`:{if(e===null)return Mn(e);let t=e,n=Bn(t,`toString`);if(typeof n==`function`){let e=n(t);return typeof e==`string`?e:Mn(e)}return Mn(e)}default:return Mn(e)}}function Bn(e,t){for(;e!==null;){let n=cn(e,t);if(n){if(n.get)return Fn(n.get);if(typeof n.value==`function`)return Fn(n.value)}e=sn(e)}function n(){return null}return n}function Vn(e){try{return Nn(e,``),!0}catch{return!1}}var Hn=ln(`a.abbr.acronym.address.area.article.aside.audio.b.bdi.bdo.big.blink.blockquote.body.br.button.canvas.caption.center.cite.code.col.colgroup.content.data.datalist.dd.decorator.del.details.dfn.dialog.dir.div.dl.dt.element.em.fieldset.figcaption.figure.font.footer.form.h1.h2.h3.h4.h5.h6.head.header.hgroup.hr.html.i.img.input.ins.kbd.label.legend.li.main.map.mark.marquee.menu.menuitem.meter.nav.nobr.ol.optgroup.option.output.p.picture.pre.progress.q.rp.rt.ruby.s.samp.search.section.select.shadow.slot.small.source.spacer.span.strike.strong.style.sub.summary.sup.table.tbody.td.template.textarea.tfoot.th.thead.time.tr.track.tt.u.ul.var.video.wbr`.split(`.`)),Un=ln(`svg.a.altglyph.altglyphdef.altglyphitem.animatecolor.animatemotion.animatetransform.circle.clippath.defs.desc.ellipse.enterkeyhint.exportparts.filter.font.g.glyph.glyphref.hkern.image.inputmode.line.lineargradient.marker.mask.metadata.mpath.part.path.pattern.polygon.polyline.radialgradient.rect.stop.style.switch.symbol.text.textpath.title.tref.tspan.view.vkern`.split(`.`)),Wn=ln([`feBlend`,`feColorMatrix`,`feComponentTransfer`,`feComposite`,`feConvolveMatrix`,`feDiffuseLighting`,`feDisplacementMap`,`feDistantLight`,`feDropShadow`,`feFlood`,`feFuncA`,`feFuncB`,`feFuncG`,`feFuncR`,`feGaussianBlur`,`feImage`,`feMerge`,`feMergeNode`,`feMorphology`,`feOffset`,`fePointLight`,`feSpecularLighting`,`feSpotLight`,`feTile`,`feTurbulence`]),Gn=ln([`animate`,`color-profile`,`cursor`,`discard`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`foreignobject`,`hatch`,`hatchpath`,`mesh`,`meshgradient`,`meshpatch`,`meshrow`,`missing-glyph`,`script`,`set`,`solidcolor`,`unknown`,`use`]),Kn=ln(`math.menclose.merror.mfenced.mfrac.mglyph.mi.mlabeledtr.mmultiscripts.mn.mo.mover.mpadded.mphantom.mroot.mrow.ms.mspace.msqrt.mstyle.msub.msup.msubsup.mtable.mtd.mtext.mtr.munder.munderover.mprescripts`.split(`.`)),qn=ln([`maction`,`maligngroup`,`malignmark`,`mlongdiv`,`mscarries`,`mscarry`,`msgroup`,`mstack`,`msline`,`msrow`,`semantics`,`annotation`,`annotation-xml`,`mprescripts`,`none`]),Jn=ln([`#text`]),Yn=ln(`accept.action.align.alt.autocapitalize.autocomplete.autopictureinpicture.autoplay.background.bgcolor.border.capture.cellpadding.cellspacing.checked.cite.class.clear.color.cols.colspan.command.commandfor.controls.controlslist.coords.crossorigin.datetime.decoding.default.dir.disabled.disablepictureinpicture.disableremoteplayback.download.draggable.enctype.enterkeyhint.exportparts.face.for.headers.height.hidden.high.href.hreflang.id.inert.inputmode.integrity.ismap.kind.label.lang.list.loading.loop.low.max.maxlength.media.method.min.minlength.multiple.muted.name.nonce.noshade.novalidate.nowrap.open.optimum.part.pattern.placeholder.playsinline.popover.popovertarget.popovertargetaction.poster.preload.pubdate.radiogroup.readonly.rel.required.rev.reversed.role.rows.rowspan.spellcheck.scope.selected.shape.size.sizes.slot.span.srclang.start.src.srcset.step.style.summary.tabindex.title.translate.type.usemap.valign.value.width.wrap.xmlns`.split(`.`)),Xn=ln(`accent-height.accumulate.additive.alignment-baseline.amplitude.ascent.attributename.attributetype.azimuth.basefrequency.baseline-shift.begin.bias.by.class.clip.clippathunits.clip-path.clip-rule.color.color-interpolation.color-interpolation-filters.color-profile.color-rendering.cx.cy.d.dx.dy.diffuseconstant.direction.display.divisor.dominant-baseline.dur.edgemode.elevation.end.exponent.fill.fill-opacity.fill-rule.filter.filterunits.flood-color.flood-opacity.font-family.font-size.font-size-adjust.font-stretch.font-style.font-variant.font-weight.fx.fy.g1.g2.glyph-name.glyphref.gradientunits.gradienttransform.height.href.id.image-rendering.in.in2.intercept.k.k1.k2.k3.k4.kerning.keypoints.keysplines.keytimes.lang.lengthadjust.letter-spacing.kernelmatrix.kernelunitlength.lighting-color.local.marker-end.marker-mid.marker-start.markerheight.markerunits.markerwidth.maskcontentunits.maskunits.max.mask.mask-type.media.method.mode.min.name.numoctaves.offset.operator.opacity.order.orient.orientation.origin.overflow.paint-order.path.pathlength.patterncontentunits.patterntransform.patternunits.points.preservealpha.preserveaspectratio.primitiveunits.r.rx.ry.radius.refx.refy.repeatcount.repeatdur.restart.result.rotate.scale.seed.shape-rendering.slope.specularconstant.specularexponent.spreadmethod.startoffset.stddeviation.stitchtiles.stop-color.stop-opacity.stroke-dasharray.stroke-dashoffset.stroke-linecap.stroke-linejoin.stroke-miterlimit.stroke-opacity.stroke.stroke-width.style.surfacescale.systemlanguage.tabindex.tablevalues.targetx.targety.transform.transform-origin.text-anchor.text-decoration.text-orientation.text-rendering.textlength.type.u1.u2.unicode.values.viewbox.visibility.version.vert-adv-y.vert-origin-x.vert-origin-y.width.word-spacing.wrap.writing-mode.xchannelselector.ychannelselector.x.x1.x2.xmlns.y.y1.y2.z.zoomandpan`.split(`.`)),Zn=ln(`accent.accentunder.align.bevelled.close.columnalign.columnlines.columnspacing.columnspan.denomalign.depth.dir.display.displaystyle.encoding.fence.frame.height.href.id.largeop.length.linethickness.lquote.lspace.mathbackground.mathcolor.mathsize.mathvariant.maxsize.minsize.movablelimits.notation.numalign.open.rowalign.rowlines.rowspacing.rowspan.rspace.rquote.scriptlevel.scriptminsize.scriptsizemultiplier.selection.separator.separators.stretchy.subscriptshift.supscriptshift.symmetric.voffset.width.xmlns`.split(`.`)),Qn=ln([`xlink:href`,`xml:id`,`xlink:title`,`xml:space`,`xmlns:xlink`]),$n=un(/{{[\w\W]*|^[\w\W]*}}/g),er=un(/<%[\w\W]*|^[\w\W]*%>/g),tr=un(/\${[\w\W]*/g),nr=un(/^data-[\-\w.\u00B7-\uFFFF]+$/),rr=un(/^aria-[\-\w]+$/),ir=un(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ar=un(/^(?:\w+script|data):/i),or=un(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),sr=un(/^html$/i),cr=un(/^[a-z][.\w]*(-[.\w]+)+$/i),lr=un(/<[/\w!]/g),ur=un(/<[/\w]/g),dr=un(/<\/no(script|embed|frames)/i),fr=un(/\/>/i),pr={element:1,attribute:2,text:3,cdataSection:4,entityReference:5,entityNode:6,processingInstruction:7,comment:8,document:9,documentType:10,documentFragment:11,notation:12},mr=function(){return typeof window>`u`?null:window},hr=function(e,t){if(typeof e!=`object`||typeof e.createPolicy!=`function`)return null;let n=null,r=`data-tt-policy-suffix`;t&&t.hasAttribute(r)&&(n=t.getAttribute(r));let i=`dompurify`+(n?`#`+n:``);try{return e.createPolicy(i,{createHTML(e){return e},createScriptURL(e){return e}})}catch{return console.warn(`TrustedTypes policy `+i+` could not be created.`),null}},gr=function(){return{afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},_r=function(e,t,n,r){return jn(e,t)&&bn(e[t])?A(r.base?Rn(r.base):{},e[t],r.transform):n};function vr(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:mr(),t=e=>vr(e);if(t.version=`3.4.12`,t.removed=[],!e||!e.document||e.document.nodeType!==pr.document||!e.Element)return t.isSupported=!1,t;let n=e.document,r=n,i=r.currentScript;e.DocumentFragment;let a=e.HTMLTemplateElement,o=e.Node,s=e.Element,c=e.NodeFilter;e.NamedNodeMap===void 0&&(e.NamedNodeMap||e.MozNamedAttrMap),e.HTMLFormElement;let l=e.DOMParser,u=e.trustedTypes,d=s.prototype,f=Bn(d,`cloneNode`),p=Bn(d,`remove`),m=Bn(d,`nextSibling`),h=Bn(d,`childNodes`),g=Bn(d,`parentNode`),_=Bn(d,`shadowRoot`),v=Bn(d,`attributes`),y=o&&o.prototype?Bn(o.prototype,`nodeType`):null,b=o&&o.prototype?Bn(o.prototype,`nodeName`):null;if(typeof a==`function`){let e=n.createElement(`template`);e.content&&e.content.ownerDocument&&(n=e.content.ownerDocument)}let x,S=``,ee,te=!1,ne=0,re=function(){if(ne>0)throw Pn(`A configured TRUSTED_TYPES_POLICY callback (createHTML or createScriptURL) must not call DOMPurify.sanitize, as that causes infinite recursion. Do not pass a policy whose callbacks wrap DOMPurify as TRUSTED_TYPES_POLICY; see the "DOMPurify and Trusted Types" section of the README.`)},ie=function(e){re(),ne++;try{return x.createHTML(e)}finally{ne--}},ae=function(e){re(),ne++;try{return x.createScriptURL(e)}finally{ne--}},oe=function(){return te||=(ee=hr(u,i),!0),ee},se=n,ce=se.implementation,le=se.createNodeIterator,ue=se.createDocumentFragment,de=se.getElementsByTagName,fe=r.importNode,C=gr();t.isSupported=typeof rn==`function`&&typeof g==`function`&&ce&&ce.createHTMLDocument!==void 0;let pe=$n,me=er,he=tr,ge=nr,_e=rr,ve=ar,ye=or,be=cr,xe=ir,w=null,Se=A({},[...Hn,...Un,...Wn,...Kn,...Jn]),Ce=null,we=A({},[...Yn,...Xn,...Zn,...Qn]),T=Object.seal(dn(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Te=null,Ee=null,De=Object.seal(dn(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}})),Oe=!0,ke=!0,Ae=!1,je=!0,Me=!1,Ne=!0,Pe=!1,Fe=!1,Ie=null,Le=null,Re=!1,ze=!1,Be=!1,Ve=!1,He=!0,E=!1,Ue=`user-content-`,We=!0,Ge=!1,Ke={},qe=null,Je=A({},`annotation-xml.audio.colgroup.desc.foreignobject.head.iframe.math.mi.mn.mo.ms.mtext.noembed.noframes.noscript.plaintext.script.selectedcontent.style.svg.template.thead.title.video.xmp`.split(`.`)),Ye=null,Xe=A({},[`audio`,`video`,`img`,`source`,`image`,`track`]),Ze=null,Qe=A({},[`alt`,`class`,`for`,`id`,`label`,`name`,`pattern`,`placeholder`,`role`,`summary`,`title`,`value`,`style`,`xmlns`]),$e=`http://www.w3.org/1998/Math/MathML`,et=`http://www.w3.org/2000/svg`,tt=`http://www.w3.org/1999/xhtml`,nt=tt,rt=!1,it=null,at=A({},[$e,et,tt],Sn),ot=ln([`mi`,`mo`,`mn`,`ms`,`mtext`]),D=A({},ot),st=ln([`annotation-xml`]),ct=A({},st),lt=A({},[`title`,`style`,`font`,`a`,`script`]),ut=null,dt=[`application/xhtml+xml`,`text/html`],O=null,ft=null,pt=n.createElement(`form`),mt=function(e){return e instanceof RegExp||e instanceof Function},ht=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};if(ft&&ft===e)return;(!e||typeof e!=`object`)&&(e={}),e=Rn(e),ut=dt.indexOf(e.PARSER_MEDIA_TYPE)===-1?`text/html`:e.PARSER_MEDIA_TYPE,O=ut===`application/xhtml+xml`?Sn:xn,w=_r(e,`ALLOWED_TAGS`,Se,{transform:O}),Ce=_r(e,`ALLOWED_ATTR`,we,{transform:O}),it=_r(e,`ALLOWED_NAMESPACES`,at,{transform:Sn}),Ze=_r(e,`ADD_URI_SAFE_ATTR`,Qe,{transform:O,base:Qe}),Ye=_r(e,`ADD_DATA_URI_TAGS`,Xe,{transform:O,base:Xe}),qe=_r(e,`FORBID_CONTENTS`,Je,{transform:O}),Te=_r(e,`FORBID_TAGS`,Rn({}),{transform:O}),Ee=_r(e,`FORBID_ATTR`,Rn({}),{transform:O}),Ke=jn(e,`USE_PROFILES`)?e.USE_PROFILES&&typeof e.USE_PROFILES==`object`?Rn(e.USE_PROFILES):e.USE_PROFILES:!1,Oe=e.ALLOW_ARIA_ATTR!==!1,ke=e.ALLOW_DATA_ATTR!==!1,Ae=e.ALLOW_UNKNOWN_PROTOCOLS||!1,je=e.ALLOW_SELF_CLOSE_IN_ATTR!==!1,Me=e.SAFE_FOR_TEMPLATES||!1,Ne=e.SAFE_FOR_XML!==!1,Pe=e.WHOLE_DOCUMENT||!1,ze=e.RETURN_DOM||!1,Be=e.RETURN_DOM_FRAGMENT||!1,Ve=e.RETURN_TRUSTED_TYPE||!1,Re=e.FORCE_BODY||!1,He=e.SANITIZE_DOM!==!1,E=e.SANITIZE_NAMED_PROPS||!1,We=e.KEEP_CONTENT!==!1,Ge=e.IN_PLACE||!1,xe=Vn(e.ALLOWED_URI_REGEXP)?e.ALLOWED_URI_REGEXP:ir,nt=typeof e.NAMESPACE==`string`?e.NAMESPACE:tt,D=jn(e,`MATHML_TEXT_INTEGRATION_POINTS`)&&e.MATHML_TEXT_INTEGRATION_POINTS&&typeof e.MATHML_TEXT_INTEGRATION_POINTS==`object`?Rn(e.MATHML_TEXT_INTEGRATION_POINTS):A({},ot),ct=jn(e,`HTML_INTEGRATION_POINTS`)&&e.HTML_INTEGRATION_POINTS&&typeof e.HTML_INTEGRATION_POINTS==`object`?Rn(e.HTML_INTEGRATION_POINTS):A({},st);let t=jn(e,`CUSTOM_ELEMENT_HANDLING`)&&e.CUSTOM_ELEMENT_HANDLING&&typeof e.CUSTOM_ELEMENT_HANDLING==`object`?Rn(e.CUSTOM_ELEMENT_HANDLING):dn(null);if(T=dn(null),jn(t,`tagNameCheck`)&&mt(t.tagNameCheck)&&(T.tagNameCheck=t.tagNameCheck),jn(t,`attributeNameCheck`)&&mt(t.attributeNameCheck)&&(T.attributeNameCheck=t.attributeNameCheck),jn(t,`allowCustomizedBuiltInElements`)&&typeof t.allowCustomizedBuiltInElements==`boolean`&&(T.allowCustomizedBuiltInElements=t.allowCustomizedBuiltInElements),un(T),Me&&(ke=!1),Be&&(ze=!0),Ke&&(w=A({},Jn),Ce=dn(null),Ke.html===!0&&(A(w,Hn),A(Ce,Yn)),Ke.svg===!0&&(A(w,Un),A(Ce,Xn),A(Ce,Qn)),Ke.svgFilters===!0&&(A(w,Wn),A(Ce,Xn),A(Ce,Qn)),Ke.mathMl===!0&&(A(w,Kn),A(Ce,Zn),A(Ce,Qn))),De.tagCheck=null,De.attributeCheck=null,jn(e,`ADD_TAGS`)&&(typeof e.ADD_TAGS==`function`?De.tagCheck=e.ADD_TAGS:bn(e.ADD_TAGS)&&(w===Se&&(w=Rn(w)),A(w,e.ADD_TAGS,O))),jn(e,`ADD_ATTR`)&&(typeof e.ADD_ATTR==`function`?De.attributeCheck=e.ADD_ATTR:bn(e.ADD_ATTR)&&(Ce===we&&(Ce=Rn(Ce)),A(Ce,e.ADD_ATTR,O))),jn(e,`ADD_URI_SAFE_ATTR`)&&bn(e.ADD_URI_SAFE_ATTR)&&A(Ze,e.ADD_URI_SAFE_ATTR,O),jn(e,`FORBID_CONTENTS`)&&bn(e.FORBID_CONTENTS)&&(qe===Je&&(qe=Rn(qe)),A(qe,e.FORBID_CONTENTS,O)),jn(e,`ADD_FORBID_CONTENTS`)&&bn(e.ADD_FORBID_CONTENTS)&&(qe===Je&&(qe=Rn(qe)),A(qe,e.ADD_FORBID_CONTENTS,O)),We&&(w[`#text`]=!0),Pe&&A(w,[`html`,`head`,`body`]),w.table&&(A(w,[`tbody`]),delete Te.tbody),e.TRUSTED_TYPES_POLICY){if(typeof e.TRUSTED_TYPES_POLICY.createHTML!=`function`)throw Pn(`TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.`);if(typeof e.TRUSTED_TYPES_POLICY.createScriptURL!=`function`)throw Pn(`TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.`);let t=x;x=e.TRUSTED_TYPES_POLICY;try{S=ie(``)}catch(e){throw x=t,e}}else e.TRUSTED_TYPES_POLICY===null?(x=void 0,S=``):(x===void 0&&(x=oe()),x&&typeof S==`string`&&(S=ie(``)));ln&&ln(e),ft=e},gt=A({},[...Un,...Wn,...Gn]),_t=A({},[...Kn,...qn]),vt=function(e,t,n){return t.namespaceURI===tt?e===`svg`:t.namespaceURI===$e?e===`svg`&&(n===`annotation-xml`||D[n]):!!gt[e]},yt=function(e,t,n){return t.namespaceURI===tt?e===`math`:t.namespaceURI===et?e===`math`&&ct[n]:!!_t[e]},bt=function(e,t,n){return t.namespaceURI===et&&!ct[n]||t.namespaceURI===$e&&!D[n]?!1:!_t[e]&&(lt[e]||!gt[e])},xt=function(e){let t=g(e);(!t||!t.tagName)&&(t={namespaceURI:nt,tagName:`template`});let n=xn(e.tagName),r=xn(t.tagName);return it[e.namespaceURI]?e.namespaceURI===et?vt(n,t,r):e.namespaceURI===$e?yt(n,t,r):e.namespaceURI===tt?bt(n,t,r):!!(ut===`application/xhtml+xml`&&it[e.namespaceURI]):!1},St=function(e){vn(t.removed,{element:e});try{g(e).removeChild(e)}catch{if(p(e),!g(e))throw Pn(`a node selected for removal could not be detached from its tree and cannot be safely returned; refusing to sanitize in place`)}},Ct=function(e){Et(e);let t=h(e);if(t){let e=[];hn(t,t=>{vn(e,t)}),hn(e,e=>{try{p(e)}catch{}})}let n=v(e);if(n)for(let t=n.length-1;t>=0;--t){let r=n[t],i=r&&r.name;if(typeof i==`string`)try{e.removeAttribute(i)}catch{}}},wt=function(e,n){try{vn(t.removed,{attribute:n.getAttributeNode(e),from:n})}catch{vn(t.removed,{attribute:null,from:n})}if(n.removeAttribute(e),e===`is`)if(ze||Be)try{St(n)}catch{}else try{n.setAttribute(e,``)}catch{}},Tt=function(e){let t=v(e);if(t)for(let n=t.length-1;n>=0;--n){let r=t[n],i=r&&r.name;if(!(typeof i!=`string`||Ce[O(i)]))try{e.removeAttribute(i)}catch{}}},Et=function(e){let t=[e];for(;t.length>0;){let e=t.pop();(y?y(e):e.nodeType)===pr.element&&Tt(e);let n=h(e);if(n)for(let e=n.length-1;e>=0;--e)t.push(n[e])}},Dt=function(e){if(!Ne)return;let t=[e];for(;t.length>0;){let e=t.pop(),n=y?y(e):e.nodeType;if(n===pr.processingInstruction||n===pr.comment&&Nn(ur,e.data)){try{p(e)}catch{}continue}if(n===pr.element){let t=e,n=O(b?b(e):e.nodeName);try{t.hasAttribute&&t.hasAttribute(`patchsrc`)&&t.removeAttribute(`patchsrc`),t.hasAttribute&&t.hasAttribute(`for`)&&n!==`label`&&n!==`output`&&t.removeAttribute(`for`)}catch{}}let r=h(e);if(r)for(let e=r.length-1;e>=0;--e)t.push(r[e])}},Ot=function(e){let t=null,r=null;if(Re)e=`<remove></remove>`+e;else{let t=Cn(e,/^[\r\n\t ]+/);r=t&&t[0]}ut===`application/xhtml+xml`&&nt===tt&&(e=`<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>`+e+`</body></html>`);let i=x?ie(e):e;if(nt===tt)try{t=new l().parseFromString(i,ut)}catch{}if(!t||!t.documentElement){t=ce.createDocument(nt,`template`,null);try{t.documentElement.innerHTML=rt?S:i}catch{}}let a=t.body||t.documentElement;return e&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),nt===tt?de.call(t,Pe?`html`:`body`)[0]:Pe?t.documentElement:a},kt=function(e){return le.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},At=function(e){return e=wn(e,pe,` `),e=wn(e,me,` `),e=wn(e,he,` `),e},jt=function(e){e.normalize();let t=le.call(e.ownerDocument||e,e,c.SHOW_TEXT|c.SHOW_COMMENT|c.SHOW_CDATA_SECTION|c.SHOW_PROCESSING_INSTRUCTION,null),n=t.nextNode();for(;n;)n.data=At(n.data),n=t.nextNode();let r=e.querySelectorAll?.call(e,`template`);r&&hn(r,e=>{Nt(e.content)&&jt(e.content)})},Mt=function(e){let t=b?b(e):null;return typeof t!=`string`||O(t)!==`form`?!1:typeof e.nodeName!=`string`||typeof e.textContent!=`string`||typeof e.removeChild!=`function`||e.attributes!==v(e)||typeof e.removeAttribute!=`function`||typeof e.setAttribute!=`function`||typeof e.namespaceURI!=`string`||typeof e.insertBefore!=`function`||typeof e.hasChildNodes!=`function`||e.nodeType!==y(e)||e.childNodes!==h(e)},Nt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return y(e)===pr.documentFragment}catch{return!1}},Pt=function(e){if(!y||typeof e!=`object`||!e)return!1;try{return typeof y(e)==`number`}catch{return!1}};function k(e,n,r){e.length!==0&&hn(e,e=>{e.call(t,n,r,ft)})}let Ft=function(e,t){return!!(Ne&&e.hasChildNodes()&&!Pt(e.firstElementChild)&&Nn(lr,e.textContent)&&Nn(lr,e.innerHTML)||Ne&&e.namespaceURI===tt&&t===`style`&&Pt(e.firstElementChild)||e.nodeType===pr.processingInstruction||Ne&&e.nodeType===pr.comment&&Nn(ur,e.data))},It=function(e,t){if(!Te[t]&&Bt(t)&&(T.tagNameCheck instanceof RegExp&&Nn(T.tagNameCheck,t)||T.tagNameCheck instanceof Function&&T.tagNameCheck(t)))return!1;if(We&&!qe[t]){let t=g(e),n=h(e);if(n&&t){let r=n.length;for(let i=r-1;i>=0;--i){let r=Ge?n[i]:f(n[i],!0);t.insertBefore(r,m(e))}}}return St(e),!0},Lt=function(e,n){if(k(C.beforeSanitizeElements,e,null),e!==n&&g(e)===null)return!0;if(Mt(e))return St(e),!0;let r=O(b?b(e):e.nodeName);if(k(C.uponSanitizeElement,e,{tagName:r,allowedTags:w}),e!==n&&g(e)===null)return!0;if(Ft(e,r))return St(e),!0;if(Te[r]||!(De.tagCheck instanceof Function&&De.tagCheck(r))&&!w[r]){let t=It(e,r);return t===!1&&k(C.afterSanitizeElements,e,null),t}if((y?y(e):e.nodeType)===pr.element&&!xt(e)||(r===`noscript`||r===`noembed`||r===`noframes`)&&Nn(dr,e.innerHTML))return St(e),!0;if(Me&&e.nodeType===pr.text){let n=At(e.textContent);e.textContent!==n&&(vn(t.removed,{element:e.cloneNode()}),e.textContent=n)}return k(C.afterSanitizeElements,e,null),!1},Rt=function(e,t,r){if(Ee[t]||Ne&&t===`patchsrc`||Ne&&t===`for`&&e!==`label`&&e!==`output`||He&&(t===`id`||t===`name`)&&(r in n||r in pt))return!1;let i=Ce[t]||De.attributeCheck instanceof Function&&De.attributeCheck(t,e);if(!(ke&&Nn(ge,t))&&!(Oe&&Nn(_e,t))){if(!i){if(!(Bt(e)&&(T.tagNameCheck instanceof RegExp&&Nn(T.tagNameCheck,e)||T.tagNameCheck instanceof Function&&T.tagNameCheck(e))&&(T.attributeNameCheck instanceof RegExp&&Nn(T.attributeNameCheck,t)||T.attributeNameCheck instanceof Function&&T.attributeNameCheck(t,e))||t===`is`&&T.allowCustomizedBuiltInElements&&(T.tagNameCheck instanceof RegExp&&Nn(T.tagNameCheck,r)||T.tagNameCheck instanceof Function&&T.tagNameCheck(r))))return!1}else if(!Ze[t]&&!Nn(xe,wn(r,ye,``))&&!((t===`src`||t===`xlink:href`||t===`href`)&&e!==`script`&&Tn(r,`data:`)===0&&Ye[e])&&!(Ae&&!Nn(ve,wn(r,ye,``)))&&r)return!1}return!0},zt=A({},[`annotation-xml`,`color-profile`,`font-face`,`font-face-format`,`font-face-name`,`font-face-src`,`font-face-uri`,`missing-glyph`]),Bt=function(e){return!zt[xn(e)]&&Nn(be,e)},Vt=function(e,t,n,r){if(x&&typeof u==`object`&&typeof u.getAttributeType==`function`&&!n)switch(u.getAttributeType(e,t)){case`TrustedHTML`:return ie(r);case`TrustedScriptURL`:return ae(r)}return r},Ht=function(e,n,r,i){try{r?e.setAttributeNS(r,n,i):e.setAttribute(n,i),Mt(e)?St(e):_n(t.removed)}catch{wt(n,e)}},Ut=function(e){k(C.beforeSanitizeAttributes,e,null);let t=e.attributes;if(!t||Mt(e))return;let n={attrName:``,attrValue:``,keepAttr:!0,allowedAttributes:Ce,forceKeepAttr:void 0},r=t.length,i=O(e.nodeName);for(;r--;){let a=t[r],o=a.name,s=a.namespaceURI,c=a.value,l=O(o),u=c,d=o===`value`?u:En(u);if(n.attrName=l,n.attrValue=d,n.keepAttr=!0,n.forceKeepAttr=void 0,k(C.uponSanitizeAttribute,e,n),d=n.attrValue,E&&(l===`id`||l===`name`)&&Tn(d,Ue)!==0&&(wt(o,e),d=Ue+d),Ne&&Nn(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){wt(o,e);continue}if(l===`attributename`&&Cn(d,`href`)){wt(o,e);continue}if(!n.forceKeepAttr){if(!n.keepAttr){wt(o,e);continue}if(!je&&Nn(fr,d)){wt(o,e);continue}if(Me&&(d=At(d)),!Rt(i,l,d)){wt(o,e);continue}d=Vt(i,l,s,d),d!==u&&Ht(e,o,s,d)}}k(C.afterSanitizeAttributes,e,null)},Wt=function(e){let t=null,n=kt(e);for(k(C.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)if(k(C.uponSanitizeShadowNode,t,null),Lt(t,e),Ut(t),Nt(t.content)&&Wt(t.content),(y?y(t):t.nodeType)===pr.element){let e=_(t);Nt(e)&&(Gt(e),Wt(e))}k(C.afterSanitizeShadowDOM,e,null)},Gt=function(e){let t=[{node:e,shadow:null}];for(;t.length>0;){let e=t.pop();if(e.shadow){Wt(e.shadow);continue}let n=e.node,r=(y?y(n):n.nodeType)===pr.element,i=h(n);if(i)for(let e=i.length-1;e>=0;--e)t.push({node:i[e],shadow:null});if(r){let e=b?b(n):null;if(typeof e==`string`&&O(e)===`template`){let e=n.content;Nt(e)&&t.push({node:e,shadow:null})}}if(r){let e=_(n);Nt(e)&&t.push({node:null,shadow:e},{node:e,shadow:null})}}};return t.sanitize=function(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=null,a=null,o=null,s=null;if(rt=!e,rt&&(e=`<!-->`),typeof e!=`string`&&!Pt(e)&&(e=zn(e),typeof e!=`string`))throw Pn(`dirty is not a string, aborting`);if(!t.isSupported)return e;Fe?(w=Ie,Ce=Le):ht(n),(C.uponSanitizeElement.length>0||C.uponSanitizeAttribute.length>0)&&(w=Rn(w)),C.uponSanitizeAttribute.length>0&&(Ce=Rn(Ce)),t.removed=[];let c=Ge&&typeof e!=`string`&&Pt(e);if(c){Dt(e);let t=b?b(e):e.nodeName;if(typeof t==`string`){let n=O(t);if(!w[n]||Te[n])throw Ct(e),Pn(`root node is forbidden and cannot be sanitized in-place`)}if(Mt(e))throw Ct(e),Pn(`root node is clobbered and cannot be sanitized in-place`);try{Gt(e)}catch(t){throw Ct(e),t}}else if(Pt(e))i=Ot(`<!---->`),a=i.ownerDocument.importNode(e,!0),a.nodeType===pr.element&&a.nodeName===`BODY`||a.nodeName===`HTML`?i=a:i.appendChild(a),Gt(a);else{if(!ze&&!Me&&!Pe&&e.indexOf(`<`)===-1)return x&&Ve?ie(e):e;if(i=Ot(e),!i)return ze?null:Ve?S:``}i&&Re&&St(i.firstChild);let l=c?e:i,u=kt(l);try{for(;o=u.nextNode();)Lt(o,l),Ut(o),Nt(o.content)&&Wt(o.content)}catch(n){throw c&&(Ct(e),hn(t.removed,e=>{e.element&&Et(e.element)})),n}if(c)return hn(t.removed,e=>{e.element&&Et(e.element)}),Me&&jt(e),e;if(ze){if(Me&&jt(i),Be)for(s=ue.call(i.ownerDocument);i.firstChild;)s.appendChild(i.firstChild);else s=i;return(Ce.shadowroot||Ce.shadowrootmode)&&(s=fe.call(r,s,!0)),s}let d=Pe?i.outerHTML:i.innerHTML;return Pe&&w[`!doctype`]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&Nn(sr,i.ownerDocument.doctype.name)&&(d=`<!DOCTYPE `+i.ownerDocument.doctype.name+`>
3
3
  `+d),Me&&(d=At(d)),x&&Ve?ie(d):d},t.setConfig=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};ht(e),Fe=!0,Ie=w,Le=Ce},t.clearConfig=function(){ft=null,Fe=!1,Ie=null,Le=null,x=ee,S=``},t.isValidAttribute=function(e,t,n){ft||ht({});let r=O(e),i=O(t);return Rt(r,i,n)},t.addHook=function(e,t){typeof t==`function`&&jn(C,e)&&vn(C[e],t)},t.removeHook=function(e,t){if(jn(C,e)){if(t!==void 0){let n=gn(C[e],t);return n===-1?void 0:yn(C[e],n,1)[0]}return _n(C[e])}},t.removeHooks=function(e){jn(C,e)&&(C[e]=[])},t.removeAllHooks=function(){C=gr()},t}var yr=vr(),br=0;function xr(e){let t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,{acceptNode(e){let t=e.parentElement;return!e.textContent||t?.closest(`script, style, noscript, [hidden], [aria-hidden="true"]`)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT}}),n=[],r=``,i;for(;i=t.nextNode();){let e=i.textContent??``,t=r.length;r+=e,n.push({node:i,start:t,end:r.length})}return{text:r,nodes:n}}function Sr(e,t){let n=t.find(t=>t.end>e.start),r=t.findLast(t=>t.start<e.end);if(!n||!r)return null;let i=document.createRange();return i.setStart(n.node,e.start-n.start),i.setEnd(r.node,e.end-r.start),i}var Cr=class{root;matchName=`puddle-find-${++br}-match`;activeName=`puddle-find-${br}-active`;style;signature=``;ranges=[];index=-1;limited=!1;constructor(e){this.root=e,this.style=document.createElement(`style`),this.style.textContent=`
4
4
  ::highlight(${this.matchName}) { background: var(--selection); }
@@ -512,4 +512,4 @@ l0,-`+(t+144)+`c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,
512
512
  else paint();
513
513
  report(invalid);
514
514
  });
515
- })();`}function Rd(e,t){let n=e.createElement(`script`);n.textContent=Ld(t),(e.body??e.documentElement).appendChild(n)}function zd({session:e,path:t,kind:n,root:r,focused:i=!0,scrollDriver:a=!1,scrollReceiver:o=!1,scrollChannel:s=`profile`}){let c=bt(e,t,null,r,{passive:!0,live:!0,focused:i}),l=c.model,u=(0,E.useSyncExternalStore)(n=>De(Me(e,t,r),n),()=>l?.getValue()??null);return c.conflict&&c.conflict.phase!==`unresolved`?(0,D.jsx)(ct,{session:e,path:t,buffer:c,focused:i}):u===null?null:n===`markdown`?(0,D.jsx)(Vd,{session:e,path:t,text:u,root:r,scrollDriver:a,scrollReceiver:o,scrollChannel:s,focused:i}):(0,D.jsx)(Wd,{session:e,path:t,text:u,root:r,scrollDriver:a,scrollReceiver:o,scrollChannel:s,focused:i})}function Bd({controls:e}){return e.open?(0,D.jsx)(ue,{query:e.query,focusKey:e.focusKey,options:e.options,result:e.result,onQueryChange:e.setQuery,onOptionsChange:e.setOptions,onNext:e.next,onPrevious:e.previous,onClose:e.close}):null}yr.addHook(`afterSanitizeAttributes`,e=>{e.tagName===`A`&&/^https?:/i.test(e.getAttribute(`href`)??``)&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))});function Vd({session:e,path:t,text:n,root:r,scrollDriver:i,scrollReceiver:o,scrollChannel:s,focused:c}){let l=(0,E.useMemo)(()=>yr.sanitize(_d(n)),[n]),u=(0,E.useMemo)(()=>({__html:l}),[l]),d=(0,E.useRef)(null),f=(0,E.useRef)(null),p=(0,E.useRef)(null);(0,E.useEffect)(()=>{let e=f.current;if(!e)return;let t=new Cr(e);return p.current=t,()=>{t.dispose(),p.current=null}},[]);let m=de({shortcutEnabled:c,onFind:(e,t,n)=>p.current?.find(e,t,n)??le,onClear:()=>p.current?.clear(),onCloseFocus:()=>d.current?.focus({preventScroll:!0})});(0,E.useEffect)(()=>m.refresh(),[l,m.refresh]),(0,E.useEffect)(()=>{let n=d.current,a=f.current;if(!(!n||!a))return mt(n,{channel:s,target:{session:e,path:t,root:r},driver:i,receiver:o,resizeElements:[n,a]})},[l,e,t,r,s,i,o]),(0,E.useEffect)(()=>{let n=f.current;if(!n)return;let i=!1,o=[];for(let s of n.querySelectorAll(`img`)){let n=he(t,s.getAttribute(`src`)??``);n&&(s.removeAttribute(`src`),a(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(n)}${oe(r)}`).then(e=>e.blob()).then(e=>{if(i)return;let t=URL.createObjectURL(e);o.push(t),s.src=t}).catch(()=>void 0))}return()=>{i=!0;for(let e of o)URL.revokeObjectURL(e)}},[l,e,t,r]);let{openFile:h}=ne(),g=n=>{let i=n.target.closest(`a`);if(!i)return;let a=i.getAttribute(`href`)??``;if(/^https?:/i.test(a)||(n.preventDefault(),!n.metaKey&&!n.ctrlKey))return;let o=he(t,a);o&&h(e,o,void 0,{...me(o)?{view:`preview`}:{},...r===void 0?{}:{root:r}})},_=ge().editorFontSize;return(0,D.jsxs)(`div`,{className:`relative size-full bg-ground`,children:[(0,D.jsx)(`div`,{ref:d,tabIndex:-1,className:`h-full overflow-y-auto outline-none`,children:(0,D.jsx)(`div`,{ref:f,onClick:g,style:{fontSize:_},className:`md-preview mx-auto max-w-3xl px-6 py-5 text-fg-secondary`,dangerouslySetInnerHTML:u})}),(0,D.jsx)(Bd,{controls:m})]})}var Hd=[[`img`,`src`],[`script`,`src`],[`link[rel~="stylesheet" i]`,`href`],[`link[rel~="icon" i]`,`href`],[`source`,`src`],[`video`,`src`],[`video`,`poster`],[`audio`,`src`]],Ud=20*1024*1024;function Wd({session:e,path:t,text:n,root:r,scrollDriver:i,scrollReceiver:a,scrollChannel:o,focused:s}){let[c,l]=(0,E.useState)(null),u=(0,E.useRef)(new Map),d=ge().editorFontSize,f=(0,E.useRef)(null),[p]=(0,E.useState)(Td),[m]=(0,E.useState)(Td),h=de({shortcutEnabled:s,onFind:(e,t,n)=>Fd(f.current?.contentWindow??null,m,e,t,n),onClear:()=>Id(f.current?.contentWindow??null,m),onCloseFocus:()=>f.current?.focus()}),g=(0,E.useMemo)(()=>({session:e,path:t,root:r}),[e,t,r]);return(0,E.useEffect)(()=>{let i=!1;return Gd(e,t,n,u.current,d,r,p,m).then(e=>{i||l(e)}),()=>{i=!0}},[e,t,n,d,r,p,m]),(0,E.useEffect)(()=>{let e=e=>{let t=Pd(e,f.current?.contentWindow??null,m);t?.kind===`puddle-preview-find-open`?h.openFind():t?.kind===`puddle-preview-find-result`&&h.setResult(t)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[h.openFind,h.setResult,m]),(0,E.useEffect)(()=>{if(a)return ft.subscribe(o,g,e=>{Dd(f.current?.contentWindow??null,p,e.ratio)})},[a,o,g,p]),(0,E.useEffect)(()=>{if(!i&&!a)return;let e=e=>{let t=Ed(e,f.current?.contentWindow??null,p);if(t){if(i)ft.publish(o,g,t.ratio);else if(t.layout){let e=ft.get(o,g);e&&Dd(f.current?.contentWindow??null,p,e.ratio)}}};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[i,a,o,g,p]),c===null?null:(0,D.jsxs)(`div`,{className:`relative size-full bg-paper`,children:[(0,D.jsx)(`iframe`,{ref:f,sandbox:`allow-scripts`,srcDoc:c,title:t,className:`size-full bg-paper`,onLoad:()=>{if(a){let e=ft.get(o,g);e&&Dd(f.current?.contentWindow??null,p,e.ratio)}h.refresh()}}),(0,D.jsx)(Bd,{controls:h})]})}async function Gd(e,t,n,r,i,a,o,s){let c=new DOMParser().parseFromString(n,`text/html`);if(i!==void 0){let e=c.createElement(`style`);e.textContent=`:where(html) { font-size: ${i}px; }`;let t=c.head??c.documentElement;t.insertBefore(e,t.firstChild)}bd(c)&&await Kd(c);let l=[];for(let[n,i]of Hd)for(let o of c.querySelectorAll(n)){let n=he(t,o.getAttribute(i)??``);n&&(o.removeAttribute(i),l.push(qd(e,n,r,a).then(e=>{e&&o.setAttribute(i,e)})))}return await Promise.all(l),o&&kd(c,o),s&&Rd(c,s),`<!doctype html>${c.documentElement.outerHTML}`}async function Kd(e){let{default:t}=await se(async()=>{let{default:e}=await import(`./_virtual_katex-inline-css-DN-_JSKR.js`);return{default:e}},[]),n=e.createElement(`style`);n.textContent=`${t}\n${pd}`,(e.head??e.documentElement).appendChild(n)}function qd(e,t,n,r){let i=n.get(t);if(i)return i;let o=a(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(t)}${oe(r)}`).then(e=>e.blob()).then(async e=>e.size>Ud?null:`data:${Jd(t,e.type)};base64,${Yd(await e.arrayBuffer())}`).catch(()=>null);return n.set(t,o),o}function Jd(e,t){let n=(e.split(`/`).pop()??``).split(`.`).pop()?.toLowerCase()??``;return n===`css`?`text/css`:n===`js`||n===`mjs`?`text/javascript`:t!==``&&t!==`application/octet-stream`?t:`application/octet-stream`}function Yd(e){let t=new Uint8Array(e),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n)}var Xd={png:`image`,jpg:`image`,jpeg:`image`,gif:`image`,webp:`image`,bmp:`image`,ico:`image`,avif:`image`,svg:`image`,mp4:`video`,m4v:`video`,webm:`video`,mov:`video`,mkv:`video`,avi:`video`,mp3:`audio`,wav:`audio`,ogg:`audio`,m4a:`audio`,flac:`audio`,aac:`audio`,pdf:`pdf`};function Zd(e){let t=e.split(`/`).pop()??e,n=t.lastIndexOf(`.`);return n<=0?null:Xd[t.slice(n+1).toLowerCase()]??null}function Qd({session:e,path:t,kind:n,root:r}){let{url:i,error:a}=tf(e,t,r);return a?(0,D.jsxs)($d,{children:[(0,D.jsx)(`p`,{className:`text-sm text-fg-secondary`,children:`Couldn’t load this file.`}),(0,D.jsx)(ef,{session:e,path:t})]}):i?n===`image`?(0,D.jsx)($d,{children:(0,D.jsx)(`img`,{src:i,alt:t,className:`max-h-full max-w-full object-contain`})}):n===`video`?(0,D.jsx)($d,{children:(0,D.jsx)(`video`,{src:i,controls:!0,className:`max-h-full max-w-full`})}):n===`audio`?(0,D.jsx)($d,{children:(0,D.jsx)(`audio`,{src:i,controls:!0,className:`w-full max-w-xl`})}):(0,D.jsx)(`iframe`,{src:i,title:t,className:`h-full w-full border-0 bg-ground`}):(0,D.jsx)($d,{children:(0,D.jsx)(`span`,{className:`text-xs text-fg-muted`,children:`…`})})}function $d({children:e}){return(0,D.jsx)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3 overflow-auto bg-ground p-4`,children:e})}function ef({session:e,path:t}){return(0,D.jsx)(`button`,{type:`button`,onClick:()=>void y(e,t).catch(e=>o.error(e instanceof Error?e.message:`Download failed`)),className:`rounded-md bg-elevated px-3 py-1.5 text-sm text-fg transition-colors hover:bg-border/70`,children:`Download`})}function tf(e,t,n){let[r,i]=(0,E.useState)(null),[o,s]=(0,E.useState)(!1);return(0,E.useEffect)(()=>{let r=null,o=!1;return i(null),s(!1),a(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(t)}${oe(n)}`).then(e=>e.blob()).then(e=>{o||(r=URL.createObjectURL(e),i(r))}).catch(()=>{o||s(!0)}),()=>{o=!0,r&&URL.revokeObjectURL(r)}},[e,t,n]),{url:r,error:o}}function nf({tab:e,reveal:t,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a}){let o=C(e),s=e.view===`preview`||e.view===`linked`||e.view===`locked`,c=e.view===`linked`||e.view===`locked`?`${e.view}:${e.session}:${e.root??``}:${e.path}`:fe(e);if(o===`diff`)return(0,D.jsx)(Jt,{session:e.session,path:e.path,root:e.root,area:e.git_area,focused:n},fe(e));if(o===`commit`&&e.sha)return(0,D.jsx)(qt,{session:e.session,sha:e.sha,path:e.path,root:e.root},fe(e));if(o===`external`&&e.root!==void 0){let o=Zd(e.path);if(o)return(0,D.jsx)(Qd,{session:e.session,path:e.path,kind:o,root:e.root},fe(e));let l=s?me(e.path):null;return l?(0,D.jsx)(zd,{session:e.session,path:e.path,kind:l,root:e.root,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},c):(0,D.jsx)(Pt,{session:e.session,path:e.path,reveal:t,root:e.root,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},fe(e))}if(o===`untitled`)return(0,D.jsx)(Xt,{name:e.path},fe(e));let l=Zd(e.path);if(l)return(0,D.jsx)(Qd,{session:e.session,path:e.path,kind:l},fe(e));let u=s?me(e.path):null;return u?(0,D.jsx)(zd,{session:e.session,path:e.path,kind:u,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},c):(0,D.jsx)(Pt,{session:e.session,path:e.path,reveal:t,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},fe(e))}export{nf as PaneEditorBody};
515
+ })();`}function Rd(e,t){let n=e.createElement(`script`);n.textContent=Ld(t),(e.body??e.documentElement).appendChild(n)}function zd({session:e,path:t,kind:n,root:r,focused:i=!0,scrollDriver:a=!1,scrollReceiver:o=!1,scrollChannel:s=`profile`}){let c=bt(e,t,null,r,{passive:!0,live:!0,focused:i}),l=c.model,u=(0,E.useSyncExternalStore)(n=>De(Me(e,t,r),n),()=>l?.getValue()??null);return c.conflict&&c.conflict.phase!==`unresolved`?(0,D.jsx)(ct,{session:e,path:t,buffer:c,focused:i}):u===null?null:n===`markdown`?(0,D.jsx)(Vd,{session:e,path:t,text:u,root:r,scrollDriver:a,scrollReceiver:o,scrollChannel:s,focused:i}):(0,D.jsx)(Wd,{session:e,path:t,text:u,root:r,scrollDriver:a,scrollReceiver:o,scrollChannel:s,focused:i})}function Bd({controls:e}){return e.open?(0,D.jsx)(ue,{query:e.query,focusKey:e.focusKey,options:e.options,result:e.result,onQueryChange:e.setQuery,onOptionsChange:e.setOptions,onNext:e.next,onPrevious:e.previous,onClose:e.close}):null}yr.addHook(`afterSanitizeAttributes`,e=>{e.tagName===`A`&&/^https?:/i.test(e.getAttribute(`href`)??``)&&(e.setAttribute(`target`,`_blank`),e.setAttribute(`rel`,`noopener noreferrer`))});function Vd({session:e,path:t,text:n,root:i,scrollDriver:a,scrollReceiver:o,scrollChannel:s,focused:c}){let l=(0,E.useMemo)(()=>yr.sanitize(_d(n)),[n]),u=(0,E.useMemo)(()=>({__html:l}),[l]),d=(0,E.useRef)(null),f=(0,E.useRef)(null),p=(0,E.useRef)(null);(0,E.useEffect)(()=>{let e=f.current;if(!e)return;let t=new Cr(e);return p.current=t,()=>{t.dispose(),p.current=null}},[]);let m=de({shortcutEnabled:c,onFind:(e,t,n)=>p.current?.find(e,t,n)??le,onClear:()=>p.current?.clear(),onCloseFocus:()=>d.current?.focus({preventScroll:!0})});(0,E.useEffect)(()=>m.refresh(),[l,m.refresh]),(0,E.useEffect)(()=>{let n=d.current,r=f.current;if(!(!n||!r))return mt(n,{channel:s,target:{session:e,path:t,root:i},driver:a,receiver:o,resizeElements:[n,r]})},[l,e,t,i,s,a,o]),(0,E.useEffect)(()=>{let n=f.current;if(!n)return;let a=!1,o=[];for(let s of n.querySelectorAll(`img`)){let n=he(t,s.getAttribute(`src`)??``);n&&(s.removeAttribute(`src`),r(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(n)}${oe(i)}`).then(e=>e.blob()).then(e=>{if(a)return;let t=URL.createObjectURL(e);o.push(t),s.src=t}).catch(()=>void 0))}return()=>{a=!0;for(let e of o)URL.revokeObjectURL(e)}},[l,e,t,i]);let{openFile:h}=ne(),g=n=>{let r=n.target.closest(`a`);if(!r)return;let a=r.getAttribute(`href`)??``;if(/^https?:/i.test(a)||(n.preventDefault(),!n.metaKey&&!n.ctrlKey))return;let o=he(t,a);o&&h(e,o,void 0,{...me(o)?{view:`preview`}:{},...i===void 0?{}:{root:i}})},_=ge().editorFontSize;return(0,D.jsxs)(`div`,{className:`relative size-full bg-ground`,children:[(0,D.jsx)(`div`,{ref:d,tabIndex:-1,className:`h-full overflow-y-auto outline-none`,children:(0,D.jsx)(`div`,{ref:f,onClick:g,style:{fontSize:_},className:`md-preview mx-auto max-w-3xl px-6 py-5 text-fg-secondary`,dangerouslySetInnerHTML:u})}),(0,D.jsx)(Bd,{controls:m})]})}var Hd=[[`img`,`src`],[`script`,`src`],[`link[rel~="stylesheet" i]`,`href`],[`link[rel~="icon" i]`,`href`],[`source`,`src`],[`video`,`src`],[`video`,`poster`],[`audio`,`src`]],Ud=20*1024*1024;function Wd({session:e,path:t,text:n,root:r,scrollDriver:i,scrollReceiver:a,scrollChannel:o,focused:s}){let[c,l]=(0,E.useState)(null),u=(0,E.useRef)(new Map),d=ge().editorFontSize,f=(0,E.useRef)(null),[p]=(0,E.useState)(Td),[m]=(0,E.useState)(Td),h=de({shortcutEnabled:s,onFind:(e,t,n)=>Fd(f.current?.contentWindow??null,m,e,t,n),onClear:()=>Id(f.current?.contentWindow??null,m),onCloseFocus:()=>f.current?.focus()}),g=(0,E.useMemo)(()=>({session:e,path:t,root:r}),[e,t,r]);return(0,E.useEffect)(()=>{let i=!1;return Gd(e,t,n,u.current,d,r,p,m).then(e=>{i||l(e)}),()=>{i=!0}},[e,t,n,d,r,p,m]),(0,E.useEffect)(()=>{let e=e=>{let t=Pd(e,f.current?.contentWindow??null,m);t?.kind===`puddle-preview-find-open`?h.openFind():t?.kind===`puddle-preview-find-result`&&h.setResult(t)};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[h.openFind,h.setResult,m]),(0,E.useEffect)(()=>{if(a)return ft.subscribe(o,g,e=>{Dd(f.current?.contentWindow??null,p,e.ratio)})},[a,o,g,p]),(0,E.useEffect)(()=>{if(!i&&!a)return;let e=e=>{let t=Ed(e,f.current?.contentWindow??null,p);if(t){if(i)ft.publish(o,g,t.ratio);else if(t.layout){let e=ft.get(o,g);e&&Dd(f.current?.contentWindow??null,p,e.ratio)}}};return window.addEventListener(`message`,e),()=>window.removeEventListener(`message`,e)},[i,a,o,g,p]),c===null?null:(0,D.jsxs)(`div`,{className:`relative size-full bg-paper`,children:[(0,D.jsx)(`iframe`,{ref:f,sandbox:`allow-scripts`,srcDoc:c,title:t,className:`size-full bg-paper`,onLoad:()=>{if(a){let e=ft.get(o,g);e&&Dd(f.current?.contentWindow??null,p,e.ratio)}h.refresh()}}),(0,D.jsx)(Bd,{controls:h})]})}async function Gd(e,t,n,r,i,a,o,s){let c=new DOMParser().parseFromString(n,`text/html`);if(i!==void 0){let e=c.createElement(`style`);e.textContent=`:where(html) { font-size: ${i}px; }`;let t=c.head??c.documentElement;t.insertBefore(e,t.firstChild)}bd(c)&&await Kd(c);let l=[];for(let[n,i]of Hd)for(let o of c.querySelectorAll(n)){let n=he(t,o.getAttribute(i)??``);n&&(o.removeAttribute(i),l.push(qd(e,n,r,a).then(e=>{e&&o.setAttribute(i,e)})))}return await Promise.all(l),o&&kd(c,o),s&&Rd(c,s),`<!doctype html>${c.documentElement.outerHTML}`}async function Kd(e){let{default:t}=await se(async()=>{let{default:e}=await import(`./_virtual_katex-inline-css-DN-_JSKR.js`);return{default:e}},[]),n=e.createElement(`style`);n.textContent=`${t}\n${pd}`,(e.head??e.documentElement).appendChild(n)}function qd(e,t,n,i){let a=n.get(t);if(a)return a;let o=r(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(t)}${oe(i)}`).then(e=>e.blob()).then(async e=>e.size>Ud?null:`data:${Jd(t,e.type)};base64,${Yd(await e.arrayBuffer())}`).catch(()=>null);return n.set(t,o),o}function Jd(e,t){let n=(e.split(`/`).pop()??``).split(`.`).pop()?.toLowerCase()??``;return n===`css`?`text/css`:n===`js`||n===`mjs`?`text/javascript`:t!==``&&t!==`application/octet-stream`?t:`application/octet-stream`}function Yd(e){let t=new Uint8Array(e),n=``,r=32768;for(let e=0;e<t.length;e+=r)n+=String.fromCharCode(...t.subarray(e,e+r));return btoa(n)}var Xd={png:`image`,jpg:`image`,jpeg:`image`,gif:`image`,webp:`image`,bmp:`image`,ico:`image`,avif:`image`,svg:`image`,mp4:`video`,m4v:`video`,webm:`video`,mov:`video`,mkv:`video`,avi:`video`,mp3:`audio`,wav:`audio`,ogg:`audio`,m4a:`audio`,flac:`audio`,aac:`audio`,pdf:`pdf`};function Zd(e){let t=e.split(`/`).pop()??e,n=t.lastIndexOf(`.`);return n<=0?null:Xd[t.slice(n+1).toLowerCase()]??null}function Qd({session:e,path:t,kind:n,root:r}){let{url:i,error:a}=tf(e,t,r);return a?(0,D.jsxs)($d,{children:[(0,D.jsx)(`p`,{className:`text-sm text-fg-secondary`,children:`Couldn’t load this file.`}),(0,D.jsx)(ef,{session:e,path:t})]}):i?n===`image`?(0,D.jsx)($d,{children:(0,D.jsx)(`img`,{src:i,alt:t,className:`max-h-full max-w-full object-contain`})}):n===`video`?(0,D.jsx)($d,{children:(0,D.jsx)(`video`,{src:i,controls:!0,className:`max-h-full max-w-full`})}):n===`audio`?(0,D.jsx)($d,{children:(0,D.jsx)(`audio`,{src:i,controls:!0,className:`w-full max-w-xl`})}):(0,D.jsx)(`iframe`,{src:i,title:t,className:`h-full w-full border-0 bg-ground`}):(0,D.jsx)($d,{children:(0,D.jsx)(`span`,{className:`text-xs text-fg-muted`,children:`…`})})}function $d({children:e}){return(0,D.jsx)(`div`,{className:`flex h-full w-full flex-col items-center justify-center gap-3 overflow-auto bg-ground p-4`,children:e})}function ef({session:e,path:t}){return(0,D.jsx)(`button`,{type:`button`,onClick:()=>void y(e,t).catch(e=>i.error(e instanceof Error?e.message:`Download failed`)),className:`rounded-md bg-elevated px-3 py-1.5 text-sm text-fg transition-colors hover:bg-border/70`,children:`Download`})}function tf(e,t,n){let[i,a]=(0,E.useState)(null),[o,s]=(0,E.useState)(!1);return(0,E.useEffect)(()=>{let i=null,o=!1;return a(null),s(!1),r(`GET`,`/api/worktrees/${e}/media?path=${encodeURIComponent(t)}${oe(n)}`).then(e=>e.blob()).then(e=>{o||(i=URL.createObjectURL(e),a(i))}).catch(()=>{o||s(!0)}),()=>{o=!0,i&&URL.revokeObjectURL(i)}},[e,t,n]),{url:i,error:o}}function nf({tab:e,reveal:t,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a}){let o=C(e),s=e.view===`preview`||e.view===`linked`||e.view===`locked`,c=e.view===`linked`||e.view===`locked`?`${e.view}:${e.session}:${e.root??``}:${e.path}`:fe(e);if(o===`diff`)return(0,D.jsx)(Jt,{session:e.session,path:e.path,root:e.root,area:e.git_area,focused:n},fe(e));if(o===`commit`&&e.sha)return(0,D.jsx)(qt,{session:e.session,sha:e.sha,path:e.path,root:e.root},fe(e));if(o===`external`&&e.root!==void 0){let o=Zd(e.path);if(o)return(0,D.jsx)(Qd,{session:e.session,path:e.path,kind:o,root:e.root},fe(e));let l=s?me(e.path):null;return l?(0,D.jsx)(zd,{session:e.session,path:e.path,kind:l,root:e.root,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},c):(0,D.jsx)(Pt,{session:e.session,path:e.path,reveal:t,root:e.root,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},fe(e))}if(o===`untitled`)return(0,D.jsx)(Xt,{name:e.path},fe(e));let l=Zd(e.path);if(l)return(0,D.jsx)(Qd,{session:e.session,path:e.path,kind:l},fe(e));let u=s?me(e.path):null;return u?(0,D.jsx)(zd,{session:e.session,path:e.path,kind:u,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},c):(0,D.jsx)(Pt,{session:e.session,path:e.path,reveal:t,focused:n,scrollDriver:r,scrollReceiver:i,scrollChannel:a},fe(e))}export{nf as PaneEditorBody};