@p4code/cli 0.7.11 → 0.7.13

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 (31) hide show
  1. package/dist/bin.mjs +114 -19
  2. package/dist/client/assets/DiffPanel-CeEGroRp.js +98 -0
  3. package/dist/client/assets/FilePreviewPanel-DYlVNx6G.js +2230 -0
  4. package/dist/client/assets/P4DesignScreen-BsHZJ1Ch.css +1 -0
  5. package/dist/client/assets/P4DesignScreen-CAko1RXc.js +19 -0
  6. package/dist/client/assets/PreviewPanel-DV8ek6zP.js +2 -0
  7. package/dist/client/assets/PullRequestCodeTab-B9ZcowFy.js +251 -0
  8. package/dist/client/assets/collapsible-BYB8Vm7J.js +2 -0
  9. package/dist/client/assets/{entities-DqtFk7L9.js → entities-rFZO2CnH.js} +2 -2
  10. package/dist/client/assets/{fileCommentAnnotations-U7_SWGlq.js → fileCommentAnnotations-DMZJf240.js} +2 -2
  11. package/dist/client/assets/{index-FfRV_bUK.js → index-BtOOP_4i.js} +259 -249
  12. package/dist/client/assets/input-COb8u_Ms.js +2 -0
  13. package/dist/client/assets/renderFileChildren-gCX998tv.js +2 -0
  14. package/dist/client/assets/textarea-CWiSD-BA.js +48 -0
  15. package/dist/client/assets/timestampFormat-CPEoBq-v.js +2 -0
  16. package/dist/client/assets/toggle-group-CnELn-Lg.js +2 -0
  17. package/dist/client/index.html +6 -4
  18. package/dist/{renderer-DjkoXzr6.mjs → renderer-BM58dAjb.mjs} +2 -2
  19. package/dist/{runtime-Dm3kk93X.mjs → runtime-1CxXZlXT.mjs} +2 -2
  20. package/dist/{src-DmphFADh.mjs → src-BkeUiTFp.mjs} +21 -2
  21. package/package.json +1 -1
  22. package/dist/client/assets/DiffPanel-CSv6YIBl.js +0 -98
  23. package/dist/client/assets/FilePreviewPanel-BZSv2upS.js +0 -2230
  24. package/dist/client/assets/P4DesignScreen-D6gkHJN-.css +0 -1
  25. package/dist/client/assets/P4DesignScreen-JTgYV5vh.js +0 -19
  26. package/dist/client/assets/PreviewPanel-DZJQI1fY.js +0 -2
  27. package/dist/client/assets/PullRequestCodeTab-BTR-YcSY.js +0 -251
  28. package/dist/client/assets/collapsible-cM_BdURl.js +0 -2
  29. package/dist/client/assets/renderFileChildren-D-xmx4Ci.js +0 -2
  30. package/dist/client/assets/textarea-B3YbEkbC.js +0 -48
  31. package/dist/client/assets/toggle-group-DMoKBtD6.js +0 -2
@@ -0,0 +1,2 @@
1
+ import{n as e,t}from"./compiler-runtime-CLAvuQ-D.js";import{Qs as n,Ui as r}from"./textarea-CWiSD-BA.js";var i=n(`chevrons-up-down`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),a=t(),o=e();function s(e){let t=(0,a.c)(8),n,i;t[0]===e?(n=t[1],i=t[2]):({className:n,...i}=e,t[0]=e,t[1]=n,t[2]=i);let s;t[3]===n?s=t[4]:(s=r(`animate-skeleton rounded-sm [--skeleton-highlight:--alpha(var(--color-white)/64%)] [background:linear-gradient(120deg,transparent_40%,var(--skeleton-highlight),transparent_60%)_var(--color-muted)_0_0/200%_100%_fixed] dark:[--skeleton-highlight:--alpha(var(--color-white)/4%)]`,n),t[3]=n,t[4]=s);let c;return t[5]!==i||t[6]!==s?(c=(0,o.jsx)(`div`,{className:s,"data-slot":`skeleton`,...i}),t[5]=i,t[6]=s,t[7]=c):c=t[7],c}function c(e,t){let n={hour:`numeric`,minute:`2-digit`,...t?{second:`2-digit`}:{}};return e===`locale`?n:{...n,hour12:e===`12-hour`}}var l=new Map;function u(e,t){let n=`${e}:${t?`seconds`:`minutes`}`,r=l.get(n);if(r)return r;let i=new Intl.DateTimeFormat(void 0,c(e,t));return l.set(n,i),i}function d(e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}function f(e,t){let n=d(e);return n?u(t,!0).format(n):``}var p=new Intl.DateTimeFormat(void 0,{month:`long`});function m(e){let t=e%100;if(t>=11&&t<=13)return`th`;switch(e%10){case 1:return`st`;case 2:return`nd`;case 3:return`rd`;default:return`th`}}function h(e,t){let n=d(e);if(!n)return``;let r=g(e,t),i=n.getDate(),a=p.format(n),o=n.getFullYear();return`${r}, ${i}${m(i)} ${a} ${o}`}function g(e,t){let n=d(e);return n?u(t,!1).format(n):``}function _(e){let t=d(e);if(!t)return null;let n=Date.now()-t.getTime();if(n<0)return{value:`just now`,suffix:null};let r=Math.floor(n/1e3);if(r<60)return{value:`just now`,suffix:null};let i=Math.floor(r/60);if(i<60)return{value:`${i}m`,suffix:`ago`};let a=Math.floor(i/60);return a<24?{value:`${a}h`,suffix:`ago`}:{value:`${Math.floor(a/24)}d`,suffix:`ago`}}function v(e){let t=_(e);return t?t.suffix?`${t.value} ${t.suffix}`:t.value:``}function y(e){let t=_(e);return t?t.value===`just now`?`now`:t.value:``}function b(e){if(!e)return{status:`missing`};let t=_(e);return t?{status:`relative`,...t}:{status:`invalid`}}function x(e,t=Date.now()){let n=d(e);if(!n)return``;let r=t-n.getTime();if(r<=0)return`just now`;let i=Math.floor(r/1e3);if(i<5)return`just now`;if(i<60)return`${i}s`;let a=Math.floor(i/60);if(a<60)return`${a}m`;let o=Math.floor(a/60);return o<24?`${o}h`:`${Math.floor(o/24)}d`}function S(e,t=Date.now()){let n=d(e);if(!n)return``;let r=n.getTime()-t;if(r<=0)return`Expired`;let i=Math.floor(r/1e3);if(i<5)return`Expires in a moment`;if(i<60)return`Expires in ${i}s`;if(i<3600){let e=Math.floor(i/60),t=i%60;return t===0?`Expires in ${e}m`:`Expires in ${e}m ${t}s`}if(i<86400){let e=Math.floor(i/3600),t=i%3600,n=Math.floor(t/60),r=t%60,a=[`${e}h`];return n>0&&a.push(`${n}m`),r>0&&a.push(`${r}s`),`Expires in ${a.join(` `)}`}let a=Math.floor(i/86400),o=i%86400;if(o===0)return`Expires in ${a}d`;let s=Math.floor(o/3600),c=o%3600,l=Math.floor(c/60),u=c%60,f=[];return s>0&&f.push(`${s}h`),l>0&&f.push(`${l}m`),u>0&&f.push(`${u}s`),f.length>0?`Expires in ${a}d ${f.join(` `)}`:`Expires in ${a}d`}export{v as a,b as c,i as d,S as i,d as l,y as n,g as o,x as r,f as s,h as t,s as u};
2
+ //# sourceMappingURL=timestampFormat-CPEoBq-v.js.map
@@ -0,0 +1,2 @@
1
+ import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{r as t}from"./preload-helper-CEhsl8MR.js";import{n,r,t as i}from"./compiler-runtime-CLAvuQ-D.js";import{Ma as a,Ms as o,Qs as s,Ui as c,Zo as l,es as u,ks as d}from"./textarea-CWiSD-BA.js";import"./entities-rFZO2CnH.js";import{n as f,t as p}from"./renderFileChildren-gCX998tv.js";import{$n as m,Ct as h,Ft as g,Gn as _,Gt as v,Hn as y,It as b,Jn as x,Kn as S,L as C,M as w,N as T,Qn as E,R as D,Un as ee,Wn as te,Xn as O,Yn as k,ar as A,ir as j,kr as M,nr as N,qn as P,tr as F,wt as I}from"./index-BtOOP_4i.js";var L=s(`chevrons-down-up`,[[`path`,{d:`m7 20 5-5 5 5`,key:`13a0gw`}],[`path`,{d:`m7 4 5 5 5-5`,key:`1kwcof`}]]),R=s(`columns-2`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M12 3v18`,key:`108xh3`}]]),z=s(`rows-3`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M21 9H3`,key:`1338ky`}],[`path`,{d:`M21 15H3`,key:`9uk58r`}]]);function B(){return typeof window>`u`||typeof window.matchMedia!=`function`?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches}function V(e,t){return e==null||t==null?e===t:e.header!==t.header||e.footer!==t.footer?!1:H(e.items,t.items)}function H(e,t){if(e==null||t==null)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++){let r=e[n],i=t[n];if(r==null||i==null||r.id!==i.id||r.type!==i.type||r.element!==i.element||r.instance!==i.instance||r.version!==i.version)return!1}return!0}function ne(e,t,n){let r=document.createElement(`div`);return r.style.display=`flow-root`,e===`header`?(r.setAttribute(O,``),t.before(r)):(r.setAttribute(k,``),t.after(r)),n?.observe(r),r}function U(e){let t=window.devicePixelRatio??1;return Math.round(e*t)/t}var W=`theme.disableLineNumbers.overflow.themeType.disableFileHeader.disableVirtualizationBuffers.preferredHighlighter.useCSSClasses.useTokenTransformer.tokenizeMaxLineLength.tokenizeMaxLength.unsafeCSS.diffStyle.diffIndicators.disableBackground.expandUnchanged.loadDiffFiles.collapsedContextThreshold.lineDiffType.maxLineDiffLength.expansionLineCount.lineHoverHighlight.enableTokenInteractionsOnWhitespace.enableGutterUtility.__debugPointerEvents.enableLineSelection.controlledSelection.disableErrorHandling`.split(`.`),G=[`theme`,`disableLineNumbers`,`overflow`,`themeType`,`disableFileHeader`,`disableVirtualizationBuffers`,`preferredHighlighter`,`useCSSClasses`,`useTokenTransformer`,`tokenizeMaxLineLength`,`tokenizeMaxLength`,`unsafeCSS`,`lineHoverHighlight`,`enableTokenInteractionsOnWhitespace`,`enableGutterUtility`,`__debugPointerEvents`,`enableLineSelection`,`controlledSelection`,`disableErrorHandling`],re=[`renderCustomHeader`,`renderHeaderPrefix`,`renderHeaderFilenameSuffix`,`renderHeaderMetadata`,`renderAnnotation`,`renderGutterUtility`,`onPostRender`,`onGutterUtilityClick`,`onLineClick`,`onLineNumberClick`,`onLineEnter`,`onLineLeave`,`onTokenClick`,`onTokenEnter`,`onTokenLeave`],ie=[`onLineSelected`,`onLineSelectionStart`,`onLineSelectionChange`,`onLineSelectionEnd`],ae=Symbol(`CodeView.itemOptionsState`);function oe(e,t){Object.defineProperty(e,ae,{configurable:!1,enumerable:!1,value:t})}function K(e){return e[ae]}function q(e,t,n){Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get(){return n(this)}})}var se=120,ce=1,le=`--diffs-overflow-override`,J=12e6,ue=1e6,de=2e6,fe=J-de,pe=J-ue;function me(e){if(e==null)throw Error(`CodeView: createEditor is required for items with edit: true`)}var he=(()=>{let{navigator:e}=globalThis,t=e.userAgent,n=/iP(?:hone|ad|od)/.test(t),r=e.platform===`MacIntel`&&e.maxTouchPoints>1;return(n||r)&&/AppleWebKit/.test(t)&&/Safari/.test(t)&&!/(CriOS|FxiOS|EdgiOS|OPiOS)/.test(t)})(),ge=class e{static __STOP=!1;static __lastScrollPosition=0;type=`advanced`;config={overscrollSize:200,intersectionObserverMargin:0,resizeDebugging:!1};items=[];idToItem=new Map;selectedLines=null;itemEditors=new Map;attachedEditors=new Set;instanceToItem=new Map;layoutDirtyIndex;pendingLayoutReset;renderOptionsRevision=0;slotCoordinator;slotSnapshot;scrollListeners=new Set;scrollHeight=0;containerHeight=-1;scrollTop=0;scrollPageOffset=0;scrollDirty=!0;scrollInteractionFixTimer;pointerEventsDisabled=!1;codeOverflowFix=!1;height=0;heightDirty=!0;windowSpecs={top:0,bottom:0};renderState={scrollTop:-1,firstIndex:-1,lastIndex:-1,stickyHeight:0,stickyTop:-1,stickyBottom:-1};itemMetricsCache=E;fileOptionsPrototype;diffOptionsPrototype;pendingScrollTarget;pendingLayoutAnchor;shouldFixContainerFocus=!1;scrollAnimation;root;resizeObserver;container=document.createElement(`div`);stickyContainer=document.createElement(`div`);stickyOffset=document.createElement(`div`);header={element:void 0,render:void 0,height:0};footer={element:void 0,render:void 0,height:0};elementPool=[];elementPoolVersion=0;elementPoolTracker=new WeakMap;pendingElementPool=[];options;workerManager;isReadySubscription;isContainerManaged;constructor(e={theme:N},t,n=!1){this.options=e,this.computeMetricsCache(e.itemMetrics),this.fileOptionsPrototype=this.createFileOptionsPrototype(),this.diffOptionsPrototype=this.createDiffOptionsPrototype(),this.workerManager=t,this.isContainerManaged=n,this.stickyOffset.style.contain=`layout size`,this.stickyContainer.style.position=`sticky`,this.stickyContainer.style.width=`100%`,this.stickyContainer.style.contain=`layout style inline-size`,this.stickyContainer.style.isolation=`isolate`,this.stickyContainer.style.display=`flex`,this.stickyContainer.style.flexDirection=`column`}getLayout(){return this.options.layout??m}getItemTopOffset(){return this.getLayout().paddingTop+this.header.height}computeMetricsCache(e){return this.itemMetricsCache={hunkLineCount:e?.hunkLineCount??E.hunkLineCount,lineHeight:e?.lineHeight??E.lineHeight,diffHeaderHeight:e?.diffHeaderHeight??E.diffHeaderHeight,hunkSeparatorHeight:e?.hunkSeparatorHeight,spacing:e?.spacing??E.spacing,paddingTop:e?.paddingTop,paddingBottom:e?.paddingBottom},this.itemMetricsCache}getSmoothScrollSettings(){return this.options.smoothScrollSettings??F}shouldDisablePointerEvents(){return this.options.pointerEventsOnScroll!==!0}shouldValidateItemHeights(){return j&&this.options.__devOnlyValidateItemHeights===!0}validateRenderedItemHeight(e){if(!this.shouldValidateItemHeights()||e.element==null)return;let t=e.instance.getAdvancedStickySpecs();if(t==null)return;let n=t.height,r=e.element.getBoundingClientRect().height;n!==r&&console.error(`CodeView: reconciled item height does not match DOM height`,{id:e.item.id,type:e.type,index:e.index,version:e.version,expectedHeight:n,actualHeight:r,delta:r-n,stickyTopOffset:t.topOffset,virtualizedHeight:e.instance.getVirtualizedHeight(),top:e.top,scrollTop:this.getScrollTop(),windowSpecs:{...this.windowSpecs},element:e.element,instance:e.instance})}validateStickyContainerHeight(){if(!this.shouldValidateItemHeights())return;let{firstIndex:e,lastIndex:t,stickyHeight:n,stickyTop:r,stickyBottom:i}=this.renderState;if(e===-1||t===-1)return;let a=this.stickyContainer.getBoundingClientRect().height;Math.abs(a-n)<ce||console.error(`CodeView: sticky container height does not match computed layout`,{computedStickyHeight:n,actualStickyHeight:a,delta:a-n,stickyTop:r,stickyBottom:i,firstIndex:e,lastIndex:t,firstStickySpecs:this.items[e]?.instance.getAdvancedStickySpecs(),lastStickySpecs:this.items[t]?.instance.getAdvancedStickySpecs(),scrollTop:this.getScrollTop(),scrollPageOffset:this.scrollPageOffset,windowSpecs:{...this.windowSpecs},stickyContainer:this.stickyContainer})}clearScrollInteractionTimer(){this.scrollInteractionFixTimer!=null&&(clearTimeout(this.scrollInteractionFixTimer),this.scrollInteractionFixTimer=void 0)}suspendScrollInteractions(){this.clearScrollInteractionTimer(),this.shouldDisablePointerEvents()&&!this.pointerEventsDisabled&&(this.stickyContainer.style.pointerEvents=`none`,this.pointerEventsDisabled=!0),he&&!this.codeOverflowFix&&(this.stickyContainer.style.setProperty(le,`hidden`),this.codeOverflowFix=!0),this.scrollInteractionFixTimer=setTimeout(this.restoreScrollInteractions,se)}restoreScrollInteractions=()=>{this.clearScrollInteractionTimer(),this.pointerEventsDisabled&&=(this.stickyContainer.style.removeProperty(`pointer-events`),!1),this.codeOverflowFix&&=(this.stickyContainer.style.setProperty(le,`auto`),!1)};syncLayout(){let{gap:e,paddingBottom:t,paddingTop:n}=this.getLayout();this.stickyContainer.style.gap=`${e}px`,this.container?.style.setProperty(`margin-top`,`${n}px`),this.container?.style.setProperty(`margin-bottom`,`${t}px`)}reconcileHeaderFooterHosts(){let e=this.reconcileHost(`header`),t=this.reconcileHost(`footer`);return e||t}reconcileHost(e){let{root:t,container:n}=this;if(t==null||n==null)return!1;let r=e===`header`?this.header:this.footer,i=e===`header`?this.options.renderCodeViewHeader:this.options.renderCodeViewFooter;if(i==null)return r.element==null?!1:(this.resizeObserver?.unobserve(r.element),r.element.remove(),r.element=void 0,r.render=void 0,this.setHostHeight(r,0),!1);if(r.element!=null&&i===r.render)return!1;let a=r.element??ne(e,n,this.resizeObserver);r.element=a;let o=i();return o==null?!this.isContainerManaged&&a.children.length>0&&(a.textContent=``):a.replaceChildren(o),r.render=i,!0}setHostHeight(e,t){e.height!==t&&(e.height=t,this.scrollDirty=!0)}measureMountedHosts(){this.header.element!=null&&this.setHostHeight(this.header,this.header.element.getBoundingClientRect().height),this.footer.element!=null&&this.setHostHeight(this.footer,this.footer.element.getBoundingClientRect().height)}setup(t){if(this.root!=null)throw Error(`CodeView.setup: already setup`);this.workerManager?.subscribeToThemeChanges(this),this.root=t,this.root.style.overflowAnchor=`none`,this.root.hasAttribute(`tabindex`)||(this.root.tabIndex=-1),this.container??=document.createElement(`div`),this.container.style.contain=`layout style`,this.syncLayout(),this.container.appendChild(this.stickyOffset),this.container.appendChild(this.stickyContainer),this.root.appendChild(this.container),this.scrollDirty=!0,this.heightDirty=!0,this.resizeObserver=new ResizeObserver(this.handleResize),this.resizeObserver.observe(this.stickyContainer),this.root.addEventListener(`scroll`,this.handleScroll,{passive:!0}),this.root.addEventListener(`wheel`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`touchstart`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`pointerdown`,this.clearPendingScroll,{passive:!0}),this.root.addEventListener(`keydown`,this.clearPendingScroll,{passive:!0}),this.resizeObserver.observe(this.root),this.render(!0),window.__INSTANCE=this,window.__TOGGLE=()=>{e.__STOP?(e.__STOP=!1,this.scrollTo({type:`position`,position:e.__lastScrollPosition,behavior:`instant`})):(e.__lastScrollPosition=this.getScrollTop(),e.__STOP=!0)}}reset(){P(this.computeRenderRangeAndEmit),this.clearReadySubscription(),this.restoreScrollInteractions(),this.cleanAllRenderedItems();for(let e of this.itemEditors.values())e.editor.cleanUp();this.itemEditors.clear(),this.attachedEditors.clear(),this.selectedLines=null,this.items.length=0,this.idToItem.clear(),this.instanceToItem.clear(),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,this.stickyContainer.textContent=``,this.stickyOffset.style.height=``,this.container?.style.removeProperty(`height`),this.containerHeight=-1,this.windowSpecs={top:0,bottom:0},this.pendingLayoutAnchor=void 0,this.shouldFixContainerFocus=!1,this.height=0,this.scrollTop=0,this.scrollPageOffset=0,this.scrollHeight=0,this.scrollDirty=!0,this.heightDirty=!0,this.resetRenderState(),this.isContainerManaged||this.flushSlotCoordinator()}cleanUp(){this.reset(),this.clearElementPool(),this.restoreScrollInteractions(),this.workerManager?.unsubscribeToThemeChanges(this),this.resizeObserver?.disconnect(),this.resizeObserver=void 0,this.root?.removeEventListener(`scroll`,this.handleScroll),this.root?.removeEventListener(`wheel`,this.clearPendingScroll),this.root?.removeEventListener(`touchstart`,this.clearPendingScroll),this.root?.removeEventListener(`pointerdown`,this.clearPendingScroll),this.root?.removeEventListener(`keydown`,this.clearPendingScroll),this.root?.style.removeProperty(`overflow-anchor`),this.container?.remove(),this.stickyOffset.remove(),this.stickyContainer.remove(),this.stickyContainer.textContent=``,this.header.element?.remove(),this.header.element=void 0,this.header.render=void 0,this.header.height=0,this.footer.element?.remove(),this.footer.element=void 0,this.footer.render=void 0,this.footer.height=0,this.root=void 0,this.container=void 0}cleanAllRenderedItems(){if(this.renderState.firstIndex!==-1)for(let e=this.renderState.firstIndex;e<=this.renderState.lastIndex;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.cleanAllRenderedItems: Item does not exist at index: ${e}`);this.releaseRenderedItem(t)}}primeScrollTarget(e){e.type!==`position`&&this.idToItem.get(e.id)?.instance.primeHighlightCache()}getElementPoolLimit(){let e=this.getHeight()+this.config.overscrollSize*2,{diffHeaderHeight:t}=this.itemMetricsCache;return Math.max(8,Math.ceil(e/Math.max(t,10))+1)*(this.isContainerManaged?2:1)}acquireElement(){this.promotePendingPooledElements();let e=this.elementPool.pop();for(;e!=null&&!this.isElementPoolGenerationCurrent(e);)e=this.elementPool.pop();return e??=document.createElement(A),this.markElementPoolGenerationCurrent(e),e}releaseRenderedItem(e){let{element:t}=e;t!=null&&this.renderedItemOwnsFocus(t)&&(this.shouldFixContainerFocus=!0),e.instance.cleanUp(!0),this.attachedEditors.delete(e.item.id),e.element=void 0,t!=null&&(t.remove(),this.cleanElement(t),this.queueElementForPool(t))}renderedItemOwnsFocus(e){let{activeElement:t}=document;return t===e||e.contains(t)||e.shadowRoot?.activeElement!=null}fixContainerFocus(){this.shouldFixContainerFocus&&(this.shouldFixContainerFocus=!1,this.root?.focus({preventScroll:!0}))}cleanElement(e){let{shadowRoot:t}=e;if(t!=null)for(let e of Array.from(t.children))xe(e)||e.remove();this.isContainerManaged||e.replaceChildren()}queueElementForPool(e){let t=this.getElementPoolLimit();!this.isElementPoolGenerationCurrent(e)||this.getElementPoolSize()>=t||(this.isElementClean(e)?this.elementPool.push(e):this.pendingElementPool.push(e))}promotePendingPooledElements(){if(this.pendingElementPool.length===0)return;let{pendingElementPool:e}=this;this.pendingElementPool=[];let t=this.getElementPoolLimit();for(let n of e)this.isElementPoolGenerationCurrent(n)&&this.isElementClean(n)&&this.elementPool.length<t?this.elementPool.push(n):this.isElementPoolGenerationCurrent(n)&&this.getElementPoolSize()<t&&this.pendingElementPool.push(n)}isElementClean(e){return e.childNodes.length===0}getElementPoolSize(){return this.elementPool.length+this.pendingElementPool.length}clearElementPool(){this.elementPool.length=0,this.pendingElementPool.length=0}invalidateElementPool(){this.elementPoolVersion++,this.clearElementPool()}markElementPoolGenerationCurrent(e){this.elementPoolTracker.set(e,this.elementPoolVersion)}isElementPoolGenerationCurrent(e){return this.elementPoolTracker.get(e)===this.elementPoolVersion}resolveEffectiveScrollBehavior(e,t){return B()?`instant`:e.behavior===`smooth-auto`?Math.abs(t-this.getScrollTop())<=this.getHeight()*10?`smooth`:`instant`:e.behavior??`instant`}scrollTo(e){if(this.root==null)return;let t=this.normalizeScrollTarget(e);if(t==null)return;let n=this.resolveScrollTargetTop(t);n!=null&&(this.primeScrollTarget(t),this.resolveEffectiveScrollBehavior(t,n)===`smooth`?this.scrollAnimation??={position:this.getScrollTop(),velocity:0,lastTimestamp:performance.now()}:this.scrollAnimation=void 0,this.suspendScrollInteractions(),this.pendingLayoutAnchor=void 0,this.pendingScrollTarget=t,this.render())}setSelectedLines(e,t){this.applySelectedLines(e,t)}getSelectedLines(){return this.selectedLines}clearSelectedLines(e){this.applySelectedLines(null,e)}getItem(e){return this.idToItem.get(e)?.item}getEditor(e){return this.itemEditors.get(e)?.editor}updateItem(e){let t=this.idToItem.get(e.id);return t==null?(console.error(`CodeView.updateItem: unknown item id "${e.id}"`),!1):this.syncItemRecord(t,e)?(this.markItemLayoutDirty(t),this.scrollDirty=!0,this.render(),this.syncItemEditors(),this.syncSelection(),!0):!1}updateItemId(e,t){if(e===t)return!0;let n=this.idToItem.get(e);if(n==null)return console.error(`CodeView.updateItemId: unknown item id "${e}"`),!1;if(this.idToItem.has(t))return console.error(`CodeView.updateItemId: duplicate item id "${t}"`),!1;this.idToItem.delete(e),n.item.id=t,this.idToItem.set(t,n),this.updateItemOptionsId(n.instance.options,t),this.selectedLines?.id===e&&(this.selectedLines={...this.selectedLines,id:t},this.options.onSelectedLinesChange?.(this.selectedLines));let r=this.itemEditors.get(e);return r!=null&&(r.state.id=t,this.itemEditors.delete(e),this.itemEditors.set(t,r),this.attachedEditors.delete(e)&&this.attachedEditors.add(t)),this.renamePendingScrollTarget(e,t),this.renamePendingLayoutAnchor(e,t),this.render(),!0}addItem(e){this.addItems([e])}addItems(e){this.appendItemsInternal(e),this.syncItemEditors(),this.syncSelection()}removeItem(e){let t=this.idToItem.get(e);if(t==null)return console.error(`CodeView.removeItem: unknown item id "${e}"`),!1;let n=[];for(let e of this.items)e!==t&&n.push(e.item);return this.setItems(n),!0}setItems(e){let t;this.items.length===0?this.appendItemsInternal(e):this.tryAppendItems(e)||(t=this.reconcileItems(e)),this.syncItemEditors(t),this.syncSelection()}appendItemsInternal(e,t=!0){if(e.length===0)return;let n=this.getLayout(),r=this.items.length===0?0:this.scrollHeight+n.gap,i=r;for(let t=0;t<e.length;t++){let i=e[t];if(i==null)throw Error(`CodeView.appendItemsInternal: missing input item`);if(this.idToItem.has(i.id))throw Error(`CodeView.addItem: duplicate id "${i.id}"`);let a=this.createItem(i,this.items.length,r);this.items.push(a),this.idToItem.set(a.item.id,a),this.instanceToItem.set(a.instance,a),a.height=_e(a),r+=a.height+n.gap}this.scrollHeight=r-n.gap,this.scrollDirty=!0,t&&(this.canSkipRenderForAppend(i)?this.syncContainerHeight():this.render())}canSkipRenderForAppend(e){return this.container!=null&&this.renderState.firstIndex!==-1&&this.pendingScrollTarget==null&&this.scrollAnimation==null&&this.layoutDirtyIndex==null&&e>this.windowSpecs.bottom}onThemeChange(){this.invalidateElementPool()}setOptions(e){if(e==null)return;this.capturePendingLayoutAnchor();let{options:t}=this,n=this.getLayout(),{itemMetricsCache:r}=this;ve(t,e)&&this.invalidateElementPool(),this.options=e;let i=this.computeMetricsCache(e.itemMetrics),a=!S(r,i),o=!S(n,this.getLayout());o&&this.syncLayout();let s=a||ye(t,e);if(s){let n=this.pendingLayoutReset;this.pendingLayoutReset={metrics:a?i:n?.metrics,resetFileLayoutCache:!0,resetDiffLayoutCache:!0,includeEstimatedDiffHeights:n?.includeEstimatedDiffHeights===!0||a||be(t,e)}}(o||s)&&(this.markLayoutDirtyFromIndex(0),this.scrollDirty=!0),te(t,e)||this.renderOptionsRevision++,this.syncItemEditors();let c=t.renderCodeViewHeader!==e.renderCodeViewHeader||t.renderCodeViewFooter!==e.renderCodeViewFooter;!this.isContainerManaged&&(this.items.length>0||c)&&this.render()}capturePendingLayoutAnchor(e=this.idToItem){this.root==null||this.items.length===0||this.pendingScrollTarget!=null||(this.pendingLayoutAnchor=this.getScrollAnchor(this.getScrollTop(),e))}render(t=!1){e.__STOP||(t?(P(this.computeRenderRangeAndEmit),this.computeRenderRangeAndEmit()):x(this.computeRenderRangeAndEmit))}isReady(){let{workerManager:e}=this;return e==null||e.isInitialized()||e.getStats().workersFailed?(this.clearReadySubscription(),!0):(this.isReadySubscription??=e.subscribeToStatChanges(e=>{e.managerState!==`initialized`&&!e.workersFailed||(this.clearReadySubscription(),this.render(!0))}),e.getStats().managerState===`waiting`&&e.initialize().catch(()=>{}),!1)}clearReadySubscription(){this.isReadySubscription!=null&&(this.isReadySubscription(),this.isReadySubscription=void 0)}instanceChanged(e,t){let n=this.instanceToItem.get(e);if(n==null)throw Error(`CodeView.instanceChanged: An instance has changed that is not registered`);t&&this.markItemLayoutDirty(n),this.render()}getWindowSpecs(){return this.windowSpecs}getContainerElement(){return this.root}getHeaderElement(){return this.header.element}getFooterElement(){return this.footer.element}getRenderedItems(){let{firstIndex:e,lastIndex:t}=this.renderState;if(e===-1||t===-1||t<e)return[];let n=[];for(let r=e;r<=t;r++){let e=this.items[r];e?.element!=null&&(e.type===`diff`?n.push({id:e.item.id,type:`diff`,item:e.item,version:e.version,element:e.element,instance:e.instance}):n.push({id:e.item.id,type:`file`,item:e.item,version:e.version,element:e.element,instance:e.instance}))}return n}setSlotCoordinator(e){return e===this.slotCoordinator?!1:(this.slotCoordinator=e,this.slotSnapshot=void 0,!0)}getSlotSnapshot(e){return this.buildSlotSnapshot(e)}buildSlotSnapshot(e){let t=De(this.getRenderedItems(),e),{element:n}=this.header,{element:r}=this.footer;if(!(t==null&&n==null&&r==null))return{items:t,header:n,footer:r}}subscribeToScroll(e){return this.scrollListeners.add(e),()=>{this.scrollListeners.delete(e)}}getLocalTopForInstance(e){let t=this.instanceToItem.get(e);if(t==null)throw Error(`CodeView.getLocalTopForInstance: unknown virtualized instance`);return t.top}getTopForItem(e){let t=this.idToItem.get(e);if(t!=null)return t.top+this.getItemTopOffset()}createItem(e,t,n){let{itemMetricsCache:r}=this;if(e.type===`diff`){let i=new g(this.createDiffOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`diff`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}let i=new f(this.createFileOptions(e.id),this,r,this.workerManager,this.isContainerManaged);return{type:`file`,item:e,version:e.version,index:t,top:n,height:0,element:void 0,renderedOptionsRevision:this.renderOptionsRevision,instance:i}}applySelectedLines(e,t){let{selectedLines:n}=this;e==null&&n==null||e!=null&&n?.id===e.id&&ee(n.range,e.range)||(n!=null&&n.id!==e?.id&&this.idToItem.get(n.id)?.instance.setSelectedLines(null,{notify:!1}),this.selectedLines=e,this.idToItem.get(e?.id??``)?.instance.setSelectedLines(e?.range??null,t))}syncSelection(){if(this.selectedLines==null)return;let e=this.idToItem.get(this.selectedLines.id);if(e==null){this.selectedLines=null,this.options.onSelectedLinesChange?.(null);return}e.instance.setSelectedLines(this.selectedLines.range,{notify:!1})}isItemInEditMode(e){return e.item.edit===!0&&e.item.collapsed!==!0}attachItemEditor(e){let{id:t}=e.item,{createEditor:n}=this.options;if(e.element==null||this.attachedEditors.has(t)||!this.isItemInEditMode(e))return;let r=this.itemEditors.get(t),i=!1;try{if(r==null){me(n);let e={id:t},a=n({onChange:(t,n)=>{let r=this.idToItem.get(e.id);r!=null&&(e.lastChange={item:r.item,file:t,lineAnnotations:n},this.options.onItemEditChange?.(r.item,t,n))}});if(a==null)return;r={editor:a,state:e},this.itemEditors.set(t,r),i=!0}r.editor.edit(e.instance),this.attachedEditors.add(t)}catch(n){throw i&&r!=null&&(this.itemEditors.delete(t),r.editor.cleanUp()),this.releaseRenderedItem(e),n}}syncItemEditors(e){if(this.itemEditors.size===0)return;let t=[];for(let[n,r]of this.itemEditors){let i=this.idToItem.get(n),a=e?.get(n);if(a==null&&i!=null&&this.isItemInEditMode(i))continue;r.editor.cleanUp(),this.itemEditors.delete(n),this.attachedEditors.delete(n);let{lastChange:o}=r.state,s=a==null?i?.item??o?.item:o?.item??a.item;s?.type===`diff`&&(a==null&&i!=null&&i.type===`diff`&&i.instance.completeEditSession()&&(this.markItemLayoutDirty(i),this.render()),b(s.fileDiff)),o!=null&&t.push(a!=null||i==null?o:{...o,item:i.item})}for(let{item:e,file:n,lineAnnotations:r}of t)this.options.onItemEditComplete?.(e,n,r)}renamePendingScrollTarget(e,t){let{pendingScrollTarget:n}=this;n==null||n.type===`position`||n.id!==e||(this.pendingScrollTarget={...n,id:t})}renamePendingLayoutAnchor(e,t){this.pendingLayoutAnchor?.id===e&&(this.pendingLayoutAnchor.id=t)}createFileOptionsPrototype(){let e={};for(let t of G)q(e,t,()=>this.options[t]);q(e,`stickyHeader`,()=>this.options.stickyHeaders),q(e,`collapsed`,e=>{let t=K(e);if(t!=null)return this.getItemOptions(t,`file`)?.item.collapsed});for(let t of re)this.defineItemSharedCallback(e,`file`,t);for(let t of ie)this.defineItemSelectionCallback(e,`file`,t);return e}createDiffOptionsPrototype(){let e={};for(let t of W)q(e,t,()=>this.options[t]);q(e,`stickyHeader`,()=>this.options.stickyHeaders),q(e,`hunkSeparators`,()=>this.options.hunkSeparators),q(e,`collapsed`,e=>{let t=K(e);if(t!=null)return this.getItemOptions(t,`diff`)?.item.collapsed});for(let t of re)this.defineItemSharedCallback(e,`diff`,t);for(let t of ie)this.defineItemSelectionCallback(e,`diff`,t);return e}createFileOptions(e){let t=Object.create(this.fileOptionsPrototype);return oe(t,{id:e}),t}createDiffOptions(e){let t=Object.create(this.diffOptionsPrototype);return oe(t,{id:e}),t}updateItemOptionsId(e,t){let n=K(e);if(n==null)throw Error(`CodeView.updateItemOptionsId: No valid state`);n.id=t}getItemOptions(e,t){let n=this.idToItem.get(e.id);if(!(n==null||n.type!==t))return n}defineItemSharedCallback(e,t,n){q(e,n,e=>{if(this.options[n]==null)return;let r=K(e);if(r==null)return;let i=r.callbackCache??={},a=i[n];return a??(a=((...e)=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=this.options[n];return a?.(...e,i)}),i[n]=a),a})}defineItemSelectionCallback(e,t,n){q(e,n,e=>{let r=K(e);if(r==null)return;let i=r.callbackCache??={},a=i[n];return a??(a=(e=>{let i=this.getItemOptions(r,t);if(i==null)return;let a=e==null?null:{id:i.item.id,range:e};this.options.controlledSelection!==!0&&(e!=null||this.selectedLines?.id===i.item.id)&&this.applySelectedLines(a,{notify:!1}),this.options.onSelectedLinesChange?.(a);let o=this.options[n];return o?.(e,i)}),i[n]=a),a})}markLayoutDirtyFromIndex(e){this.layoutDirtyIndex=Math.min(this.layoutDirtyIndex??e,e)}markItemLayoutDirty(e){if(this.items[e.index]!==e)throw Error(`CodeView.markItemLayoutDirty: unknown item id "${e.item.id}"`);this.markLayoutDirtyFromIndex(e.index)}tryAppendItems(e){if(e.length<=this.items.length)return!1;for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null||n.item.id!==r.id||n.type!==r.type)return!1}for(let t=0;t<this.items.length;t++){let n=this.items[t];if(n==null)throw Error(`CodeView.tryAppendItems: missing existing item`);let r=e[t];if(r==null)throw Error(`CodeView.tryAppendItems: append candidate missing prefix item`);this.syncItemRecord(n,r)&&this.markLayoutDirtyFromIndex(t)}return this.appendItemsInternal(e.slice(this.items.length),!1),this.scrollDirty=!0,this.render(),!0}reconcileItems(e){let{items:t,idToItem:n}=this,r=new Set(t),i=[],a=new Map,o=new Map,s=new Map,c;for(let s=0;s<e.length;s++){let l=e[s];if(l==null)throw Error(`CodeView.reconcileItems: missing input item`);if(a.has(l.id))throw Error(`CodeView.setItems: duplicate id "${l.id}"`);let u=n.get(l.id),d=u!=null&&u.type===l.type?u:this.createItem(l,s,0);d.index=s,u!=null&&u.type===l.type?(r.delete(u),this.syncItemRecord(d,l)&&(c=Math.min(c??s,s))):c=Math.min(c??s,s),t[s]!==d&&(c=Math.min(c??s,s)),i.push(d),a.set(l.id,d),o.set(d.instance,d)}if(c==null){if(r.size===0)return;c=Math.max(i.length-1,0)}this.capturePendingLayoutAnchor(a);for(let e=0;e<t.length;e++){let n=t[e];if(n==null||!r.has(n))continue;s.set(n.item.id,n),this.releaseRenderedItem(n);let a=Math.max(i.length-1,0);c=Math.min(c??a,a)}return this.items=i,this.idToItem=a,this.instanceToItem=o,this.renderState.firstIndex>=i.length?this.resetRenderState():this.renderState.lastIndex>=i.length&&(this.renderState.lastIndex=i.length-1),this.markLayoutDirtyFromIndex(c),this.scrollDirty=!0,this.render(),s.size>0?s:void 0}syncItemRecord(e,t){if(e.type!==t.type)throw Error(`CodeView.syncItemRecord: type mismatch for id "${t.id}"`);return e.version===t.version?!1:(e.item=t,e.version=t.version,e.renderedOptionsRevision=-1,!0)}getMaxScrollTopForHeight(e){let{paddingBottom:t,paddingTop:n}=this.getLayout();return Math.max(n+this.header.height+e+this.footer.height+t-this.getHeight(),0)}getMaxScrollTop(){return this.getMaxScrollTopForHeight(this.getScrollHeight())}shouldRebaseScroll(){return this.getMaxScrollTop()>pe}getPagedScrollHeight(){return this.shouldRebaseScroll()?Math.min(this.getScrollHeight(),J):this.getScrollHeight()}getMaxPagedScrollTop(){return this.getMaxScrollTopForHeight(this.getPagedScrollHeight())}clampPagedScrollTop(e){let t=this.getMaxPagedScrollTop();return Math.max(0,Math.min(e,t))}clampScrollTop(e){let t=this.getMaxScrollTop();return Math.max(0,Math.min(e,t))}getMaxScrollPageOffset(){return Math.max(this.getMaxScrollTop()-this.getMaxPagedScrollTop(),0)}clampScrollPageOffset(e){let t=this.getMaxScrollPageOffset();return Math.max(0,Math.min(e,t))}resolveScrollPageWindow(e,t){let n=U(this.clampPagedScrollTop(t)),r=this.clampScrollPageOffset(e-n);return n=U(this.clampPagedScrollTop(e-r)),r=this.clampScrollPageOffset(e-n),{pagedScrollTop:n,scrollPageOffset:r}}resolvePagedScrollPosition(e){if(!this.shouldRebaseScroll())return{pagedScrollTop:this.clampPagedScrollTop(e),scrollPageOffset:0};let t=this.clampScrollPageOffset(this.scrollPageOffset),n=e-t,r=this.getMaxPagedScrollTop(),i=this.getMaxScrollPageOffset(),a=n>pe&&t<i,o=n<ue&&t>0;return n<0||n>r||a||o?this.resolveScrollPageWindow(e,o?Math.min(fe,r):de):{pagedScrollTop:U(this.clampPagedScrollTop(n)),scrollPageOffset:t}}needsScrollPageUpdate(e){let t=U(this.clampScrollTop(e)),{scrollPageOffset:n}=this.resolvePagedScrollPosition(t);return n!==this.scrollPageOffset}getPagedLayoutTop(e){return this.shouldRebaseScroll()?Math.max(e-this.scrollPageOffset,0):e}getStickyHeaderOffset(){return this.options.stickyHeaders===!0&&this.options.disableFileHeader!==!0?this.itemMetricsCache.diffHeaderHeight:0}getScrollTargetRect(e){let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return{top:t.top,height:t.height};if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Se(e.range)} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return{top:t.top+n.top,height:n.height}}normalizeScrollTarget(e){if(e.type===`position`||e.align!==`nearest`)return e;let t=this.getScrollTargetRect(e);if(t==null)return;let n=e.offset??0,r=this.getItemTopOffset()+t.top,i=r+t.height,a=this.getScrollTop(),o=a+(e.type===`line`||e.type===`range`?this.getStickyHeaderOffset():0),s=a+this.getHeight();if(!(r-n<=o&&i+n>=s)){if(r-n<o)return{...e,align:`start`};if(i+n>s)return{...e,align:`end`}}}resolveScrollTargetTop(e){if(e.type===`position`){let t=this.clampScrollTop(e.position);return t===e.position?this.clampScrollTop(e.position-this.getStickyHeaderOffset()):t}let t=this.idToItem.get(e.id);if(t==null){console.warn(`CodeView.scrollTo: unknown item id "${e.id}"`);return}if(e.type===`item`)return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top,t.height,e.align,e.offset));if(e.type===`range`){let n=this.getRangeScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve range ${Se(e.range)} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}let n=this.getLineScrollPosition(t,e);if(n==null){console.warn(`CodeView.scrollTo: unable to resolve line ${e.lineNumber} for item "${e.id}"`);return}return this.clampScrollTop(this.resolveAlignedScrollPosition(t.top+n.top,n.height,e.align,e.offset,this.getStickyHeaderOffset()))}resolveAlignedScrollPosition(e,t,n,r=0,i=0){e+=this.getItemTopOffset();let a=this.getHeight();return n===`center`&&t+r<a?e-(a-t)/2+r:n===`end`?e-(a-t)+r:e-i-r}getLineScrollPosition(e,t){return e.type===`diff`?e.instance.getLinePosition(t.lineNumber,t.side):e.instance.getLinePosition(t.lineNumber)}getRangeScrollPosition(e,t){let{range:n}=t,r=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.start,side:n.side}),i=this.getLineScrollPosition(e,{type:`line`,id:t.id,lineNumber:n.end,side:n.endSide??n.side});if(r==null||i==null)return;let a=r.top,o=a+r.height,s=i.top,c=s+i.height,l=Math.min(a,s);return{top:l,height:Math.max(o,c)-l}}computeTargetScrollTopForFrame(e,t){if(this.pendingScrollTarget==null)return e;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null)return e;let{scrollAnimation:r}=this;return r==null?n:this.computeSpringStep(r,n,t).position}computeSpringStep(e,t,n){let r=Math.max(0,n-e.lastTimestamp),{omega:i}=this.getSmoothScrollSettings(),a=Math.exp(-i*r),o=e.position-t,s=e.velocity+i*o;return{position:t+(o+s*r)*a,velocity:(s*(1-i*r)-i*o)*a}}advanceScrollAnimation(e,t){if(this.pendingScrollTarget==null)return;let n=this.resolveScrollTargetTop(this.pendingScrollTarget);if(n==null){this.pendingScrollTarget=void 0,this.scrollAnimation=void 0;return}let r=this.scrollAnimation;if(r==null)return n;r.position+=t;let{position:i,velocity:a}=this.computeSpringStep(r,n,e);r.lastTimestamp=e,r.position=i,r.velocity=a;let{positionEpsilon:o,velocityEpsilon:s}=this.getSmoothScrollSettings();return Math.abs(n-i)<=o&&Math.abs(a)<=s?(r.position=n,r.velocity=0,this.scrollAnimation=void 0,n):r.position}computeRenderRangeAndEmit=(t=performance.now())=>{if(e.__STOP||this.container==null||!this.isReady())return;let n=this.getHeight(),r=this.getScrollTop(),i=r,a=this.pendingLayoutAnchor!=null,o=this.getScrollAnchor(i);if(this.layoutDirtyIndex!=null&&(this.recomputeLayout(this.layoutDirtyIndex,this.pendingLayoutReset),this.layoutDirtyIndex=void 0,this.pendingLayoutReset=void 0,a=!0),a&&o!=null){let e=this.resolveAnchoredScrollTop(o);if(e!=null){let t=e-i;i=e,this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}}a&&(i=this.clampScrollTop(i),this.syncContainerHeight());let s=this.computeTargetScrollTopForFrame(i,t),c=!a&&(this.renderState.scrollTop===-1||Math.abs(s-this.renderState.scrollTop)>n+this.config.overscrollSize*2);c&&(o=void 0),this.windowSpecs=y({scrollTop:s-this.header.height,height:n,scrollHeight:this.getScrollHeight(),fitPerfectly:c,fitPerfectlyOverscroll:this.getFitPerfectlyOverscroll(),overscrollSize:this.config.overscrollSize});let l=r;(this.pendingScrollTarget!=null&&s!==l||this.needsScrollPageUpdate(s))&&(this.applyScrollFix(s,l,this.windowSpecs),l=s);let{top:u,bottom:d}=this.windowSpecs,{firstIndex:f,lastIndex:p}=this.renderState;if(f>=0)for(let e=f;e<=p;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: No item at index: ${e}`);t.top>u-t.height&&t.top<=d||this.releaseRenderedItem(t)}let m=this.reconcileHeaderFooterHosts(),h,g=new Set,_=this.findFirstVisibleIndex(u),v=this.findLastVisibleIndex(d);for(let e=_;e<=v;e++){let t=this.items[e];if(t==null)throw Error(`CodeView.computeRenderRangeAndEmit: missing item`);let{instance:n}=t;t.element==null?(t.element=this.acquireElement(),Te(this.stickyContainer,t.element,h),n.virtualizedSetup(),we(t,t.element)&&(t.renderedOptionsRevision=this.renderOptionsRevision,g.add(t)),h=t.element):(Te(this.stickyContainer,t.element,h),we(t,void 0,t.renderedOptionsRevision!==this.renderOptionsRevision)&&(t.renderedOptionsRevision=this.renderOptionsRevision,g.add(t)),h=t.element),t.item.edit===!0&&this.attachItemEditor(t)}this.renderState.firstIndex=_<=v?_:-1,this.renderState.lastIndex=v,this.flushSlotCoordinator(),this.flushManagers(g),m&&this.measureMountedHosts(),this.reconcileRenderedItems(g),this.syncContainerHeight(),this.updateStickyPositioning();let b=o==null?void 0:this.resolveAnchoredScrollTop(o);o===this.pendingLayoutAnchor&&(this.pendingLayoutAnchor=void 0);let x=b==null?0:b-i,S=s,C=!1;if(this.pendingScrollTarget!=null){let e=this.advanceScrollAnimation(t,x);e==null?S=i:(S=e,C=!0)}else S=b??s;S!==l&&(this.applyScrollFix(S,l,this.windowSpecs),l=S),C&&this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0),this.renderState.scrollTop=U(l),this.updateStickyPositioning(),this.validateStickyContainerHeight(),this.fixContainerFocus(),(c||this.scrollAnimation!=null)&&this.render()};flushManagers(e){for(let t of e)t.instance.flushManagers()}syncContainerHeight(){let e=this.getPagedScrollHeight();this.container==null||this.containerHeight===e||(this.container.style.height=`${e}px`,this.containerHeight=e)}getStickyBounds(e){let{firstIndex:t,lastIndex:n}=e==null?this.renderState:{firstIndex:this.findFirstVisibleIndex(e.top),lastIndex:this.findLastVisibleIndex(e.bottom)};if(t===-1||n===-1||t>n)return;let r=this.items[t]?.instance.getAdvancedStickySpecs(e),i=this.items[n]?.instance.getAdvancedStickySpecs(e);if(!(r==null||i==null))return{stickyTop:this.getPagedLayoutTop(Math.max(r.topOffset,0)),stickyBottom:this.getPagedLayoutTop(i.topOffset+i.height)}}applyStickyPositioning({stickyTop:e,stickyBottom:t}){let n=this.getHeight(),{itemMetricsCache:r}=this,i=t-e;this.renderState.stickyHeight=i,this.renderState.stickyTop=e,this.renderState.stickyBottom=t,this.stickyOffset.style.height=`${e}px`;let a=(Math.random()*r.lineHeight>>0)*-1,o=-Math.max(i+a,0)+n;this.stickyContainer.style.top=`${o}px`,this.stickyContainer.style.bottom=`${o+r.diffHeaderHeight}px`}syncPagedScrollScaffolding(e){this.syncContainerHeight();let t=this.getStickyBounds(e);t!=null&&this.applyStickyPositioning(t)}reconcileRenderedItems(e){let{firstIndex:t,lastIndex:n}=this.renderState;if(t===-1)return;let r=-1,i=!1;for(let a=t;a<this.items.length&&!(!i&&a>n);a++){let t=this.items[a];if(t==null)throw Error(`CodeView.reconcileRenderedItems: Invalid item`);r===-1?r=t.top:t.top!==r&&(t.top=r,t.instance.syncVirtualizedTop(),i=!0),(e==null?a<=n:e.has(t))&&(t.instance.reconcileHeights()&&(i=!0,t.height=t.instance.getVirtualizedHeight()),this.validateRenderedItemHeight(t)),r+=t.instance.getVirtualizedHeight(),a<this.items.length-1&&(r+=this.getLayout().gap)}i&&r!=null&&(this.scrollDirty=!0,this.scrollHeight=r)}updateStickyPositioning(){let e=this.getStickyBounds();if(e==null){this.renderState.firstIndex===-1&&(this.stickyOffset.style.height=``);return}let{stickyTop:t,stickyBottom:n}=e;n-t===this.renderState.stickyHeight&&t===this.renderState.stickyTop&&n===this.renderState.stickyBottom||this.applyStickyPositioning(e)}handleScroll=()=>{e.__STOP||(this.suspendScrollInteractions(),this.scrollDirty=!0,this.notifyScroll(),this.render())};clearPendingScroll=()=>{this.pendingScrollTarget=void 0,this.pendingLayoutAnchor=void 0,this.scrollAnimation=void 0};handleResize=e=>{let t=!1;for(let n of e)if(n.target===this.stickyContainer){let e=n.borderBoxSize[0].blockSize;if(Math.abs(e-this.renderState.stickyHeight)>=ce){let e=this.getScrollTop(),n=this.getScrollAnchor(e);this.reconcileRenderedItems(),this.updateStickyPositioning();let r=n==null?void 0:this.resolveAnchoredScrollTop(n);if(r!=null){let t=r-e;this.applyScrollFix(r,e,this.windowSpecs),this.scrollAnimation!=null&&(this.scrollAnimation.position+=t)}this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0),t=!0}}else if(n.target===this.header.element||n.target===this.footer.element){let e=n.target===this.header.element?this.header:this.footer,r=n.borderBoxSize[0].blockSize;if(r!==e.height){let n=this.getScrollTop(),i=this.getScrollAnchor(n);this.setHostHeight(e,r);let a=i==null?void 0:this.resolveAnchoredScrollTop(i);if(a!=null){let e=a-n;this.applyScrollFix(a,n,this.windowSpecs),this.scrollAnimation!=null&&(this.scrollAnimation.position+=e)}this.pendingScrollTarget!=null&&this.isPendingTargetSettled(this.pendingScrollTarget)&&(this.pendingScrollTarget=void 0,this.scrollAnimation=void 0),t=!0}}else this.scrollDirty=!0,this.heightDirty=!0,t=!0;t&&this.render(!0)};getScrollAnchorViewportTop(e,t){return e<t?t+this.getStickyHeaderOffset():t}getScrollAnchor(e,t=this.idToItem){let n,{pendingLayoutAnchor:r}=this;if(r!=null){let e=this.idToItem.get(r.id);if(e!=null&&t.get(r.id)===e)return r;e!=null&&(n=e)}if(e<=0)return;let{firstIndex:i,lastIndex:a,stickyTop:o,stickyBottom:s}=this.renderState;if(i===-1||a===-1)return;let c=this.getHeight();if(!(o===-1||s===-1)){for(let r=i;r<=a;r++){let i=this.items[r];if(i==null)continue;let a=this.getItemTopOffset()+i.top;if(a+i.height<=e)continue;if(a>=e+c)break;if(t.get(i.item.id)!==i){n??=i;continue}if(a>=e)return{type:`item`,id:i.item.id,viewportOffset:a-e};let o=this.getScrollAnchorViewportTop(a,e)-a,s=i.instance.getNumericScrollAnchor(o);if(s!=null){let t=a+s.top;return{type:`line`,id:i.item.id,lineNumber:s.lineNumber,side:s.side,viewportOffset:t-e}}}if(n!=null)for(let e=n.index+1;e<this.items.length;e++){let n=this.items[e];if(n!=null&&t.get(n.item.id)===n)return{type:`item`,id:n.item.id,viewportOffset:0}}}}resolveAnchoredScrollTop(e){let t=this.idToItem.get(e.id);if(t==null)return;let n=this.getItemTopOffset();if(e.type===`item`){let r=n+t.top;return this.clampScrollTop(r-e.viewportOffset)}let r=t.type===`diff`?t.instance.getLinePosition(e.lineNumber,e.side):t.instance.getLinePosition(e.lineNumber);if(r==null)return;let i=n+t.top+r.top;return this.clampScrollTop(i-e.viewportOffset)}applyScrollFix(e,t,n){if(this.root==null)return;let r=U(this.clampScrollTop(e)),i=U(t),{scrollPageOffset:a}=this,o=U(this.clampPagedScrollTop(i-a)),{pagedScrollTop:s,scrollPageOffset:c}=this.resolvePagedScrollPosition(r),l=s,u=a!==c;r===this.renderState.scrollTop&&r===i&&l===o&&!u||(this.suspendScrollInteractions(),(l!==o||u)&&(this.scrollPageOffset=c,this.syncPagedScrollScaffolding(n)),l!==o&&this.root.scrollTo({top:l,behavior:`instant`}),this.renderState.scrollTop=r,this.scrollTop=r,this.scrollDirty=!1)}isPendingTargetSettled(e){let t=this.resolveScrollTargetTop(e);return t==null?!0:U(this.getScrollTop())===U(t)}getScrollTop(){if(!this.scrollDirty)return this.scrollTop;this.scrollDirty=!1;let e=this.root?.scrollTop??0;return this.scrollTop=this.clampScrollTop(e+this.scrollPageOffset),this.scrollTop}getHeight(){return this.heightDirty?(this.heightDirty=!1,this.height=this.root?.getBoundingClientRect().height??0,this.height):this.height}getScrollHeight(){return this.scrollHeight}flushSlotCoordinator(){if(this.slotCoordinator==null)return;let e=this.buildSlotSnapshot(this.slotCoordinator);V(this.slotSnapshot,e)||(this.slotSnapshot=e,this.slotCoordinator.onSnapshotChange(e))}notifyScroll(){if(this.scrollListeners.size===0)return;let e=this.getScrollTop();for(let t of this.scrollListeners)t(e,this)}findFirstVisibleIndex(e){let t=0,n=this.items.length-1,r=this.items.length;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findFirstVisibleIndex: invalid item index`);a.top+a.height>e?(r=i,n=i-1):t=i+1}return r}findLastVisibleIndex(e){let t=0,n=this.items.length-1,r=-1;for(;t<=n;){let i=t+n>>1,a=this.items[i];if(a==null)throw Error(`CodeView.findLastVisibleIndex: invalid item index`);a.top<=e?(r=i,t=i+1):n=i-1}return r}recomputeLayout(e=0,t){if(this.items.length===0){this.scrollHeight=0;return}let n=this.getLayout(),r=0;if(e>0){let t=this.items[e-1];if(t==null)throw Error(`CodeView.recomputeLayout: invalid dirty index`);r=t.top+t.height+n.gap}for(let i=e;i<this.items.length;i++){let e=this.items[i];if(e==null)throw Error(`CodeView.recomputeLayout: invalid item index`);if(e.top=r,e.type===`diff`){let n=e.instance.consumeCodeViewLayoutChanges(e.item.fileDiff);n!=null&&Object.assign(e.item.fileDiff,n),e.height=e.instance.prepareCodeViewItem(e.item.fileDiff,r,t,e.item.annotations??[])}else e.height=e.instance.prepareCodeViewItem(e.item.file,r,t,e.item.annotations??[]);r+=e.height,i<this.items.length-1&&(r+=n.gap)}r!==this.scrollHeight&&(this.scrollDirty=!0),this.scrollHeight=r}resetRenderState(){this.renderState.scrollTop=-1,this.renderState.firstIndex=-1,this.renderState.lastIndex=-1,this.renderState.stickyHeight=0,this.renderState.stickyTop=-1,this.renderState.stickyBottom=-1}getFitPerfectlyOverscroll(){return this.getLayout().gap+this.itemMetricsCache.diffHeaderHeight}};function _e(e){return e.instance.cleanUp(!0),e.type===`diff`?e.instance.prepareCodeViewItem(e.item.fileDiff,e.top,void 0,e.item.annotations??[]):e.instance.prepareCodeViewItem(e.item.file,e.top,void 0,e.item.annotations??[])}function ve(e,t){return!_(e.theme??N,t.theme??N)||(e.themeType??`system`)!==(t.themeType??`system`)||e.unsafeCSS!==t.unsafeCSS}function ye(e,t){return(e.overflow??`scroll`)!==(t.overflow??`scroll`)||(e.disableLineNumbers??!1)!==(t.disableLineNumbers??!1)||(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||e.unsafeCSS!==t.unsafeCSS||(e.diffStyle??`split`)!==(t.diffStyle??`split`)||(e.diffIndicators??`bars`)!==(t.diffIndicators??`bars`)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function be(e,t){return(e.disableFileHeader??!1)!==(t.disableFileHeader??!1)||(e.hunkSeparators??`line-info`)!==(t.hunkSeparators??`line-info`)||(e.expandUnchanged??!1)!==(t.expandUnchanged??!1)||(e.collapsedContextThreshold??1)!==(t.collapsedContextThreshold??1)}function xe(e){return e instanceof SVGElement?!0:v(e)&&(e.hasAttribute(`data-core-css`)||e.hasAttribute(`data-theme-css`)||e.hasAttribute(`data-unsafe-css`))}function Se(e){let t=Ce(e.start,e.side),n=Ce(e.end,e.endSide??e.side);return t===n?t:`${t}-${n}`}function Ce(e,t){return t==null?`${e}`:`${t===`deletions`?`D`:`A`}${e}`}function we(e,t,n=!1){return e.type===`diff`?e.instance.render({deferManagers:!0,fileContainer:t,fileDiff:e.item.fileDiff,forceRender:n,lineAnnotations:e.item.annotations??[]}):e.instance.render({deferManagers:!0,fileContainer:t,file:e.item.file,forceRender:n,lineAnnotations:e.item.annotations??[]})}function Te(e,t,n){if(n==null){e.firstChild!==t&&e.prepend(t);return}n.nextSibling!==t&&n.after(t)}function Ee(e){return(e.annotations?.length??0)>0}function De(e,{hasHeaderRenderers:t,hasAnnotationRenderer:n,hasGutterRenderer:r}){if(e.length===0)return;if(t||r)return e;if(!n)return;let i=[];for(let t of e)Ee(t.item)&&i.push(t);return i.length>0?i:void 0}var Y=e(r(),1),X=e(t(),1),Z=n(),Oe=typeof window>`u`?Y.useEffect:Y.useLayoutEffect;function ke(e){return{instance:void 0,items:void 0,controlled:e,managedOptions:void 0,disableFlushSync:!1,slotCoordinator:void 0}}function Ae(e,t){let{className:n,containerRef:r,disableWorkerPool:i=!1,editorOptions:a,initialItems:o,items:s,onItemEditChange:c,onItemEditComplete:l,onScroll:u,onSelectedLinesChange:d,options:f,renderAnnotation:p,renderCodeViewFooter:m,renderCodeViewHeader:h,renderCustomHeader:g,renderGutterUtility:_,renderHeaderFilenameSuffix:v,renderHeaderMetadata:y,renderHeaderPrefix:b,selectedLines:x,style:S}=e,T=s!==void 0,E=C(),ee=(0,Y.useContext)(w),O=(0,Y.useRef)(ke(T)),k=g!=null,A=p!=null,j=_!=null,M=k||b!=null||v!=null||y!=null,N=M||A||j,P=h!=null,F=m!=null,I=D(e=>{d?.(e)}),L=x!==void 0,R=D(e=>{if(E==null)throw Error(`CodeView: EditContext is not attached`);let t=E({...a,...e});if(t==null)throw Error(`CodeView: EditProvider.createEditor must return an editor instance`);return t}),z=D((e,t,n)=>{c?.(e,t,n)}),B=D((e,t,n)=>{l?.(e,t,n)}),V=(0,Y.useMemo)(()=>Fe({options:f,hasCustomHeader:k,hasGutterRenderer:j,hasCodeViewHeader:P,hasCodeViewFooter:F,onSelectedLinesChange:d==null?void 0:I,controlledSelection:L,createEditor:E==null?void 0:R,onItemEditChange:c==null?void 0:z,onItemEditComplete:l==null?void 0:B}),[E,L,R,z,B,I,F,P,k,j,c,l,d,f]),[H]=(0,Y.useState)(()=>Pe()),[,ne]=(0,Y.useState)({}),U=D(e=>{O.current.instance!=null&&(e==null||e!==O.current.instance.getContainerElement())&&(O.current.instance.cleanUp(),H.publish(void 0),O.current=ke(T)),e!=null&&e!==O.current.instance?.getContainerElement()&&(O.current.instance=new ge(V,i?void 0:ee,!0),O.current.instance.setup(e)),typeof r==`function`?r(e):r!=null&&(r.current=e)}),W=D(e=>{O.current.disableFlushSync?H.publish(e):(0,X.flushSync)(()=>{H.publish(e)})}),G=(0,Y.useMemo)(()=>{if(!(!M&&!A&&!j&&!P&&!F))return{hasHeaderRenderers:M,hasAnnotationRenderer:A,hasGutterRenderer:j,onSnapshotChange:W}},[W,A,j,M,P,F]);return Oe(()=>u==null?void 0:O.current.instance?.subscribeToScroll(u)),Oe(()=>{let{instance:e,controlled:t,items:n,managedOptions:r,slotCoordinator:i}=O.current;if(e!=null)try{O.current.disableFlushSync=!0;let a=!1;if(te(V,r)||(O.current.managedOptions=V,e.setOptions(V),a=!0),t!==T){console.error(`CodeView: cannot switch between controlled and uncontrolled modes. Remount with a new key instead.`);return}if(T)s!==n&&(Ne(n,s)?O.current.items=s:Me(n,s)?(O.current.items=s,e.addItems(s.slice(n.length))):(O.current.items=s,e.setItems(s),a=!0));else if(n==null){let t=o??[];O.current.items=t,t.length>0&&(e.setItems(t),a=!0)}x!==void 0&&e.setSelectedLines(x,{notify:!1});let c=e.setSlotCoordinator(G),l=!1;G!==i&&((G==null||i==null)&&(l=!0),O.current.slotCoordinator=G),(a||c)&&e.render(!0),c&&G==null&&H.publish(void 0),l&&ne({})}finally{O.current.disableFlushSync=!1}}),(0,Y.useImperativeHandle)(t,()=>({addItems(e){let{controlled:t,instance:n}=O.current;Q(t,`addItems`),n==null?console.error(`CodeView.addItems: no valid instance to append items with`,e):n.addItems(e)},getItem(e){let{instance:t}=O.current;if(t==null){console.error(`CodeView.getItem: no valid instance exists`,e);return}else return t.getItem(e)},removeItem(e){let{controlled:t,instance:n}=O.current;return Q(t,`removeItem`),n==null?(console.error(`CodeView.removeItem: no valid instance to remove item from`,e),!1):n.removeItem(e)},updateItem(e){let{controlled:t,instance:n}=O.current;return Q(t,`updateItem`),n==null?(console.error(`CodeView.updateItem: no valid instance to update item with`,e),!1):n.updateItem(e)},updateItemId(e,t){let{controlled:n,instance:r}=O.current;return Q(n,`updateItemId`),r==null?(console.error(`CodeView.updateItemId: no valid instance to update item id with`,e,t),!1):r.updateItemId(e,t)},scrollTo(e){let{instance:t}=O.current;t==null?console.error(`CodeView.scrollTo: no valid instance to scroll with`,e):t.scrollTo(e)},setSelectedLines(e){let{instance:t}=O.current;t==null?console.error(`CodeView.setSelectedLines: no valid instance to update selection with`,e):(t.setSelectedLines(e,{notify:!1}),I(e))},getSelectedLines(){let{instance:e}=O.current;return e==null?(console.error(`CodeView.getSelectedLines: no valid instance exists`),null):e.getSelectedLines()},clearSelectedLines(){let{instance:e}=O.current;e==null?console.error(`CodeView.clearSelectedLines: no valid instance to update selection with`):(e.clearSelectedLines({notify:!1}),I(null))},getEditor(e){let{instance:t}=O.current;if(t==null){console.error(`CodeView.getEditor: no valid instance exists`,e);return}return t.getEditor(e)},getInstance(){return O.current.instance}}),[I]),(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`div`,{ref:U,className:n,style:S}),(N||P||F)&&(0,Z.jsx)(Ie,{managedContentStore:H,renderCustomHeader:g,renderHeaderPrefix:b,renderHeaderFilenameSuffix:v,renderHeaderMetadata:y,renderAnnotation:p,renderGutterUtility:_,renderCodeViewHeader:h,renderCodeViewFooter:m})]})}var je=(0,Y.forwardRef)(Ae);function Me(e,t){if(e==null||t.length<=e.length)return!1;if(e.length===0)return!0;for(let n=0;n<e.length;n++)if(t[n]!==e[n])return!1;return!0}function Ne(e,t){if(e==null||e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(e[n]!==t[n])return!1;return!0}function Q(e,t){if(e)throw Error(`CodeView.${t} cannot be used when CodeView is controlled. Use initialItems for imperative item updates.`)}function Pe(){let e,t=new Set;return{getSnapshot(){return e},publish(n){if(!V(e,n)){e=n;for(let e of t)e()}},subscribe(e){return t.add(e),()=>{t.delete(e)}}}}function Fe({options:e,hasCustomHeader:t,hasGutterRenderer:n,hasCodeViewHeader:r,hasCodeViewFooter:i,onSelectedLinesChange:a,controlledSelection:o,createEditor:s,onItemEditChange:c,onItemEditComplete:l}){let u={...e,controlledSelection:o,onSelectedLinesChange:a,createEditor:s};return c!=null&&(u.onItemEditChange=c),l!=null&&(u.onItemEditComplete=l),t&&(u.renderCustomHeader=$),n&&(u.renderGutterUtility=$),r&&(u.renderCodeViewHeader=$),i&&(u.renderCodeViewFooter=$),u}var Ie=(0,Y.memo)(function({managedContentStore:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderFilenameSuffix:r,renderHeaderMetadata:i,renderAnnotation:a,renderGutterUtility:o,renderCodeViewHeader:s,renderCodeViewFooter:c}){"use no memo";let l=D(t=>e.subscribe(t)),u=D(()=>e.getSnapshot()),d=(0,Y.useSyncExternalStore)(l,u,u),f=``;for(let e of d?.items??[])f+=`${e.id}:${e.version}:${e.type}`;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Y.useMemo)(()=>d?.items?.map(e=>(0,X.createPortal)(Le({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderFilenameSuffix:r,renderHeaderMetadata:i,renderAnnotation:a,renderGutterUtility:o}),e.element,e.id)),[t,n,r,i,a,o,f]),(0,Y.useMemo)(()=>s!=null&&d?.header!=null?(0,X.createPortal)(s(),d.header):null,[s,d?.header]),(0,Y.useMemo)(()=>c!=null&&d?.footer!=null?(0,X.createPortal)(c(),d.footer):null,[c,d?.footer])]})});function Le({renderedItem:e,renderCustomHeader:t,renderHeaderPrefix:n,renderHeaderFilenameSuffix:r,renderHeaderMetadata:i,renderAnnotation:a,renderGutterUtility:o}){if(e.type===`diff`){let{item:s,instance:c}=e;return T({fileDiff:s.fileDiff,renderCustomHeader:t==null?void 0:()=>t(s),renderHeaderPrefix:n==null?void 0:()=>n(s),renderHeaderFilenameSuffix:r==null?void 0:()=>r(s),renderHeaderMetadata:i==null?void 0:()=>i(s),renderAnnotation:a==null?void 0:e=>a(e,s),lineAnnotations:s.annotations,renderGutterUtility:o==null?void 0:e=>o(e,s),getHoveredLine:c.getHoveredLine})}else{let{item:s,instance:c}=e;return p({file:s.file,renderCustomHeader:t==null?void 0:()=>t(s),renderHeaderPrefix:n==null?void 0:()=>n(s),renderHeaderFilenameSuffix:r==null?void 0:()=>r(s),renderHeaderMetadata:i==null?void 0:()=>i(s),renderAnnotation:a==null?void 0:e=>a(e,s),lineAnnotations:s.annotations,renderGutterUtility:o==null?void 0:e=>o(e,s),getHoveredLine:c.getHoveredLine})}}function $(){}function Re(e,t){return e.length>0&&e.every(e=>t.has(e))}function ze(e,t){return Re(e,t)?new Set:new Set(e)}var Be=function(e){return e.disabled=`data-disabled`,e.orientation=`data-orientation`,e.multiple=`data-multiple`,e}({}),Ve={multiple(e){return e?{[Be.multiple]:``}:null}},He=Y.forwardRef(function(e,t){let{defaultValue:n,disabled:r=!1,loopFocus:i=!0,onValueChange:s,orientation:c=`horizontal`,multiple:f=!1,value:p,className:m,render:h,style:g,..._}=e,v=a(!0),y=Y.useMemo(()=>p!==void 0||n!==void 0,[p,n]),b=(v?.disabled??!1)||r,[x,S]=u({controlled:p,default:p===void 0?n??o:void 0,name:`ToggleGroup`,state:`value`}),C=l((e,t,n)=>{let r;f?(r=x.slice(),t?r.push(e):r.splice(x.indexOf(e),1)):r=t?[e]:[],s?.(r,n),!n.isCanceled&&S(r)}),w={disabled:b,multiple:f,orientation:c},T=Y.useMemo(()=>({disabled:b,orientation:c,setGroupValue:C,value:x,isValueInitialized:y}),[b,c,C,x,y]),E={role:`group`},D=d(`div`,e,{enabled:!!v,state:w,ref:t,props:[E,_],stateAttributesMapping:Ve});return(0,Z.jsx)(I.Provider,{value:T,children:v?D:(0,Z.jsx)(M,{render:h,className:m,style:g,state:w,refs:[t],props:[E,_],stateAttributesMapping:Ve,loopFocus:i,enableHomeAndEndKeys:!0,orientation:c})})}),Ue=i(),We=Y.createContext({size:`default`,variant:`default`});function Ge(e){let t=(0,Ue.c)(24),n,r,i,a,o,s;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5],s=t[6]):({className:r,variant:a,size:o,orientation:s,children:n,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o,t[6]=s);let l=a===void 0?`default`:a,u=o===void 0?`default`:o,d=s===void 0?`horizontal`:s,f;t[7]!==u||t[8]!==l?(f={size:u,variant:l},t[7]=u,t[8]=l,t[9]=f):f=t[9];let p=f,m=d===`horizontal`?`*:pointer-coarse:after:min-w-auto`:`*:pointer-coarse:after:min-h-auto`,h=l==="default"?`gap-0.5`:d===`horizontal`?`*:not-first:not-data-[slot=separator]:before:-start-[0.5px] *:not-last:not-data-[slot=separator]:before:-end-[0.5px] *:not-first:rounded-s-none *:not-last:rounded-e-none *:not-first:border-s-0 *:not-last:border-e-0 *:not-first:before:rounded-s-none *:not-last:before:rounded-e-none`:`*:not-first:not-data-[slot=separator]:before:-top-[0.5px] *:not-last:not-data-[slot=separator]:before:-bottom-[0.5px] flex-col *:not-first:rounded-t-none *:not-last:rounded-b-none *:not-first:border-t-0 *:not-last:border-b-0 *:not-first:before:rounded-t-none *:not-last:before:rounded-b-none *:data-[slot=toggle]:not-last:before:hidden dark:*:last:before:hidden dark:*:first:before:block`,g;t[10]!==r||t[11]!==m||t[12]!==h?(g=c(`flex w-fit *:focus-visible:z-10 dark:*:[[data-slot=separator]:has(+[data-slot=toggle]:hover)]:before:bg-input/64 dark:*:[[data-slot=separator]:has(+[data-slot=toggle][data-pressed])]:before:bg-input dark:*:[[data-slot=toggle]:hover+[data-slot=separator]]:before:bg-input/64 dark:*:[[data-slot=toggle][data-pressed]+[data-slot=separator]]:before:bg-input`,m,h,r),t[10]=r,t[11]=m,t[12]=h,t[13]=g):g=t[13];let _;t[14]!==n||t[15]!==p?(_=(0,Z.jsx)(We,{value:p,children:n}),t[14]=n,t[15]=p,t[16]=_):_=t[16];let v;return t[17]!==d||t[18]!==i||t[19]!==u||t[20]!==g||t[21]!==_||t[22]!==l?(v=(0,Z.jsx)(He,{className:g,"data-size":u,"data-slot":`toggle-group`,"data-variant":l,orientation:d,...i,children:_}),t[17]=d,t[18]=i,t[19]=u,t[20]=g,t[21]=_,t[22]=l,t[23]=v):v=t[23],v}function Ke(e){let t=(0,Ue.c)(12),n,r,i,a,o;t[0]===e?(n=t[1],r=t[2],i=t[3],a=t[4],o=t[5]):({className:r,children:n,variant:o,size:a,...i}=e,t[0]=e,t[1]=n,t[2]=r,t[3]=i,t[4]=a,t[5]=o);let s=Y.use(We),c=o??s.variant,l=a??s.size,u;return t[6]!==n||t[7]!==r||t[8]!==i||t[9]!==l||t[10]!==c?(u=(0,Z.jsx)(h,{className:r,"data-size":l,"data-variant":c,size:l,variant:c,...i,children:n}),t[6]=n,t[7]=r,t[8]=i,t[9]=l,t[10]=c,t[11]=u):u=t[11],u}export{je as a,L as c,ze as i,Ge as n,z as o,Re as r,R as s,Ke as t};
2
+ //# sourceMappingURL=toggle-group-CnELn-Lg.js.map
@@ -90,14 +90,16 @@
90
90
  does not flash a stage label the client will not use.
91
91
  -->
92
92
  <title>P4 Code</title>
93
- <script type="module" crossorigin src="/assets/index-FfRV_bUK.js"></script>
93
+ <script type="module" crossorigin src="/assets/index-BtOOP_4i.js"></script>
94
94
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-QTnfLwEv.js">
95
95
  <link rel="modulepreload" crossorigin href="/assets/compiler-runtime-CLAvuQ-D.js">
96
96
  <link rel="modulepreload" crossorigin href="/assets/preload-helper-CEhsl8MR.js">
97
- <link rel="modulepreload" crossorigin href="/assets/textarea-B3YbEkbC.js">
98
- <link rel="modulepreload" crossorigin href="/assets/collapsible-cM_BdURl.js">
97
+ <link rel="modulepreload" crossorigin href="/assets/textarea-CWiSD-BA.js">
98
+ <link rel="modulepreload" crossorigin href="/assets/collapsible-BYB8Vm7J.js">
99
99
  <link rel="modulepreload" crossorigin href="/assets/env-jW24S9HL.js">
100
- <link rel="modulepreload" crossorigin href="/assets/entities-DqtFk7L9.js">
100
+ <link rel="modulepreload" crossorigin href="/assets/entities-rFZO2CnH.js">
101
+ <link rel="modulepreload" crossorigin href="/assets/input-COb8u_Ms.js">
102
+ <link rel="modulepreload" crossorigin href="/assets/timestampFormat-CPEoBq-v.js">
101
103
  <link rel="stylesheet" crossorigin href="/assets/index-C02-zlcI.css">
102
104
  </head>
103
105
  <body>
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { f as selectLayoutItems, r as computeLayout, u as resolveValue } from "./runtime-Dm3kk93X.mjs";
3
+ import { f as selectLayoutItems, r as computeLayout, u as resolveValue } from "./runtime-1CxXZlXT.mjs";
4
4
  import Konva from "konva";
5
5
  import "konva/skia-backend";
6
6
  import { Canvas, FontLibrary, Image } from "skia-canvas";
@@ -423,4 +423,4 @@ function createRenderer(width, height) {
423
423
  //#endregion
424
424
  export { createRenderer, rasterizeSvg, renderDesignExport, renderDesignPng };
425
425
 
426
- //# sourceMappingURL=renderer-DjkoXzr6.mjs.map
426
+ //# sourceMappingURL=renderer-BM58dAjb.mjs.map
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { L as DesignNode, j as DesignDocument } from "./src-DmphFADh.mjs";
3
+ import { L as DesignNode, j as DesignDocument } from "./src-BkeUiTFp.mjs";
4
4
  import * as Schema from "effect/Schema";
5
5
  //#region ../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js
6
6
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
@@ -981,4 +981,4 @@ function semanticDiff(before, after) {
981
981
  //#endregion
982
982
  export { documentContentDigest as a, parseDesign as c, reviewState as d, selectLayoutItems as f, diagnostic as i, patchNode as l, validateDesign as m, canonicalSerialize as n, fileHash as o, semanticDiff as p, computeLayout as r, isConfinedRelativePath as s, buildIndexes as t, resolveValue as u };
983
983
 
984
- //# sourceMappingURL=runtime-Dm3kk93X.mjs.map
984
+ //# sourceMappingURL=runtime-1CxXZlXT.mjs.map
@@ -14934,7 +14934,26 @@ const DesignTransferEvent = Schema$1.Union([
14934
14934
  diagnostics: Schema$1.Array(DesignDiagnostic)
14935
14935
  })
14936
14936
  ]);
14937
- const DesignRpcGroup = RpcGroup.make(Rpc.make("design.transfer", {
14937
+ const DesignRevisionEntry = Schema$1.Struct({
14938
+ id: Schema$1.String,
14939
+ fileHash: DesignHash,
14940
+ revision: DesignHash,
14941
+ savedAt: Schema$1.String
14942
+ });
14943
+ const DesignRevisionRestoreRequest = Schema$1.Struct({
14944
+ ...DesignSubscribeRequest.fields,
14945
+ revisionId: Schema$1.String,
14946
+ expectedFileHash: DesignHash
14947
+ });
14948
+ const DesignRpcGroup = RpcGroup.make(Rpc.make("design.revisions", {
14949
+ payload: DesignSubscribeRequest,
14950
+ success: Schema$1.Array(DesignRevisionEntry),
14951
+ error: Schema$1.Union([DesignServiceError, EnvironmentAuthorizationError])
14952
+ }), Rpc.make("design.revisions.restore", {
14953
+ payload: DesignRevisionRestoreRequest,
14954
+ success: Schema$1.Void,
14955
+ error: Schema$1.Union([DesignServiceError, EnvironmentAuthorizationError])
14956
+ }), Rpc.make("design.transfer", {
14938
14957
  payload: DesignTransferRequest,
14939
14958
  success: DesignTransferEvent,
14940
14959
  error: Schema$1.Union([DesignServiceError, EnvironmentAuthorizationError]),
@@ -17191,4 +17210,4 @@ var SelfImproveError = class extends Schema$1.TaggedErrorClass()("SelfImproveErr
17191
17210
  //#endregion
17192
17211
  export { FeedError as $, PreviewAutomationResultTooLargeError as $a, ThreadWorkspaceLifecycle as $c, DesktopTelemetryControlMessage as $i, ServerAuthSessionMethod as $l, TicketResolveResult as $n, ThreadWatchReviewInput as $o, TaskProposeResult as $r, OrchestrationThreadSearchSource as $s, ThreadCleanupInput as $t, DesignApplyRequest as A, ExternalLauncherCommandNotFoundError as Aa, ThreadPairGateOpenedPayload as Ac, DeviceToolUnavailableError as Ai, VcsRepositoryDetectionError as Al, ThreadToolUnavailableError as An, HUB_TUNNEL_MAX_WINDOW_BYTES as Ao, clampProviderHealthRefreshSeconds as Ar, OrchestrationCommandReceiptStatus as As, McpRegistryError as At, DesignSelection as B, PreviewAutomationExecutionError as Ba, ThreadRevertedPayload as Bc, filterSyncedSettings as Bi, AuthAccessReadScope as Bl, ThreadAskInput as Bn, HubAnalyticsPage as Bo, DEFAULT_TASK_SOURCE as Br, OrchestrationMessage as Bs, AgentAssetKind as Bt, UserInputRankingError as C, TerminalNotRunningError as Ca, ThreadMessageSentPayload as Cc, DeviceToolCloseInput as Ci, VcsProcessExitError as Cl, ThreadRenameRejectedError as Cn, EnvironmentHttpCommonError as Co, DEFAULT_SERVER_SETTINGS as Cr, ModelSelection as Cs, AssetWorkspaceAssetNotFoundError as Ct, TurnId as Cu, DesignServiceError as D, DesktopPreviewScreenshotArtifactSchema as Da, ThreadPairDetachedPayload as Dc, DeviceToolOpenResult as Di, VcsProcessSpawnError as Dl, ThreadSpawnInput as Dn, EnvironmentResourceNotFoundError as Do, STORAGE_CLEANUP_TARGETS as Dr, OrchestrationCheckpointFile as Ds, AssetWorkspaceResolutionError as Dt, DesignRpcGroup as E, TerminalWriteError as Ea, ThreadPairCursorAdvancedPayload as Ec, DeviceToolOpenInput as Ei, VcsProcessOutputReadError as El, ThreadSnoozeResult as En, EnvironmentRequestInvalidError as Eo, OpenCodeSettings as Er, OrchestrationAggregateKind as Es, AssetWorkspacePathValidationError as Et, DesignInspectRequest as F, PreviewAutomationClickInput as Fa, ThreadProposedPlanUpsertedPayload as Fc, WORKTREE_CLEANUP_RULES as Fi, HubClientEnrollmentInput as Fl, ThreadAdviseInput as Fn, HubLiveActivityRemoveInput as Fo, OpenRouterDecideInput as Fr, OrchestrationGetFullThreadDiffError as Fs, mcpUserScopeSessionName as Ft, DesignValidateReceipt as G, PreviewAutomationOpenInput as Ga, ThreadSessionSetPayload as Gc, KeybindingRule as Gi, AuthClientMetadataDeviceType as Gl, ThreadGateRespondResult as Gn, THREAD_REVIEW_SCAN_LIMIT as Go, TaskCurrentInput as Gr, OrchestrationScheduledTaskStatus as Gs, agentAssetTotalBytes as Gt, DesignStatusRequest as H, PreviewAutomationMalformedResponseError as Ha, ThreadScheduledTaskCancelledPayload as Hc, describeFusionPromptRejection as Hi, AuthAccessTokenType as Hl, ThreadAskResult as Hn, THREAD_EVIDENCE_REPORT_MAX_CHARS as Ho, HubTaskPutInput as Hr, OrchestrationProposedPlanId as Hs, AgentAssetName as Ht, DesignLibraryManifest as I, PreviewAutomationClientDisconnectedError as Ia, ThreadPullRequestLink as Ic, anyWorktreeRuleEnabled as Ii, HubClientId as Il, ThreadAdviseNotPermittedError as In, HubNotificationPreferences as Io, OpenRouterToolFailedError as Ir, OrchestrationGetSnapshotError as Is, AGENT_ASSET_FILE_MAX_CHARS as It, FeedArticle as J, PreviewAutomationRecordingStatus as Ja, ThreadTurnDiffCompletedPayload as Jc, MODEL_PICKER_JUMP_KEYBINDING_COMMANDS as Ji, AuthOrchestrationReadScope as Jl, TrackerApiKeyError as Jn, ThreadEvidenceReportResult as Jo, TaskListFilter as Jr, OrchestrationSessionStatus as Js, AssetCompressResult as Jt, DesignValidateRequest as K, PreviewAutomationPressInput as Ka, ThreadSnoozedPayload as Kc, KeybindingsConfig as Ki, AuthEnvironmentScopes as Kl, ThreadRequestResult as Kn, ThreadEvidenceReportActivity as Ko, TaskGetInput as Kr, OrchestrationSearchThreadsError as Ks, AssetCompressInput as Kt, DesignNode as L, PreviewAutomationControlInterruptedError as La, ThreadPullRequestStack as Lc, SETTINGS_SYNC_ASSET_NAME as Li, HubClientRevokeInput as Ll, ThreadAdviseResult as Ln, HubPushRegistrationInput as Lo, TypeSafeAskFailedError as Lr, OrchestrationGetTurnDiffError as Ls, AGENT_ASSET_TOTAL_MAX_BYTES as Lt, DesignGuideReceipt as M, ExternalLauncherUnknownEditorError as Ma, ThreadPairTriageAdvancedPayload as Mc, SshDeviceHostConfig as Mi, HubAccountId as Ml, ThreadWaitResult as Mn, HubTunnelControl as Mo, OpenRouterApiKeyError as Mr, OrchestrationEvent as Ms, McpServerRegistration as Mt, DesignGuideRequest as N, ExternalLauncherUnsupportedEditorError as Na, ThreadPinReorderedPayload as Nc, DEFAULT_WORKTREE_CLEANUP_SETTINGS as Ni, HubClientAssetGrantInput as Nl, AdviseToolUnavailableError as Nn, HubAgentActivityInput as No, OpenRouterChatInput as Nr, OrchestrationEventMetadata as Ns, mcpOAuthStorageName as Nt, DesignSubscribeRequest as O, EDITORS as Oa, ThreadPairGateAdvancedPayload as Oc, DeviceToolScreenshotResult as Oi, VcsProcessStdinWriteError as Ol, ThreadSpawnNotPermittedError as On, EnvironmentScopeRequiredError as Oo, ServerSettings as Or, OrchestrationCheckpointStatus as Os, AssetWorkspaceRootNormalizationError as Ot, DesignInspectReceipt as P, PREVIEW_AUTOMATION_V1_OPERATIONS as Pa, ThreadPinnedPayload as Pc, EMPTY_WORKTREE_CLEANUP_PREVIEW as Pi, HubClientEnrollmentExchange as Pl, ThreadAdviseFailedError as Pn, HubLiveActivityRegistrationInput as Po, OpenRouterChatResult as Pr, OrchestrationEventType as Ps, mcpSecretStorageName as Pt, FeedEngagement as Q, PreviewAutomationResizeResult as Qa, ThreadUnsnoozedPayload as Qc, DesktopHostTelemetryMessage as Qi, EnvironmentAuthorizationError as Ql, TicketResolveInput as Qn, ThreadWatchNotPermittedError as Qo, TaskProposeInput as Qr, OrchestrationThreadPairGate as Qs, MemoryAppendResult as Qt, DesignRenderReceipt as R, PreviewAutomationError as Ra, ThreadPullRequestsUpdatedPayload as Rc, SETTINGS_SYNC_FILE_PATH as Ri, HubClientSocketTicketInput as Rl, ThreadAdviseToolError as Rn, HUB_ANALYTICS_QUERY_LIMITS as Ro, TypeSafeAskInput as Rr, OrchestrationGetTurnDiffResult as Rs, AgentAsset as Rt, ProviderSetupError as S, TerminalHistoryError as Sa, ThreadMessageQueuedPayload as Sc, DeviceSessionDetailInput as Si, VcsDriverKind as Sl, ThreadRenameInput as Sn, EnvironmentHttpApi as So, DEFAULT_PROVIDER_HEALTH_REFRESH_INTERVAL as Sr, JEV_CONSULTED_ACTIVITY_KIND as Ss, AssetWorkspaceAssetInspectionError as St, TrimmedNonEmptyString as Su, DesignHumanApplyRequest as T, TerminalSessionLookupError as Ta, ThreadPairCreatedPayload as Tc, DeviceToolListResult as Ti, VcsProcessOutputLimitError as Tl, ThreadSnoozeInput as Tn, EnvironmentOperationForbiddenError as To, MuseSettings as Tr, OrchestrationActorKind as Ts, AssetWorkspaceContextResolutionError as Tt, DesignStylesReceipt as U, PreviewAutomationNavigateInput as Ua, ThreadScheduledTaskCreatedPayload as Uc, rejectFusionPromptOverride as Ui, AuthAccessWriteScope as Ul, ThreadAskToolError as Un, THREAD_REVIEW_ITEM_MAX_BYTES as Uo, Task as Ur, OrchestrationReadModel as Us, AgentAssetWriteInput as Ut, DesignStatusReceipt as V, PreviewAutomationInvalidSelectorError as Va, ThreadRuntimeModeSetPayload as Vc, planSettingsSync as Vi, AuthAccessStreamError as Vl, ThreadAskNotPermittedError as Vn, HubAnalyticsQuery as Vo, HubTaskCreateInput as Vr, OrchestrationMessageRole as Vs, AgentAssetListFilter as Vt, DesignStylesRequest as W, PreviewAutomationNoAvailableHostError as Wa, ThreadScheduledTaskFiredPayload as Wc, resolveFusionPromptOverride as Wi, AuthAdministrativeScopes as Wl, ThreadGateRespondInput as Wn, THREAD_REVIEW_MAX_BYTES as Wo, TaskCreateInput as Wr, OrchestrationScheduledTaskId as Ws, HubLinkError as Wt, FeedCleanupInput as X, PreviewAutomationRequestQueueClosedError as Xa, ThreadUnpinnedPayload as Xc, THREAD_JUMP_KEYBINDING_COMMANDS as Xi, AuthStandardClientScopes as Xl, TicketCommentResult as Xn, ThreadWatchEventsResult as Xo, TaskNotLinkedError as Xr, OrchestrationThread as Xs, MemoryAppendFailedError as Xt, FeedArticleId as Y, PreviewAutomationRemoteUnavailableError as Ya, ThreadUnarchivedPayload as Yc, ResolvedKeybindingRule as Yi, AuthReviewWriteScope as Yl, TicketCommentInput as Yn, ThreadWatchEventsInput as Yo, TaskNotFoundError as Yr, OrchestrationShellSnapshot as Ys, AssetCompressValidationFailedError as Yt, FeedCleanupResult as Z, PreviewAutomationResizeInput as Za, ThreadUnpromptedSubagentsSetPayload as Zc, PluginManifest as Zi, AuthTerminalOperateScope as Zl, TicketResolveError as Zn, ThreadWatchFailedError as Zo, TaskNotStartableError as Zr, OrchestrationThreadActivityTone as Zs, MemoryAppendInput as Zt, ComputerUseJsInput as _, ProviderStopSessionInput as _a, ThreadCompressModeSetPayload as _c, DeviceListInput as _i, pullRequestProviderRequirement as _l, ThreadPairDetachResult as _n, PreviewTabId as _o, ClaudeSettings as _r, FUSION_RETRY_PROMPT_PREFIX as _s, AssetPreviewTypeValidationError as _t, RuntimeRequestId as _u, SelfImproveRequest as a, UserInputQuestion as aa, ProjectMetaUpdatedPayload as ac, TaskUpdateInput as ai, DEFAULT_TEXT_GENERATION_MODEL_BY_PROVIDER as al, ThreadContextUpdateInput as an, PreviewAutomationStatus as ao, P4_PROJECT_FILE_NAME as ar, DEFAULT_COMPRESS_MODE as as, FeedSourceUpsertInput as at, CheckpointRef as au, DeviceCommandInput as b, TerminalCwdNotFoundError as ba, ThreadDeletedPayload as bc, DevicePlatformAvailability as bi, SourceControlProviderKind as bl, ThreadPlanUpdateInput as bn, EnvironmentAuthenticatedAuth as bo, DEFAULT_AUTOMATIC_GIT_FETCH_INTERVAL as br, FusionReviewExperiment as bs, AssetProjectFaviconResolutionError as bt, ThreadId as bu, WsRpcGroup as c, ProviderResetCreditError as ca, ProjectionPendingApprovalStatus as cc, DeviceActionInput as ci, PREFERRED_DEFAULT_CODEX_MODELS as cl, ThreadControlRejectedError as cn, PreviewAutomationTargetNotEditableError as co, GitPullRequestMaterializationError as cr, FUSION_ACTIVATION_PROMPT_PREFIX as cs, BtwAskError as ct, EventId as cu, ComputerUseDeviceRequest as d, UsageLimitSourceId as da, ProviderSessionRuntimeStatus as dc, DeviceColorFilter as di, defaultInstanceIdForDriver as dl, ThreadMergeChildResult as dn, PreviewAutomationUnavailableError as do, ServerProcessResourceHistoryFailureTag as dr, FUSION_GATE_DEFAULT_TIMEOUT_MS as ds, parentThreadIdFromSidechat as dt, NonNegativeInt as du, ResourceMonitorCommand as ea, PROVIDER_SEND_TURN_MAX_DOCUMENT_BYTES as ec, TaskSourceSelector as ei, orchestrationThreadNotFoundMessage as el, ThreadCleanupResult as en, PreviewAutomationScrollInput as eo, ProjectListEntriesError as er, ThreadWatchReviewResult as es, FeedListResult as et, P4_CHAT_PROJECT_ID as eu, ComputerUseEnrollmentRequest as f, ProviderInterruptTurnInput as fa, ProviderUserInputAnswers as fc, DeviceDetail as fi, isProviderDriverKind as fl, ThreadMessageInput as fn, PreviewAutomationUnsupportedClientError as fo, ServerProvider as fr, FUSION_GATE_MESSAGE_ID_PREFIX as fs, AssetAttachmentNotFoundError as ft, PortSchema as fu, ComputerUseHostResponse as g, ProviderSessionStartInput as ga, ThreadCompletionFields as gc, DeviceId as gi, pullRequestHostOf as gl, ThreadPairDetachInput as gn, PreviewSessionLookupError as go, AntigravitySettings as gr, FUSION_NO_OBJECTION_TEXT as gs, AssetMdxBuildError as gt, RuntimeItemId as gu, ComputerUseHostReport as h, ProviderSendTurnInput as ha, ThreadArchivedPayload as hc, DeviceHostUnavailableError as hi, PullRequestUnavailableError as hl, ThreadPairCreateResult as hn, PreviewInvalidUrlError as ho, isProviderAvailable as hr, FUSION_JEV_PROMPT_PREFIX as hs, AssetLocalPathValidationError as ht, ProviderItemId as hu, SelfImproveLabel as i, MONITOR_TOOL_TASK_TYPES as ia, ProjectDeletedPayload as ic, TaskToolUnavailableError as ii, DEFAULT_TEXT_GENERATION_MODEL as il, ThreadContextSummarizer as in, PreviewAutomationSnapshotInput as io, P4ProjectFile as ir, CompressMode as is, FeedSourceId as it, AuthSessionId as iu, DesignDocument as j, ExternalLauncherEditorSpawnError as ja, ThreadPairGateResolvedPayload as jc, LOCAL_DEVICE_HOST_ID as ji, VcsUnsupportedOperationError as jl, ThreadWaitInput as jn, HUB_TUNNEL_WEBSOCKET_PROTOCOL as jo, DEFAULT_OPENROUTER_DECISIONS_MODEL as jr, OrchestrationDispatchCommandError as js, McpServerName as jt, DesignApplyReceipt as k, ExternalLauncherBrowserSpawnError as ka, ThreadPairGateId as kc, DeviceToolTargetInput as ki, VcsProcessTimeoutError as kl, ThreadSpawnResult as kn, HUB_TUNNEL_INITIAL_WINDOW_BYTES as ko, ServerSettingsError as kr, OrchestrationCheckpointSummary as ks, FilesystemBrowseError as kt, COMPUTER_USE_DEFAULT_TIMEOUT_MS as l, ProviderResetCreditOutcome as la, ProviderApprovalDecision as lc, DeviceActionUnavailableError as li, ProviderDriverKind as ll, ThreadControlToolError as ln, PreviewAutomationTimeoutError as lo, TextGenerationError as lr, FUSION_ADVICE_PROMPT_PREFIX as ls, SIDECHAT_THREAD_ID_PREFIX as lt, IsoDateTime as lu, ComputerUseHostRegistration as m, ProviderRespondToUserInputInput as ma, ThreadActivityAppendedPayload as mc, DeviceHostId as mi, PullRequestStack as ml, ThreadPairCreateInput as mn, FILL_PREVIEW_VIEWPORT as mo, ServerSelfUpdateError as mr, FUSION_GATE_UNWATCHED_SUMMARY as ms, AssetLocalFileNotFoundError as mt, ProjectId as mu, SelfImproveError as n, INERT_TASK_TYPES as na, PROVIDER_SEND_TURN_MAX_INPUT_CHARS as nc, TaskStoreError as ni, DEFAULT_MODEL as nl, ThreadConfigureResult as nn, PreviewAutomationSetColorSchemeResult as no, ProjectSearchEntriesError as nr, WatchToolUnavailableError as ns, FeedRefreshResult as nt, AgentAssetId as nu, SelfImproveResult as o, WorkflowScriptProvenance as oa, ProjectScript as oc, UNKNOWN_TASK_STATUS_FALLBACK as oi, MODEL_SLUG_ALIASES_BY_PROVIDER as ol, ThreadContextUpdateResult as on, PreviewAutomationTabNotFoundError as oo, GitCommandError as or, DEFAULT_PROVIDER_INTERACTION_MODE as os, FeedSummary as ot, CommandId as ou, ComputerUseError as p, ProviderRespondToRequestInput as pa, RuntimeMode as pc, DeviceDetailInput as pi, PullRequestOperationError as pl, ThreadMessageResult as pn, PreviewAutomationWaitForInput as po, ServerProviderUpdateError as pr, FUSION_GATE_PROMPT_PREFIX as ps, AssetLocalFileInspectionError as pt, PositiveInt as pu, FEED_CATEGORIES as q, PreviewAutomationRecordingArtifact as qa, ThreadTurnCompletedPayload as qc, KeybindingsConfigError as qi, AuthOrchestrationOperateScope as ql, SupervisorApiKeyError as qn, ThreadEvidenceReportInput as qo, TaskLabel as qr, OrchestrationSession as qs, AssetCompressRefusedError as qt, SelfImproveEvidence as r, MONITOR_TASK_TYPES as ra, ProjectCreatedPayload as rc, TaskToolError as ri, DEFAULT_MODEL_BY_PROVIDER as rl, ThreadContextReadResult as rn, PreviewAutomationSnapshot as ro, ProjectWriteFileError as rr, ChatAttachment as rs, FeedSource as rt, ApprovalRequestId as ru, WS_METHODS as s, isToolLifecycleItemType as sa, ProjectionPendingApprovalDecision as sc, isReadableTaskId as si, ModelCapabilities as sl, ThreadControlNotPermittedError as sn, PreviewAutomationTabTargetInput as so, GitManagerError as sr, DEFAULT_RUNTIME_MODE as ss, UsageReadError as st, EnvironmentId as su, SelfImproveDecision as t, ResourceMonitorEvent as ta, PROVIDER_SEND_TURN_MAX_IMAGE_BYTES as tc, TaskStatus as ti, ANTIGRAVITY_DEFAULT_MODEL as tl, ThreadConfigureInput as tn, PreviewAutomationSetColorSchemeInput as to, ProjectReadFileError as tr, ThreadWatchToolError as ts, FeedMarkReadInput as tt, isChatProject as tu, COMPUTER_USE_MAX_OUTPUT_CHARS as u, UsageLimitSourceError as ua, ProviderInteractionMode as uc, DeviceBootError as ui, ProviderInstanceId as ul, ThreadMergeChildInput as un, PreviewAutomationTypeInput as uo, ServerLocalCliUpdateError as ur, FUSION_EVIDENCE_REPORT_REPAIR_MESSAGE_ID_PREFIX as us, isSidechatThreadId as ut, MessageId as uu, ComputerUseOutput as v, DEFAULT_TERMINAL_ID as va, ThreadComputerUseGrantSetPayload as vc, DeviceNotFoundError as vi, resolvePullRequestAuthorFilter as vl, ThreadPlanReadInput as vn, DesktopBackendBootstrap as vo, CodexSettings as vr, FUSION_REVIEW_MESSAGE_ID_PREFIX as vs, AssetProjectFaviconInspectionError as vt, RuntimeTaskId as vu, DesignAssetRequest as w, TerminalResizeError as wa, ThreadMetaUpdatedPayload as wc, DeviceToolError as wi, VcsProcessMissingExitCodeError as wl, ThreadRenameResult as wn, EnvironmentInternalError as wo, GrokSettings as wr, ORCHESTRATION_WS_METHODS as ws, AssetWorkspaceContextNotFoundError as wt, DeviceCommandResult as x, TerminalCwdStatError as xa, ThreadInteractionModeSetPayload as xc, DevicePlatformUnavailableError as xi, SourceControlRepositoryError as xl, ThreadPlanUpdateResult as xn, EnvironmentAuthenticatedPrincipal as xo, DEFAULT_JEV_ROLE_ROUTING_MIN_CONFIDENCE as xr, FusionReviewPolicy as xs, AssetSigningKeyLoadError as xt, ThreadPairId as xu, ComputerUseSourceAttestation as y, TerminalCwdNotDirectoryError as ya, ThreadCreatedPayload as yc, DeviceOperationError as yi, SourceControlProviderError as yl, ThreadPlanReadResult as yn, EnvironmentAuthInvalidError as yo, CursorSettings as yr, FUSION_REVIEW_PROMPT_PREFIX as ys, AssetProjectFaviconNotFoundError as yt, TaskId as yu, DesignRenderRequest as z, PreviewAutomationEvaluateInput as za, ThreadQueuedMessageRemovedPayload as zc, SettingsSyncPayload as zi, HubServerMembership as zl, ThreadAskFailedError as zn, HubAnalyticsFactInput as zo, TypeSafeAskResult as zr, OrchestrationGetWorkflowScriptError as zs, AgentAssetFiles as zt };
17193
17212
 
17194
- //# sourceMappingURL=src-DmphFADh.mjs.map
17213
+ //# sourceMappingURL=src-BkeUiTFp.mjs.map
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "p4c": "./dist/bin.mjs"
10
10
  },
11
11
  "type": "module",
12
- "version": "0.7.11",
12
+ "version": "0.7.13",
13
13
  "license": "MIT",
14
14
  "publishConfig": {
15
15
  "access": "public"
@@ -1,98 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{n as t,r as n,t as r}from"./compiler-runtime-CLAvuQ-D.js";import{Al as i,Bi as a,Cl as o,Ei as s,G as c,Hi as ee,Ln as l,Mn as u,Ni as d,Pi as te,Qs as f,Ui as p,Un as ne,Vc as m,Vi as h,W as g,Xs as _,Ys as v,Zs as y,_l as b,al as x,au as S,dl as C,dt as w,ki as re,l as T,ot as ie,q as E,zi as D}from"./textarea-B3YbEkbC.js";import{I as O,_ as ae,m as oe}from"./entities-DqtFk7L9.js";import{a as se,c as k,i as A,n as j,o as M,r as ce,s as le,t as ue}from"./toggle-group-DMoKBtD6.js";import{Cr as N,D as de,Dr as fe,Lr as pe,O as me,Tr as he,Wi as ge,X as _e,Z as ve,_r as ye,ct as be,dr as xe,dt as Se,fr as Ce,ft as we,h as Te,hi as Ee,hr as De,k as P,kr as Oe,li as ke,lr as Ae,lt as je,mr as Me,ot as Ne,p as Pe,pi as Fe,pr as Ie,qi as Le,st as Re,ur as ze,ut as Be,wr as Ve}from"./index-FfRV_bUK.js";import{a as He,n as Ue}from"./fileCommentAnnotations-U7_SWGlq.js";var We=f(`pilcrow`,[[`path`,{d:`M13 4v16`,key:`8vvj80`}],[`path`,{d:`M17 4v16`,key:`7dpous`}],[`path`,{d:`M19 4H9.5a4.5 4.5 0 0 0 0 9H13`,key:`sh4n9v`}]]),F=e(n(),1);function Ge({threadRef:e,filePath:t,activeCwd:n,openInEditor:r,openFileSurface:i}){if(e){if(i){i(t);return}m.getState().openFile(e,t);return}r(n?N(t,n):t)}var I=r();function Ke(e,t){let n=(0,I.c)(4),r=he(e,t),i;return n[0]!==r.data||n[1]!==r.error||n[2]!==r.isPending?(i={data:r.data,error:r.error,isPending:r.isPending},n[0]=r.data,n[1]=r.error,n[2]=r.isPending,n[3]=i):i=n[3],i}var L=t(),qe=[];function Je(e){return(e.endSide??e.side)===`deletions`?`deletions`:`additions`}function R(e,t,n){let r=Je(t),i=e.findIndex(e=>e.side===r&&e.lineNumber===t.end);return i<0?[...e,{side:r,lineNumber:t.end,metadata:{entries:[n]}}]:e.map((e,t)=>t===i?{...e,metadata:{entries:[...e.metadata.entries,n]}}:e)}function Ye(e){let t=(0,I.c)(50),{files:n,sectionId:r,sectionTitle:i,composerDraftTarget:a,options:o,viewerRef:s,className:c,renderHeaderPrefix:ee}=e,d=u(Qe),te=u(B),f;t[0]===a?f=t[1]:(f=e=>e.getComposerDraft(a)?.reviewComments??qe,t[0]=a,t[1]=f);let p=u(f),[m,h]=(0,F.useState)(null),[g,_]=(0,F.useState)(null),v;t[2]===n?v=t[3]:(v=new Map(n.map(Ze)),t[2]=n,t[3]=v);let y=v,b;if(t[4]!==g||t[5]!==n||t[6]!==p||t[7]!==r){let e;t[9]!==g||t[10]!==p||t[11]!==r?(e=e=>{let{fileDiff:t,filePath:n,fileKey:i,collapsed:a}=e,o=p.filter(e=>e.sectionId===r&&e.filePath===n&&(e.fenceLanguage??`diff`)===`diff`).reduce((e,n)=>{let r=ne(t,n);return r?R(e,r,{id:n.id,kind:`comment`,range:r,rangeLabel:n.rangeLabel,text:n.text}):e},[]),s=g?.fileKey===i?[...o,g.annotation]:o;return{id:i,type:`diff`,fileDiff:t,annotations:s,collapsed:a,version:Re(`${a?`1`:`0`}:${s.flatMap(z).join(`:`)}`)}},t[9]=g,t[10]=p,t[11]=r,t[12]=e):e=t[12],b=n.map(e),t[4]=g,t[5]=n,t[6]=p,t[7]=r,t[8]=b}else b=t[8];let x=b,S;t[13]!==a||t[14]!==g?.annotation||t[15]!==te?(S=e=>{h(null),g?.annotation.metadata.entries.some(t=>t.id===e)?_(null):te(a,e)},t[13]=a,t[14]=g?.annotation,t[15]=te,t[16]=S):S=t[16];let C=S,w;t[17]!==d||t[18]!==a||t[19]!==g||t[20]!==y||t[21]!==r||t[22]!==i?(w=(e,t)=>{let n=g?.annotation.metadata.entries.find(t=>t.id===e),o=g?y.get(g.fileKey):void 0;if(!n||!o)return;let s=l({id:n.id,sectionId:r,sectionTitle:i,filePath:o.filePath,fileDiff:o.fileDiff,range:n.range,text:t});s&&d(a,s),h(null),_(null)},t[17]=d,t[18]=a,t[19]=g,t[20]=y,t[21]=r,t[22]=i,t[23]=w):w=t[23];let re=w,T;t[24]!==y||t[25]!==r||t[26]!==i?(T=(e,t)=>{if(!e)return;let n=t.item;if(n.type!==`diff`)return;let a=y.get(n.id);if(!a)return;let o=Ue(),s=l({id:o,sectionId:r,sectionTitle:i,filePath:a.filePath,fileDiff:a.fileDiff,range:e,text:``});s&&_({fileKey:n.id,annotation:{side:Je(e),lineNumber:e.end,metadata:{entries:[{id:o,kind:`draft`,range:e,rangeLabel:s.rangeLabel,text:``}]}}})},t[24]=y,t[25]=r,t[26]=i,t[27]=T):T=t[27];let ie=T,E=g!==null,D;t[28]===s?D=t[29]:(D=s?{ref:s}:{},t[28]=s,t[29]=D);let O;t[30]===c?O=t[31]:(O=c?{className:c}:{},t[30]=c,t[31]=O);let ae=!E,oe=!E,k;t[32]!==ie||t[33]!==o||t[34]!==oe||t[35]!==ae?(k={...o,enableGutterUtility:ae,enableLineSelection:oe,onLineSelectionEnd:ie},t[32]=ie,t[33]=o,t[34]=oe,t[35]=ae,t[36]=k):k=t[36];let A;t[37]===ee?A=t[38]:(A=e=>e.type===`diff`?ee(e.fileDiff,e.id,e.collapsed===!0):null,t[37]=ee,t[38]=A);let j;t[39]!==C||t[40]!==re?(j=e=>(0,L.jsx)(`div`,{className:`py-1`,children:e.metadata.entries.map(e=>(0,L.jsx)(He,{kind:e.kind,rangeLabel:e.rangeLabel,text:e.text,onCancel:()=>C(e.id),onComment:t=>re(e.id,t),onDelete:()=>C(e.id)},e.id))}),t[39]=C,t[40]=re,t[41]=j):j=t[41];let M;return t[42]!==x||t[43]!==m||t[44]!==k||t[45]!==A||t[46]!==j||t[47]!==D||t[48]!==O?(M=(0,L.jsx)(se,{...D,...O,items:x,selectedLines:m,onSelectedLinesChange:h,options:k,renderHeaderPrefix:A,renderAnnotation:j}),t[42]=x,t[43]=m,t[44]=k,t[45]=A,t[46]=j,t[47]=D,t[48]=O,t[49]=M):M=t[49],M}function z(e){return e.metadata.entries.map(Xe)}function Xe(e){return`${e.id}:${e.rangeLabel}:${e.text}`}function Ze(e){return[e.fileKey,e]}function B(e){return e.removeReviewComment}function Qe(e){return e.addReviewComment}function $e(e){return{diffPreview:C(e,{label:`environment-data:review:diff-preview`,tag:S.reviewGetDiffPreview,staleTimeMs:5e3})}}var et=$e(w);function V(e){return e.remoteName&&e.name.startsWith(`${e.remoteName}/`)?e.name.slice(e.remoteName.length+1):e.name}function tt(e,t){let n=new Set(t),r=e.map(e=>{let r=t.filter(t=>n.has(t)&&V(t)===e.name),i=r.find(e=>e.remoteName===`origin`)??r[0]??null;return i&&n.delete(i),{id:`local:${e.name}`,label:e.name,local:e,remote:i}}),i=t.filter(e=>n.has(e)).map(e=>({id:`remote:${e.name}`,label:e.name,local:null,remote:e}));return[...r,...i]}function nt(e,t){let n=t.trim().toLocaleLowerCase();return n.length===0?e:e.filter(e=>e.label.toLocaleLowerCase().includes(n)||e.local?.name.toLocaleLowerCase().includes(n)===!0||e.remote?.name.toLocaleLowerCase().includes(n)===!0)}var H=`__automatic_base_ref__`,rt=new Set,it=`
2
- [data-diffs-header],
3
- [data-diff],
4
- [data-file],
5
- [data-error-wrapper],
6
- [data-virtualizer-buffer] {
7
- --diffs-header-font-family: var(--font-sans) !important;
8
- --diffs-font-family: var(--font-mono) !important;
9
- --diffs-bg: color-mix(in srgb, var(--card) 90%, var(--background)) !important;
10
- --diffs-light-bg: color-mix(in srgb, var(--card) 90%, var(--background)) !important;
11
- --diffs-dark-bg: color-mix(in srgb, var(--card) 90%, var(--background)) !important;
12
- --diffs-token-light-bg: transparent;
13
- --diffs-token-dark-bg: transparent;
14
-
15
- --diffs-bg-context-override: color-mix(in srgb, var(--background) 97%, var(--foreground));
16
- --diffs-bg-hover-override: color-mix(in srgb, var(--background) 94%, var(--foreground));
17
- --diffs-bg-separator-override: color-mix(in srgb, var(--background) 95%, var(--foreground));
18
- --diffs-bg-buffer-override: color-mix(in srgb, var(--background) 90%, var(--foreground));
19
-
20
- --diffs-bg-addition-override: color-mix(in srgb, var(--background) 92%, var(--success));
21
- --diffs-bg-addition-number-override: color-mix(in srgb, var(--background) 88%, var(--success));
22
- --diffs-bg-addition-hover-override: color-mix(in srgb, var(--background) 85%, var(--success));
23
- --diffs-bg-addition-emphasis-override: color-mix(in srgb, var(--background) 80%, var(--success));
24
-
25
- --diffs-bg-deletion-override: color-mix(in srgb, var(--background) 92%, var(--destructive));
26
- --diffs-bg-deletion-number-override: color-mix(in srgb, var(--background) 88%, var(--destructive));
27
- --diffs-bg-deletion-hover-override: color-mix(in srgb, var(--background) 85%, var(--destructive));
28
- --diffs-bg-deletion-emphasis-override: color-mix(
29
- in srgb,
30
- var(--background) 80%,
31
- var(--destructive)
32
- );
33
-
34
- background-color: var(--diffs-bg) !important;
35
- }
36
-
37
- [data-file-info] {
38
- background-color: color-mix(in srgb, var(--card) 94%, var(--foreground)) !important;
39
- border-block-color: var(--border) !important;
40
- color: var(--foreground) !important;
41
- }
42
-
43
- [data-diffs-header] {
44
- position: sticky !important;
45
- top: 0;
46
- z-index: 4;
47
- background-color: color-mix(in srgb, var(--card) 94%, var(--foreground)) !important;
48
- border-bottom: 1px solid var(--border) !important;
49
- align-items: center !important;
50
- font-family: var(--font-sans) !important;
51
- font-size: 12px !important;
52
- line-height: 1 !important;
53
- min-height: 32px !important;
54
- padding-block: 6px !important;
55
- }
56
-
57
- [data-diffs-header] [data-header-content] {
58
- align-items: center !important;
59
- line-height: 1 !important;
60
- }
61
-
62
- [data-diffs-header] [data-metadata] {
63
- align-items: center !important;
64
- line-height: 1 !important;
65
- font-variant-numeric: tabular-nums;
66
- }
67
-
68
- [data-diffs-header] [data-additions-count],
69
- [data-diffs-header] [data-deletions-count] {
70
- font-family: var(--font-mono) !important;
71
- font-size: 11px !important;
72
- font-variant-numeric: tabular-nums;
73
- line-height: 1 !important;
74
- }
75
-
76
- [data-diffs-header] [data-change-icon],
77
- [data-diffs-header] [data-rename-icon] {
78
- display: block;
79
- flex-shrink: 0;
80
- }
81
-
82
- [data-title] {
83
- cursor: pointer;
84
- transition:
85
- color 120ms ease,
86
- text-decoration-color 120ms ease;
87
- text-decoration: underline;
88
- text-decoration-color: transparent;
89
- text-underline-offset: 2px;
90
- font-family: var(--font-sans) !important;
91
- }
92
-
93
- [data-title]:hover {
94
- color: color-mix(in srgb, var(--foreground) 84%, var(--primary)) !important;
95
- text-decoration-color: currentColor;
96
- }
97
- `;function U({mode:e=`inline`,composerDraftTarget:t,initialGitScope:n,threadRef:r}){let{resolvedTheme:l}=Ve(),u=O(),[f]=(0,F.useState)(n),[ne,m]=(0,F.useState)(`stacked`),[S,C]=(0,F.useState)(u.wordWrap),[w,se]=(0,F.useState)(u.diffIgnoreWhitespace),[N,he]=(0,F.useState)(``),[Te,Re]=(0,F.useState)(()=>({scopeKey:null,fileKeys:rt})),He=(0,F.useRef)(null),Ue=r.threadId,I=ae(r),qe=I?.projectId??null,Je=oe(I&&qe?{environmentId:I.environmentId,projectId:qe}:null),R=I?.worktreePath??Je?.workspaceRoot,z=x(ie.configValueAtom(I?.environmentId??null)),Xe=fe(I?.environmentId??null,z?.availableEditors??[]),Ze=T(I!=null&&R!=null?ke.status({environmentId:I.environmentId,input:{cwd:R}}):null),B=P(e=>me(e.byThreadKey,r,f===`unstaged`)),Qe=Ze.data?.isRepo??!0,{turnDiffSummaries:$e,inferredCheckpointTurnCountByTurnId:V}=de(I),U=(0,F.useMemo)(()=>[...$e].toSorted((e,t)=>{let n=e.checkpointTurnCount??V[e.turnId]??0,r=t.checkpointTurnCount??V[t.turnId]??0;return n===r?t.completedAt.localeCompare(e.completedAt):r-n}),[V,$e]);(0,F.useEffect)(()=>{B.kind===`turn`&&P.getState().reconcileTurnSelection(r,U.map(e=>e.turnId))},[B,U,r]);let W=B.kind===`turn`?B.turnId:null,G=B.kind===`unstaged`?`unstaged`:`branch`,K=B.kind===`branch`?B.baseRef:null,at=B.kind===`turn`?B.filePath:null,ot=B.kind===`turn`?B.revealRequestId:0,q=W===null?void 0:U.find(e=>e.turnId===W)??U[0],J=q&&(q.checkpointTurnCount??V[q.turnId]),st=U[0],ct=W===null?G===`unstaged`?`Working tree`:`Branch changes`:q?.turnId===st?.turnId?`Latest turn`:`Turn ${J??`?`}`,lt=q?`turn:${q.turnId}`:G,Y=`${r.environmentId}:${r.threadId}:${lt}`,ut=Te.scopeKey===Y?Te.fileKeys:rt,dt=q?`Turn ${J??`?`}`:G===`unstaged`?`Working tree`:`Branch changes`,ft=(0,F.useMemo)(()=>typeof J==`number`?{fromTurnCount:Math.max(0,J-1),toTurnCount:J}:null,[J]),pt=Ke({environmentId:I?.environmentId??null,threadId:Ue,fromTurnCount:ft?.fromTurnCount??null,toTurnCount:ft?.toTurnCount??null,ignoreWhitespace:w,cacheScope:q?`turn:${q.turnId}`:null},{enabled:Qe&&q!==void 0}),mt=T(W===null&&I&&R?et.diffPreview({environmentId:I.environmentId,input:{cwd:R,...K?{baseRef:K}:{},ignoreWhitespace:w}}):null),ht=W===null&&mt.error?.includes(`configured workspace root`)===!0&&z?.cwd!==void 0&&z.cwd!==R,gt=T(ht&&I&&z?et.diffPreview({environmentId:I.environmentId,input:{cwd:z.cwd,...K?{baseRef:K}:{},ignoreWhitespace:w}}):null),X=ht?gt:mt,Z=X.data?.sources.find(e=>e.kind===(G===`unstaged`?`working-tree`:`branch-range`)),_t=T(W===null&&G===`branch`&&I&&X.data?.cwd?ke.listRefs({environmentId:I.environmentId,input:{cwd:X.data.cwd,includeMatchingRemoteRefs:!0,refKind:`local`,...N.trim().length>0?{query:N.trim()}:{},limit:100}}):null),vt=T(W===null&&G===`branch`&&I&&X.data?.cwd?ke.listRefs({environmentId:I.environmentId,input:{cwd:X.data.cwd,includeMatchingRemoteRefs:!0,refKind:`remote`,...N.trim().length>0?{query:N.trim()}:{},limit:100}}):null),yt=tt(_t.data?.refs.filter(e=>e.name!==Z?.headRef)??[],vt.data?.refs??[]),bt=nt(yt,N),xt=e=>K&&K===e.remote?.name?K:e.local?.name??e.remote?.name??e.id,St=[H,...yt.map(xt)],Ct=[...N.trim().length===0?[H]:[],...bt.map(xt)],wt=Z?.diff,Tt=q?pt.data?.diff:wt,Et=!q&&Z?.truncated===!0,Dt=q?pt.isPending:X.isPending,Ot=q?pt.error:X.error,kt=typeof Tt==`string`&&Tt.trim().length===0,Q=(0,F.useMemo)(()=>Be(Tt,`diff-panel:${l}`,{compactPartialHunkOffsets:W===null}),[l,Tt,W]),At=(0,F.useMemo)(()=>!Q||Q.kind!==`files`?[]:Q.files.toSorted((e,t)=>we(e).localeCompare(we(t),void 0,{numeric:!0,sensitivity:`base`})),[Q]),$=(0,F.useMemo)(()=>At.map(e=>{let t=Ne(e);return{fileDiff:e,filePath:we(e),fileKey:t,collapsed:ut.has(t)}}),[ut,At]),jt=(0,F.useMemo)(()=>$.map(e=>e.fileKey),[$]),Mt=ce(jt,ut),Nt=(0,F.useMemo)(()=>je(At),[At]);(0,F.useEffect)(()=>{if(!at)return;let e=$.find(e=>e.filePath===at);e&&He.current?.scrollTo({type:`item`,id:e.fileKey,align:`start`})},[$,at,ot]);let Pt=ye({threadRef:r,workspaceRoot:R??null}),Ft=(0,F.useCallback)(e=>{Ge({threadRef:r,filePath:e,activeCwd:R,openFileSurface:Pt,openInEditor:e=>{(async()=>{let t=await Xe(e);t._tag===`Failure`&&!b(t)&&console.warn(`Failed to open diff file in editor.`,{operation:`open-diff-file`,environmentId:r.environmentId,threadId:r.threadId,...i(o(t))})})()}})},[R,Pt,Xe,r]),It=(0,F.useCallback)(e=>{Re(t=>{let n=new Set(t.scopeKey===Y?t.fileKeys:[]);return n.has(e)?n.delete(e):n.add(e),{scopeKey:Y,fileKeys:n}})},[Y]),Lt=(0,F.useCallback)(()=>{Re(e=>{let t=e.scopeKey===Y?e.fileKeys:rt;return{scopeKey:Y,fileKeys:A(jt,t)}})},[Y,jt]),Rt=e=>{P.getState().selectTurn(r,e)},zt=e=>{P.getState().selectGitScope(r,e)},Bt=e=>{P.getState().selectBranchBaseRef(r,e)};return(0,L.jsx)(ve,{mode:e,header:(0,L.jsxs)(L.Fragment,{children:[(0,L.jsxs)(`div`,{className:`flex min-w-0 flex-1 items-center gap-3 [-webkit-app-region:no-drag]`,children:[(0,L.jsxs)(re,{children:[(0,L.jsxs)(ee,{className:`inline-flex h-6 max-w-full items-center gap-1 rounded-md bg-muted/70 px-2 text-xs font-medium text-foreground outline-none transition-colors hover:bg-muted focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Diff scope: ${ct}`,children:[(0,L.jsx)(`span`,{className:`truncate`,children:ct}),(0,L.jsx)(_,{className:`size-3.5 shrink-0 text-muted-foreground`})]}),(0,L.jsxs)(te,{align:`start`,className:`w-60`,children:[(0,L.jsx)(d,{className:W===null&&G===`unstaged`?`bg-foreground/[0.08]`:void 0,onClick:()=>zt(`unstaged`),children:(0,L.jsx)(`span`,{children:`Working tree`})}),(0,L.jsx)(d,{className:W===null&&G===`branch`?`bg-foreground/[0.08]`:void 0,onClick:()=>zt(`branch`),children:(0,L.jsx)(`span`,{children:`Branch changes`})}),(0,L.jsx)(d,{className:W!==null&&q?.turnId===st?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>{st&&Rt(st.turnId)},children:(0,L.jsx)(`span`,{children:`Latest turn`})}),(0,L.jsxs)(D,{children:[(0,L.jsx)(h,{children:`Turn`}),(0,L.jsx)(a,{className:`w-64`,children:U.map(e=>{let t=e.checkpointTurnCount??V[e.turnId]??`?`;return(0,L.jsxs)(d,{className:e.turnId===q?.turnId?`bg-foreground/[0.08]`:void 0,onClick:()=>Rt(e.turnId),children:[(0,L.jsxs)(`span`,{children:[`Turn `,t]}),(0,L.jsx)(`span`,{className:`ml-auto text-xs tabular-nums text-muted-foreground`,children:pe(e.completedAt,u.timestampFormat)})]},e.turnId)})})]})]})]}),W===null&&G===`branch`&&Z?.baseRef&&(0,L.jsxs)(`div`,{className:`flex min-w-0 max-w-full items-center gap-2 overflow-hidden text-xs text-muted-foreground`,title:`${Z.headRef??`HEAD`} → ${Z.baseRef}`,"aria-label":`Comparing ${Z.headRef??`HEAD`} against ${Z.baseRef}`,children:[(0,L.jsx)(`span`,{className:`min-w-0 max-w-48 truncate`,children:Z.headRef??`HEAD`}),(0,L.jsx)(Le,{className:`size-3.5 shrink-0 opacity-70`}),(0,L.jsxs)(Ae,{items:St,filteredItems:Ct,value:K??H,onOpenChange:e=>{e||he(``)},onValueChange:e=>{e&&Bt(e===H?null:e)},children:[(0,L.jsxs)(De,{className:`inline-flex min-w-0 max-w-48 items-center gap-1 overflow-hidden rounded-md px-1.5 py-1 outline-none transition-colors hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring`,"aria-label":`Change comparison target. Currently ${Z.baseRef}`,children:[(0,L.jsx)(`span`,{className:`min-w-0 truncate`,children:Z.baseRef}),(0,L.jsx)(_,{className:`size-3.5 shrink-0 opacity-70`})]}),(0,L.jsxs)(Me,{align:`start`,className:`w-72 min-w-0 max-w-[calc(100vw-1rem)] overflow-hidden [&>[data-slot=combobox-popup]]:min-w-0 [&>[data-slot=combobox-popup]]:overflow-hidden`,children:[(0,L.jsx)(`div`,{className:`min-w-0 shrink-0 px-3 pt-2.5`,children:(0,L.jsxs)(`div`,{className:`relative -translate-y-px border-b border-border/70 pb-1.5 transition-colors focus-within:border-ring`,children:[(0,L.jsx)(Ee,{"aria-hidden":`true`,className:`pointer-events-none absolute top-1.5 left-0 size-4 shrink-0 text-muted-foreground/55`}),(0,L.jsx)(xe,{className:`[&_input]:h-6.5 [&_input]:ps-5 [&_input]:font-sans [&_input]:leading-6.5`,inputClassName:`rounded-none bg-transparent text-sm`,placeholder:`Search refs...`,showTrigger:!1,size:`sm`,unstyled:!0,value:N,onChange:e=>he(e.target.value)})]})}),(0,L.jsxs)(`div`,{className:`grid shrink-0 grid-cols-[1rem_minmax(0,1fr)] items-center gap-2 border-b border-border/70 ps-3 pe-6.5 pt-2 pb-1.5 font-medium text-[10px] text-muted-foreground uppercase tracking-wide`,children:[(0,L.jsx)(`span`,{"aria-hidden":`true`}),(0,L.jsxs)(`div`,{className:`grid min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center`,children:[(0,L.jsx)(`span`,{children:`Branch`}),(0,L.jsx)(`span`,{className:`text-right`,children:`Remote`})]})]}),(0,L.jsx)(ze,{children:`No matching refs.`}),(0,L.jsxs)(Ie,{className:`max-h-64 min-w-0 overflow-x-hidden`,children:[(0,L.jsx)(Ce,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:H,children:(0,L.jsx)(`span`,{className:`block min-w-0 truncate`,children:`Automatic`})}),yt.map(e=>{let t=xt(e),n=e.local!==null&&e.remote!==null,r=e.remote?.name===t;return(0,L.jsx)(Ce,{className:`h-8 w-full min-w-0 grid-cols-[1rem_minmax(0,1fr)] py-0`,contentClassName:`w-full min-w-0 overflow-hidden`,value:t,children:(0,L.jsxs)(`div`,{className:`grid w-full min-w-0 grid-cols-[minmax(0,1fr)_2rem] items-center overflow-hidden`,children:[(0,L.jsx)(`span`,{className:`block min-w-0 truncate pe-2`,children:e.label}),n?(0,L.jsx)(`div`,{className:`flex justify-end`,onClick:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),children:(0,L.jsx)(Oe,{"aria-label":`Use remote version of ${e.label}`,checked:r,className:`[--thumb-size:--spacing(3)]`,onCheckedChange:t=>{let n=t?e.remote?.name:e.local?.name;n&&Bt(n)}})}):e.remote?(0,L.jsx)(`span`,{className:`flex justify-end text-muted-foreground`,title:`Remote only`,children:(0,L.jsx)(y,{"aria-hidden":`true`,className:`size-3`})}):null]})},e.id)})]})]})]})]})]}),(0,L.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1 [-webkit-app-region:no-drag]`,children:[$.length>0&&(0,L.jsx)(Pe,{additions:Nt.additions,deletions:Nt.deletions,className:`mr-1 text-[11px]`,layout:`inline`}),$.length>0&&(0,L.jsxs)(g,{children:[(0,L.jsx)(E,{render:(0,L.jsx)(s,{type:`button`,size:`icon-xs`,variant:`outline`,"aria-label":Mt?`Expand all files`:`Collapse all files`,onClick:Lt}),children:Mt?(0,L.jsx)(ge,{className:`size-3`}):(0,L.jsx)(k,{className:`size-3`})}),(0,L.jsx)(c,{side:`top`,children:Mt?`Expand all files`:`Collapse all files`})]}),(0,L.jsxs)(j,{className:`shrink-0`,variant:`outline`,size:`xs`,value:[ne],onValueChange:e=>{let t=e[0];(t===`stacked`||t===`split`)&&m(t)},children:[(0,L.jsx)(ue,{"aria-label":`Stacked diff view`,value:`stacked`,children:(0,L.jsx)(M,{className:`size-3`})}),(0,L.jsx)(ue,{"aria-label":`Split diff view`,value:`split`,children:(0,L.jsx)(le,{className:`size-3`})})]}),(0,L.jsxs)(g,{children:[(0,L.jsx)(E,{render:(0,L.jsx)(ue,{"aria-label":S?`Disable diff line wrapping`:`Enable diff line wrapping`,variant:`outline`,size:`xs`,pressed:S,onPressedChange:e=>{C(!!e)}}),children:(0,L.jsx)(Fe,{className:`size-3`})}),(0,L.jsx)(c,{side:`top`,children:S?`Disable line wrapping`:`Enable line wrapping`})]}),(0,L.jsxs)(g,{children:[(0,L.jsx)(E,{render:(0,L.jsx)(ue,{"aria-label":w?`Show whitespace changes`:`Hide whitespace changes`,variant:`outline`,size:`xs`,pressed:w,onPressedChange:e=>{se(!!e)}}),children:(0,L.jsx)(We,{className:`size-3`})}),(0,L.jsx)(c,{side:`top`,children:w?`Show whitespace changes`:`Hide whitespace changes`})]})]})]}),children:I?Qe?W!==null&&U.length===0?(0,L.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`No completed turns yet.`}):(0,L.jsx)(L.Fragment,{children:(0,L.jsxs)(`div`,{className:`diff-panel-viewport flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[Et&&(0,L.jsx)(`p`,{className:`shrink-0 border-b border-border/70 bg-muted/40 px-3 py-1.5 text-[11px] text-muted-foreground`,children:`This diff was truncated because it exceeded the preview limit. The changes shown are incomplete.`}),Ot&&!Q&&(0,L.jsx)(`div`,{className:`px-3`,children:(0,L.jsx)(`p`,{className:`mb-2 text-[11px] text-red-500/80`,children:Ot})}),Q?Q.kind===`files`?(0,L.jsx)(`div`,{className:`min-h-0 flex-1`,onClickCapture:e=>{let t=(e.nativeEvent.composedPath?.()??[]).find(e=>e instanceof HTMLElement&&e.hasAttribute(`data-title`))?.textContent?.trim();t&&Ft(t)},children:(0,L.jsx)(Ye,{viewerRef:He,className:`diff-render-surface h-full min-h-0 overflow-auto`,files:$,sectionId:lt,sectionTitle:dt,composerDraftTarget:t,renderHeaderPrefix:(e,t,n)=>{let r=we(e);return(0,L.jsxs)(g,{children:[(0,L.jsx)(E,{render:(0,L.jsx)(`button`,{type:`button`,className:p(`inline-flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm border-0 bg-transparent p-0 transition-colors hover:bg-foreground/10 focus-visible:outline-hidden`,be(e)),"aria-label":n?`Expand ${r}`:`Collapse ${r}`,"aria-expanded":!n,onClick:e=>{e.stopPropagation(),It(t)}}),children:n?(0,L.jsx)(v,{className:`size-4`}):(0,L.jsx)(_,{className:`size-4`})}),(0,L.jsx)(c,{side:`top`,children:n?`Expand diff`:`Collapse diff`})]})},options:{diffStyle:ne===`split`?`split`:`unified`,lineDiffType:`none`,overflow:S?`wrap`:`scroll`,theme:Se(l),themeType:l,unsafeCSS:it,stickyHeaders:!0,itemMetrics:{diffHeaderHeight:33},layout:{paddingTop:0,paddingBottom:8,gap:8}}},Y??lt)}):(0,L.jsx)(`div`,{className:`min-h-0 flex-1 overflow-auto p-2`,children:(0,L.jsxs)(`div`,{className:`space-y-2`,children:[(0,L.jsx)(`p`,{className:`text-[11px] text-muted-foreground/75`,children:Q.reason}),(0,L.jsx)(`pre`,{className:p(`max-h-[72vh] rounded-md border border-border/70 bg-background/70 p-3 font-mono text-[11px] leading-relaxed text-muted-foreground/90`,S?`overflow-auto whitespace-pre-wrap wrap-break-word`:`overflow-auto`),children:Q.text})]})}):Dt?(0,L.jsx)(_e,{label:q?`Loading checkpoint diff...`:G===`unstaged`?`Loading working tree diff...`:`Loading branch diff...`}):(0,L.jsx)(`div`,{className:`flex h-full items-center justify-center px-3 py-2 text-xs text-muted-foreground/70`,children:(0,L.jsx)(`p`,{children:kt?`No net changes in this selection.`:`No patch available for this selection.`})})]})}):(0,L.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Turn diffs are unavailable because this project is not a git repository.`}):(0,L.jsx)(`div`,{className:`flex flex-1 items-center justify-center px-5 text-center text-xs text-muted-foreground/70`,children:`Select a thread to inspect turn diffs.`})})}export{Te as DiffWorkerPoolProvider,U as default};
98
- //# sourceMappingURL=DiffPanel-CSv6YIBl.js.map