treease-cli 1.0.0

Command-line interface for querying, transforming, and previewing structured documents with Treease
Documentation
1
import{Cr as e,Dr as t,E as n,Ft as r,It as i,M as a,Mt as o,Nr as s,Pr as c,S as l,Tr as u,ar as d,ht as f,jt as p,li as m,m as ee,or as h,pr as g,ui as _,ur as v,v as y}from"./BAtoIVDZ.js";import{At as te,Dn as b,Dr as x,S,Z as ne,hr as C,j as re,k as w,lr as T,p as ie,qn as ae,r as E,ut as oe,xr as D,yn as se}from"./Dlh4etSR.js";import{c as O,t as ce,u as le}from"./CvyGoXcM.js";import{n as k}from"./Q_pr_1vb.js";import{ar as A,mr as ue}from"./BBfPXLF9.js";import{O as de}from"./BzB7pCds.js";import{I as fe,N as pe,P as me,R as he}from"./B4qlaeWC.js";import{t as j}from"./B7k_hwKU.js";import{g as ge}from"./CmxfhdyD.js";import{t as M}from"./QK2HjIkC2.js";import{d as _e,i as ve,t as ye}from"./lyQUz81g2.js";import{t as be}from"./Cl-a56dO2.js";import{a as xe,c as Se,i as Ce,n as we,o as Te,s as Ee,t as De}from"./COBMuuby2.js";var Oe=Object.freeze({View:h(1638,`View`),Help:h(1639,`Help`),Test:h(1640,`Test`),File:h(1641,`File`),Preferences:h(1642,`Preferences`),Developer:h(1643,`Developer`)}),N=class e{constructor(e,t,n,r=null){this.startLineNumbers=e,this.endLineNumbers=t,this.lastLineRelativePosition=n,this.showEndForLine=r}equals(e){return!!e&&this.lastLineRelativePosition===e.lastLineRelativePosition&&this.showEndForLine===e.showEndForLine&&b(this.startLineNumbers,e.startLineNumbers)&&b(this.endLineNumbers,e.endLineNumbers)}static get Empty(){return new e([],[],0)}},ke=ge(`stickyScrollViewLayer`,{createHTML:e=>e}),P=`data-sticky-line-index`,Ae=`data-sticky-is-line`,je=`data-sticky-is-line-number`,Me=`data-sticky-is-folding-icon`,Ne=class extends e{get height(){return this._height}constructor(e){super(),this._foldingIconStore=this._register(new u),this._rootDomNode=document.createElement(`div`),this._lineNumbersDomNode=document.createElement(`div`),this._linesDomNodeScrollable=document.createElement(`div`),this._linesDomNode=document.createElement(`div`),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,this._height=-1,this._onDidChangeStickyScrollHeight=this._register(new g),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._editor=e,this._lineHeight=e.getOption(75),this._lineNumbersDomNode.className=`sticky-widget-line-numbers`,this._lineNumbersDomNode.setAttribute(`role`,`none`),this._linesDomNode.className=`sticky-widget-lines`,this._linesDomNode.setAttribute(`role`,`list`),this._linesDomNodeScrollable.className=`sticky-widget-lines-scrollable`,this._linesDomNodeScrollable.appendChild(this._linesDomNode),this._rootDomNode.className=`sticky-widget`,this._rootDomNode.classList.toggle(`peek`,e instanceof be),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable),this._setHeight(0);let t=()=>{this._linesDomNode.style.left=this._editor.getOption(131).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:`0px`};this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(131)&&t(),e.hasChanged(75)&&(this._lineHeight=this._editor.getOption(75))})),this._register(this._editor.onDidScrollChange(e=>{e.scrollLeftChanged&&t(),e.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{t(),this._updateWidgetWidth()})),t(),this._register(this._editor.onDidLayoutChange(e=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(e){return this._renderedStickyLines.find(t=>t.lineNumber===e)}getCurrentLines(){return this._lineNumbers}setState(e,t,n){let r=!this._state&&!e,i=this._state&&this._state.equals(e);if(n===void 0&&(r||i))return;let a=this._findRenderingData(e),o=this._lineNumbers;this._lineNumbers=a.lineNumbers,this._lastLineRelativePosition=a.lastLineRelativePosition;let s=this._findIndexToRebuildFrom(o,this._lineNumbers,n);this._renderRootNode(this._lineNumbers,this._lastLineRelativePosition,t,s),this._state=e}_findRenderingData(e){if(!e)return{lineNumbers:[],lastLineRelativePosition:0};let t=[...e.startLineNumbers];e.showEndForLine!==null&&(t[e.showEndForLine]=e.endLineNumbers[e.showEndForLine]);let n=0;for(let e=0;e<t.length;e++)n+=this._editor.getLineHeightForPosition(new o(t[e],1));return n===0?{lineNumbers:[],lastLineRelativePosition:0}:{lineNumbers:t,lastLineRelativePosition:e.lastLineRelativePosition}}_findIndexToRebuildFrom(e,t,n){if(t.length===0)return 0;if(n!==void 0)return n;let r=t.findIndex(t=>!e.includes(t));return r===-1?0:r}_updateWidgetWidth(){let e=this._editor.getLayoutInfo(),t=e.contentLeft;this._lineNumbersDomNode.style.width=`${t}px`,this._linesDomNodeScrollable.style.setProperty(`--vscode-editorStickyScroll-scrollableWidth`,`${this._editor.getScrollWidth()-e.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${e.width-e.verticalScrollbarWidth}px`}_useFoldingOpacityTransition(e){this._lineNumbersDomNode.style.setProperty(`--vscode-editorStickyScroll-foldingOpacityTransition`,`opacity ${e?.5:0}s`)}_setFoldingIconsVisibility(e){for(let t of this._renderedStickyLines){let n=t.foldingIcon;n&&n.setVisible(e?!0:n.isCollapsed)}}async _renderRootNode(e,t,n,r){let i=this._editor._getViewModel();if(!i){this._clearWidget();return}if(e.length===0){this._clearWidget();return}let a=[],o=e[e.length-1],s=0;for(let e=0;e<this._renderedStickyLines.length;e++)if(e<r){let t=this._renderedStickyLines[e];a.push(this._updatePosition(t,s,t.lineNumber===o)),s+=t.height}else{let t=this._renderedStickyLines[e];t.lineNumberDomNode.remove(),t.lineDomNode.remove()}let c=this._editor.getLayoutInfo();for(let t=r;t<e.length;t++){let r=this._renderChildNode(i,t,e[t],s,o===e[t],n,c);s+=r.height,this._linesDomNode.appendChild(r.lineDomNode),this._lineNumbersDomNode.appendChild(r.lineNumberDomNode),a.push(r)}n&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin)),this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map(e=>e.scrollWidth))+c.verticalScrollbarWidth,this._renderedStickyLines=a,this._setHeight(s+t),this._editor.layoutOverlayWidget(this)}_clearWidget(){for(let e=0;e<this._renderedStickyLines.length;e++){let t=this._renderedStickyLines[e];t.lineNumberDomNode.remove(),t.lineDomNode.remove()}this._setHeight(0)}_setHeight(e){this._height!==e&&(this._height=e,this._height===0?this._rootDomNode.style.display=`none`:(this._rootDomNode.style.display=`block`,this._lineNumbersDomNode.style.height=`${this._height}px`,this._linesDomNodeScrollable.style.height=`${this._height}px`,this._rootDomNode.style.height=`${this._height}px`),this._onDidChangeStickyScrollHeight.fire({height:this._height}))}_setFoldingHoverListeners(){this._editor.getOption(126)===`mouseover`&&(this._foldingIconStore.clear(),this._foldingIconStore.add(w(this._lineNumbersDomNode,S.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(w(this._lineNumbersDomNode,S.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(e,t,n,r,i,a,s){let c=e.coordinatesConverter.convertModelPositionToViewPosition(new o(n,1)).lineNumber,l=e.getViewLineRenderingData(c),u=this._editor.getOption(76),d=this._editor.getOption(117).verticalScrollbarSize,f;try{f=he.filter(l.inlineDecorations,c,l.minColumn,l.maxColumn)}catch{f=[]}let p=this._editor.getLineHeightForPosition(new o(n,1)),m=e.getTextDirection(n),ee=new me(!0,!0,l.content,l.continuesWithWrappedLine,l.isBasicASCII,l.containsRTL,0,l.tokens,f,l.tabSize,l.startVisibleColumn,1,1,1,500,`none`,!0,!0,null,m,d),h=new ue(2e3),g=fe(ee,h),_;_=ke?ke.createHTML(h.build()):h.build();let v=document.createElement(`span`);v.setAttribute(P,String(t)),v.setAttribute(Ae,``),v.setAttribute(`role`,`listitem`),v.tabIndex=0,v.className=`sticky-line-content`,v.classList.add(`stickyLine${n}`),v.style.lineHeight=`${p}px`,v.innerHTML=_;let y=document.createElement(`span`);y.setAttribute(P,String(t)),y.setAttribute(je,``),y.className=`sticky-line-number`,y.style.lineHeight=`${p}px`;let te=s.contentLeft;y.style.width=`${te}px`;let b=document.createElement(`span`);u.renderType===1||u.renderType===3&&n%10==0?b.innerText=n.toString():u.renderType===2&&(b.innerText=Math.abs(n-this._editor.getPosition().lineNumber).toString()),b.className=`sticky-line-number-inner`,b.style.width=`${s.lineNumbersWidth}px`,b.style.paddingLeft=`${s.lineNumbersLeft}px`,y.appendChild(b);let x=this._renderFoldingIconForLine(a,n);x&&(y.appendChild(x.domNode),x.domNode.style.left=`${s.lineNumbersWidth+s.lineNumbersLeft}px`,x.domNode.style.lineHeight=`${p}px`),this._editor.applyFontInfo(v),this._editor.applyFontInfo(y),y.style.lineHeight=`${p}px`,v.style.lineHeight=`${p}px`,y.style.height=`${p}px`,v.style.height=`${p}px`;let S=new Pe(t,n,v,y,x,g.characterMapping,v.scrollWidth,p);return this._updatePosition(S,r,i)}_updatePosition(e,t,n){let r=e.lineDomNode,i=e.lineNumberDomNode;if(n){r.style.zIndex=`0`,i.style.zIndex=`0`;let n=`${t+this._lastLineRelativePosition+ +!!e.foldingIcon?.isCollapsed}px`;r.style.top=n,i.style.top=n}else r.style.zIndex=`1`,i.style.zIndex=`1`,r.style.top=`${t}px`,i.style.top=`${t}px`;return e}_renderFoldingIconForLine(e,t){let n=this._editor.getOption(126);if(!e||n===`never`)return;let r=e.regions,i=r.findRange(t),a=r.getStartLineNumber(i);if(t!==a)return;let o=r.isCollapsed(i),s=new Fe(o,a,r.getEndLineNumber(i),this._lineHeight);return s.setVisible(this._isOnGlyphMargin?!0:o||n===`always`),s.domNode.setAttribute(Me,``),s}getId(){return`editor.contrib.stickyScrollWidget`}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(e){0<=e&&e<this._renderedStickyLines.length&&this._renderedStickyLines[e].lineDomNode.focus()}getEditorPositionFromNode(e){if(!e||e.children.length>0)return null;let t=this._getRenderedStickyLineFromChildDomNode(e);if(!t)return null;let n=pe(t.characterMapping,e,0);return new o(t.lineNumber,n)}getLineNumberFromChildDomNode(e){return this._getRenderedStickyLineFromChildDomNode(e)?.lineNumber??null}_getRenderedStickyLineFromChildDomNode(e){let t=this.getLineIndexFromChildDomNode(e);return t===null||t<0||t>=this._renderedStickyLines.length?null:this._renderedStickyLines[t]}getLineIndexFromChildDomNode(e){let t=this._getAttributeValue(e,P);return t?parseInt(t,10):null}isInStickyLine(e){return this._getAttributeValue(e,Ae)!==void 0}isInFoldingIconDomNode(e){return this._getAttributeValue(e,Me)!==void 0}_getAttributeValue(e,t){for(;e&&e!==this._rootDomNode;){let n=e.getAttribute(t);if(n!==null)return n;e=e.parentElement}}},Pe=class{constructor(e,t,n,r,i,a,o,s){this.index=e,this.lineNumber=t,this.lineDomNode=n,this.lineNumberDomNode=r,this.foldingIcon=i,this.characterMapping=a,this.scrollWidth=o,this.height=s}},Fe=class{constructor(e,t,n,r){this.isCollapsed=e,this.foldingStartLine=t,this.foldingEndLine=n,this.dimension=r,this.domNode=document.createElement(`div`),this.domNode.style.width=`26px`,this.domNode.style.height=`${r}px`,this.domNode.style.lineHeight=`${r}px`,this.domNode.className=x.asClassName(e?xe:Te)}setVisible(e){this.domNode.style.cursor=e?`pointer`:`default`,this.domNode.style.opacity=e?`1`:`0`}},Ie=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},F=function(e,t){return function(n,r){t(n,r,e)}},I=class{remove(){this.parent?.children.delete(this.id)}static findId(e,t){let n;typeof e==`string`?n=`${t.id}/${e}`:(n=`${t.id}/${e.name}`,t.children.get(n)!==void 0&&(n=`${t.id}/${e.name}_${e.range.startLineNumber}_${e.range.startColumn}`));let r=n;for(let e=0;t.children.get(r)!==void 0;e++)r=`${n}_${e}`;return r}static empty(e){return e.children.size===0}},L=class extends I{constructor(e,t,n){super(),this.id=e,this.parent=t,this.symbol=n,this.children=new Map}},Le=class extends I{constructor(e,t,n,r){super(),this.id=e,this.parent=t,this.label=n,this.order=r,this.children=new Map}},Re=class e extends I{static create(t,n,r){let i=new v(r),a=new e(n.uri),o=t.ordered(n),s=o.map((t,r)=>{let o=I.findId(`provider_${r}`,a),s=new Le(o,a,t.displayName??`Unknown Outline Provider`,r);return Promise.resolve(t.provideDocumentSymbols(n,i.token)).then(t=>{for(let n of t||[])e._makeOutlineElement(n,s);return s},e=>(_(e),s)).then(e=>{I.empty(e)?e.remove():a._groups.set(o,e)})}),c=t.onDidChange(()=>{b(t.ordered(n),o)||i.cancel()});return Promise.all(s).then(()=>i.token.isCancellationRequested&&!r.isCancellationRequested?e.create(t,n,r):a._compact()).finally(()=>{i.dispose(),c.dispose(),i.dispose()})}static _makeOutlineElement(t,n){let r=new L(I.findId(t,n),n,t);if(t.children)for(let n of t.children)e._makeOutlineElement(n,r);n.children.set(r.id,r)}constructor(e){super(),this.uri=e,this.id=`root`,this.parent=void 0,this._groups=new Map,this.children=new Map,this.id=`root`,this.parent=void 0}_compact(){let e=0;for(let[t,n]of this._groups)n.children.size===0?this._groups.delete(t):e+=1;if(e!==1)this.children=this._groups;else{let e=c.first(this._groups.values());for(let[,t]of e.children)t.parent=this,this.children.set(t.id,t)}return this}getTopLevelSymbols(){let e=[];for(let t of this.children.values())t instanceof L?e.push(t.symbol):e.push(...c.map(t.children.values(),e=>e.symbol));return e.sort((e,t)=>y.compareRangesUsingStarts(e.range,t.range))}asListOfDocumentSymbols(){let t=this.getTopLevelSymbols(),n=[];return e._flattenDocumentSymbols(n,t,``),n.sort((e,t)=>o.compare(y.getStartPosition(e.range),y.getStartPosition(t.range))||o.compare(y.getEndPosition(t.range),y.getEndPosition(e.range)))}static _flattenDocumentSymbols(t,n,r){for(let i of n)t.push({kind:i.kind,tags:i.tags,name:i.name,detail:i.detail,containerName:i.containerName||r,range:i.range,selectionRange:i.selectionRange,children:void 0}),i.children&&e._flattenDocumentSymbols(t,i.children,i.name)}},ze=le(`IOutlineModelService`),R=class{constructor(e,t,n){this._languageFeaturesService=e,this._disposables=new u,this._cache=new f(15,.7),this._debounceInformation=t.for(e.documentSymbolProvider,`DocumentSymbols`,{min:350}),this._disposables.add(n.onModelRemoved(e=>{this._cache.delete(e.id)}))}dispose(){this._disposables.dispose()}async getOrCreate(e,t){let n=this._languageFeaturesService.documentSymbolProvider,r=n.ordered(e),i=this._cache.get(e.id);if(!i||i.versionId!==e.getVersionId()||!b(i.provider,r)){let t=new v;i={versionId:e.getVersionId(),provider:r,promiseCnt:0,source:t,promise:Re.create(n,e,t.token),model:void 0},this._cache.set(e.id,i);let a=Date.now();i.promise.then(t=>{i.model=t,this._debounceInformation.update(e,Date.now()-a)}).catch(t=>{this._cache.delete(e.id)})}if(i.model)return i.model;i.promiseCnt+=1;let a=t.onCancellationRequested(()=>{--i.promiseCnt===0&&(i.source.cancel(),this._cache.delete(e.id))});try{return await i.promise}finally{a.dispose()}}};R=Ie([F(0,k),F(1,j),F(2,p)],R),ee(ze,R,1);var z=class{constructor(e,t){this.startLineNumber=e,this.endLineNumber=t}},B=class{constructor(e,t,n){this.range=e,this.children=t,this.parent=n}},Be=class{constructor(e,t,n,r){this.uri=e,this.version=t,this.element=n,this.outlineProviderId=r}},V=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},H=function(e,t){return function(n,r){t(n,r,e)}},U;(function(e){e.OUTLINE_MODEL=`outlineModel`,e.FOLDING_PROVIDER_MODEL=`foldingProviderModel`,e.INDENTATION_MODEL=`indentationModel`})(U||={});var W;(function(e){e[e.VALID=0]=`VALID`,e[e.INVALID=1]=`INVALID`,e[e.CANCELED=2]=`CANCELED`})(W||={});var G=class extends e{constructor(e,t,n,r){switch(super(),this._editor=e,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new l(300)),this._updateOperation=this._register(new u),this._editor.getOption(131).defaultModel){case U.OUTLINE_MODEL:this._modelProviders.push(new K(this._editor,r));case U.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new J(this._editor,t,r));case U.INDENTATION_MODEL:this._modelProviders.push(new q(this._editor,n));break}}dispose(){this._modelProviders.forEach(e=>e.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&=(this._modelPromise.cancel(),null)}async update(e){return this._updateOperation.clear(),this._updateOperation.add({dispose:()=>{this._cancelModelPromise(),this._updateScheduler.cancel()}}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(let t of this._modelProviders){let{statusPromise:n,modelPromise:r}=t.computeStickyModel(e);this._modelPromise=r;let i=await n;if(this._modelPromise!==r)return null;switch(i){case W.CANCELED:return this._updateOperation.clear(),null;case W.VALID:return t.stickyModel}}return null}).catch(e=>(m(e),null))}};G=V([H(2,O),H(3,k)],G);var Ve=class extends e{constructor(e){super(),this._editor=e,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,W.INVALID}computeStickyModel(e){if(e.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};let t=a(e=>this.createModelFromProvider(e));return{statusPromise:t.then(t=>this.isModelValid(t)?e.isCancellationRequested?W.CANCELED:(this._stickyModel=this.createStickyModel(e,t),W.VALID):this._invalid()).then(void 0,e=>(m(e),W.CANCELED)),modelPromise:t}}isModelValid(e){return!0}isProviderValid(){return!0}},K=class extends Ve{constructor(e,t){super(e),this._languageFeaturesService=t}createModelFromProvider(e){return Re.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),e)}createStickyModel(e,t){let{stickyOutlineElement:n,providerID:r}=this._stickyModelFromOutlineModel(t,this._stickyModel?.outlineProviderId),i=this._editor.getModel();return new Be(i.uri,i.getVersionId(),n,r)}isModelValid(e){return e&&e.children.size>0}_stickyModelFromOutlineModel(e,t){let n;if(c.first(e.children.values())instanceof Le){let r=c.find(e.children.values(),e=>e.id===t);if(r)n=r.children;else{let r=``,i=-1,a;for(let[t,n]of e.children.entries()){let e=this._findSumOfRangesOfGroup(n);e>i&&(a=n,i=e,r=n.id)}t=r,n=a.children}}else n=e.children;let r=[],i=Array.from(n.values()).sort((e,t)=>{let n=new z(e.symbol.range.startLineNumber,e.symbol.range.endLineNumber),r=new z(t.symbol.range.startLineNumber,t.symbol.range.endLineNumber);return this._comparator(n,r)});for(let e of i)r.push(this._stickyModelFromOutlineElement(e,e.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new B(void 0,r,void 0),providerID:t}}_stickyModelFromOutlineElement(e,t){let n=[];for(let r of e.children.values())if(r.symbol.selectionRange.startLineNumber!==r.symbol.range.endLineNumber)if(r.symbol.selectionRange.startLineNumber!==t)n.push(this._stickyModelFromOutlineElement(r,r.symbol.selectionRange.startLineNumber));else for(let e of r.children.values())n.push(this._stickyModelFromOutlineElement(e,r.symbol.selectionRange.startLineNumber));return n.sort((e,t)=>this._comparator(e.range,t.range)),new B(new z(e.symbol.selectionRange.startLineNumber,e.symbol.range.endLineNumber),n,void 0)}_comparator(e,t){return e.startLineNumber===t.startLineNumber?t.endLineNumber-e.endLineNumber:e.startLineNumber-t.startLineNumber}_findSumOfRangesOfGroup(e){let t=0;for(let n of e.children.values())t+=this._findSumOfRangesOfGroup(n);return e instanceof L?t+e.symbol.range.endLineNumber-e.symbol.selectionRange.startLineNumber:t}};K=V([H(1,k)],K);var He=class extends Ve{constructor(e){super(e),this._foldingLimitReporter=this._register(new we(e))}createStickyModel(e,t){let n=this._fromFoldingRegions(t),r=this._editor.getModel();return new Be(r.uri,r.getVersionId(),n,void 0)}isModelValid(e){return e!==null}_fromFoldingRegions(e){let t=e.length,n=[],r=new B(void 0,[],void 0);for(let i=0;i<t;i++){let t=e.getParentIndex(i),a;a=t===-1?r:n[t];let o=new B(new z(e.getStartLineNumber(i),e.getEndLineNumber(i)+1),[],a);a.children.push(o),n.push(o)}return r}},q=class extends He{constructor(e,t){super(e),this._languageConfigurationService=t,this.provider=this._register(new Ee(e.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(e){return this.provider.compute(e)}};q=V([H(1,A)],q);var J=class extends He{constructor(e,n,r){super(e),this._languageFeaturesService=r,this.provider=this._register(new t),this._register(this._languageFeaturesService.foldingRangeProvider.onDidChange(()=>{this._updateProvider(e,n)})),this._updateProvider(e,n)}_updateProvider(e,t){let n=De.getFoldingRangeProviders(this._languageFeaturesService,e.getModel());n.length!==0&&(this.provider.value=new Ce(e.getModel(),n,t,this._foldingLimitReporter,void 0))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(e){return this.provider.value?.compute(e)??null}};J=V([H(2,k)],J);var Ue=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},We=function(e,t){return function(n,r){t(n,r,e)}},Ge=class{constructor(e,t,n,r){this.startLineNumber=e,this.endLineNumber=t,this.top=n,this.height=r}},Y=class extends e{constructor(e,t,r){super(),this._languageFeaturesService=t,this._languageConfigurationService=r,this._onDidChangeStickyScroll=this._register(new g),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=e,this._sessionStore=this._register(new u),this._updateSoon=this._register(new n(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(131)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(131).enabled&&(this._sessionStore.add(this._editor.onDidChangeModel(()=>{this._model=null,this.updateStickyModelProvider(),this._onDidChangeStickyScroll.fire(),this.update()})),this._sessionStore.add(this._editor.onDidChangeHiddenAreas(()=>this.update())),this._sessionStore.add(this._editor.onDidChangeModelContent(()=>this._updateSoon.schedule())),this._sessionStore.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>this.update())),this._sessionStore.add(s(()=>{this._stickyModelProvider?.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){return this._model?.version}updateStickyModelProvider(){this._stickyModelProvider?.dispose(),this._stickyModelProvider=null,this._editor.hasModel()&&(this._stickyModelProvider=new G(this._editor,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){this._cts?.dispose(!0),this._cts=new v,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(e){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}let t=await this._stickyModelProvider.update(e);e.isCancellationRequested||(this._model=t)}getCandidateStickyLinesIntersecting(e){if(!this._model?.element)return[];let t=[];return this.getCandidateStickyLinesIntersectingFromStickyModel(e,this._model.element,t,0,0,-1),this.filterHiddenRanges(t)}getCandidateStickyLinesIntersectingFromStickyModel(e,t,n,r,i,a){let s=this._editor.getModel();if(!s||t.children.length===0)return;let c=a,l=[];for(let e=0;e<t.children.length;e++){let n=t.children[e];n.range&&l.push(n.range.startLineNumber)}let u=this.updateIndex(se(l,e.startLineNumber,(e,t)=>e-t)),d=this.updateIndex(se(l,e.endLineNumber,(e,t)=>e-t));for(let a=u;a<=d;a++){let l=t.children[a];if(!l||!l.range)continue;let{startLineNumber:u,endLineNumber:d}=l.range;if(d>u+1&&e.startLineNumber<=d+1&&u-1<=e.endLineNumber&&u!==c&&s.isValidRange(new y(u,1,d,1))){c=u;let t=this._editor.getLineHeightForPosition(new o(u,1));n.push(new Ge(u,d-1,i,t)),this.getCandidateStickyLinesIntersectingFromStickyModel(e,l,n,r+1,i+t,u)}}}filterHiddenRanges(e){let t=this._editor._getViewModel()?.getHiddenAreas();return t?e.filter(e=>!t.some(t=>e.startLineNumber>=t.startLineNumber&&e.endLineNumber<=t.endLineNumber+1)):e}updateIndex(e){return e===-1?0:e<0?-e-2:e}};Y=Ue([We(1,k),We(2,A)],Y);var Ke=function(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a},X=function(e,t){return function(n,r){t(n,r,e)}},Z,Q=class extends e{static{Z=this}static{this.ID=`store.contrib.stickyScrollController`}constructor(e,t,n,r,i,a,o){super(),this._editor=e,this._contextMenuService=t,this._languageFeaturesService=n,this._instaService=r,this._contextKeyService=o,this._sessionStore=new u,this._maxStickyLines=2**53-1,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._mouseTarget=null,this._onDidChangeStickyScrollHeight=this._register(new g),this.onDidChangeStickyScrollHeight=this._onDidChangeStickyScrollHeight.event,this._stickyScrollWidget=new Ne(this._editor),this._stickyLineCandidateProvider=new Y(this._editor,n,i),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=N.Empty;let s=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeLineHeight(e=>{e.changes.forEach(e=>{let t=e.lineNumber;this._widgetState.startLineNumbers.includes(t)&&this._renderStickyScroll(t)})})),this._register(this._editor.onDidChangeFont(e=>{e.changes.forEach(e=>{let t=e.lineNumber;this._widgetState.startLineNumbers.includes(t)&&this._renderStickyScroll(t)})})),this._register(this._editor.onDidChangeConfiguration(e=>{this._readConfigurationChange(e)})),this._register(w(s,S.CONTEXT_MENU,async e=>{this._onContextMenu(ne(s),e)})),this._stickyScrollFocusedContextKey=M.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=M.stickyScrollVisible.bindTo(this._contextKeyService);let c=this._register(te(s));this._register(c.onDidBlur(e=>{this._positionRevealed===!1&&s.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(c.onDidFocus(e=>{this.focus()})),this._registerMouseListeners(),this._register(w(s,S.MOUSE_DOWN,e=>{this._onMouseDown=!0})),this._register(this._stickyScrollWidget.onDidChangeStickyScrollHeight(e=>{this._onDidChangeStickyScrollHeight.fire(e)})),this._onDidResize(),this._readConfiguration()}get stickyScrollWidgetHeight(){return this._stickyScrollWidget.height}static get(e){return e.getContribution(Z.ID)}_disposeFocusStickyScrollStore(){this._stickyScrollFocusedContextKey.set(!1),this._focusDisposableStore?.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}isFocused(){return this._focused}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new u,this._stickyScrollFocusedContextKey.set(!0),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumbers.length-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}focusNext(){this._focusedStickyElementIndex<this._stickyScrollWidget.lineNumberCount-1&&this._focusNav(!0)}focusPrevious(){this._focusedStickyElementIndex>0&&this._focusNav(!1)}selectEditor(){this._editor.focus()}_focusNav(e){this._focusedStickyElementIndex=e?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){let e=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:e[this._focusedStickyElementIndex],column:1})}_revealPosition(e){this._reveaInEditor(e,()=>this._editor.revealPosition(e))}_revealLineInCenterIfOutsideViewport(e){this._reveaInEditor(e,()=>this._editor.revealLineInCenterIfOutsideViewport(e.lineNumber,0))}_reveaInEditor(e,t){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,t(),this._editor.setSelection(y.fromPositions(e)),this._editor.focus()}_registerMouseListeners(){let e=this._register(new u),t=this._register(new _e(this._editor,{extractLineNumberFromMouseEvent:e=>{let t=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);return t?t.lineNumber:0}})),n=e=>{if(!this._editor.hasModel()||e.target.type!==12||e.target.detail!==this._stickyScrollWidget.getId())return null;let t=e.target.element;if(!t||t.innerText!==t.innerHTML)return null;let n=this._stickyScrollWidget.getEditorPositionFromNode(t);return n?{range:new y(n.lineNumber,n.column,n.lineNumber,n.column+t.innerText.length),textElement:t}:null},r=this._stickyScrollWidget.getDomNode();this._register(re(r,S.CLICK,e=>{if(e.ctrlKey||e.altKey||e.metaKey||!e.leftButton)return;if(e.shiftKey){let t=this._stickyScrollWidget.getLineIndexFromChildDomNode(e.target);if(t===null)return;let n=new o(this._endLineNumbers[t],1);this._revealLineInCenterIfOutsideViewport(n);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(e.target)){let t=this._stickyScrollWidget.getLineNumberFromChildDomNode(e.target);this._toggleFoldingRegionForLine(t);return}if(!this._stickyScrollWidget.isInStickyLine(e.target))return;let t=this._stickyScrollWidget.getEditorPositionFromNode(e.target);if(!t){let n=this._stickyScrollWidget.getLineNumberFromChildDomNode(e.target);if(n===null)return;t=new o(n,1)}this._revealPosition(t)})),this._register(w(T,S.MOUSE_MOVE,e=>{this._mouseTarget=e.target,this._onMouseMoveOrKeyDown(e)})),this._register(w(T,S.KEY_DOWN,e=>{this._onMouseMoveOrKeyDown(e)})),this._register(w(T,S.KEY_UP,()=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(t.onMouseMoveOrRelevantKeyDown(([t,r])=>{let i=n(t);if(!i||!t.hasTriggerModifier||!this._editor.hasModel()){e.clear();return}let{range:a,textElement:c}=i;if(!a.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=a,e.clear();else if(c.style.textDecoration===`underline`)return;let l=new v;e.add(s(()=>l.dispose(!0)));let u;ve(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new o(a.startLineNumber,a.startColumn+1),!1,l.token).then((t=>{if(!l.token.isCancellationRequested)if(t.length!==0){this._candidateDefinitionsLength=t.length;let n=c;u===n?u||(u=n,u.style.textDecoration=`underline`,e.add(s(()=>{u.style.textDecoration=`none`}))):(e.clear(),u=n,u.style.textDecoration=`underline`,e.add(s(()=>{u.style.textDecoration=`none`})))}else e.clear()}))})),this._register(t.onCancel(()=>{e.clear()})),this._register(t.onExecute(async e=>{if(e.target.type!==12||e.target.detail!==this._stickyScrollWidget.getId())return;let t=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);t&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:t.lineNumber,column:1})),this._instaService.invokeFunction(ye,e,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(e,t){let n=new ae(e,t);this._contextMenuService.showContextMenu({menuId:C.StickyScrollContext,getAnchor:()=>n})}_onMouseMoveOrKeyDown(e){if(!e.shiftKey||!this._mouseTarget||!oe(this._mouseTarget))return;let t=this._stickyScrollWidget.getLineIndexFromChildDomNode(this._mouseTarget);t===null||this._showEndForLine===t||(this._showEndForLine=t,this._renderStickyScroll())}_toggleFoldingRegionForLine(e){if(!this._foldingModel||e===null)return;let t=this._stickyScrollWidget.getRenderedStickyLine(e),n=t?.foldingIcon;if(!n)return;Se(this._foldingModel,1,[e]),n.isCollapsed=!n.isCollapsed;let r=(n.isCollapsed?this._editor.getTopForLineNumber(n.foldingEndLine):this._editor.getTopForLineNumber(n.foldingStartLine))-this._editor.getOption(75)*t.index+1;this._editor.setScrollTop(r),this._renderStickyScroll(e)}_readConfiguration(){let e=this._editor.getOption(131);if(e.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._resetState(),this._sessionStore.clear(),this._enabled=!1;return}else e.enabled&&!this._enabled&&(this._editor.addOverlayWidget(this._stickyScrollWidget),this._sessionStore.add(this._editor.onDidScrollChange(e=>{e.scrollTopChanged&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._sessionStore.add(this._editor.onDidLayoutChange(()=>this._onDidResize())),this._sessionStore.add(this._editor.onDidChangeModelTokens(e=>this._onTokensChange(e))),this._sessionStore.add(this._stickyLineCandidateProvider.onDidChangeStickyScroll(()=>{this._showEndForLine=void 0,this._renderStickyScroll()})),this._enabled=!0);this._editor.getOption(76).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(e){(e.hasChanged(131)||e.hasChanged(81)||e.hasChanged(75)||e.hasChanged(126)||e.hasChanged(76))&&this._readConfiguration(),(e.hasChanged(76)||e.hasChanged(52)||e.hasChanged(126))&&this._renderStickyScroll(0)}_needsUpdate(e){let t=this._stickyScrollWidget.getCurrentLines();for(let n of t)for(let t of e.ranges)if(n>=t.fromLineNumber&&n<=t.toLineNumber)return!0;return!1}_onTokensChange(e){this._needsUpdate(e)&&this._renderStickyScroll(0)}_onDidResize(){let e=this._editor.getLayoutInfo().height/this._editor.getOption(75);this._maxStickyLines=Math.round(e*.25),this._renderStickyScroll(0)}async _renderStickyScroll(e){let t=this._editor.getModel();if(!t||t.isTooLargeForTokenization()){this._resetState();return}let n=this._updateAndGetMinRebuildFromLine(e),r=this._stickyLineCandidateProvider.getVersionId();if(r===void 0||r===t.getVersionId())if(!this._focused)await this._updateState(n);else if(this._focusedStickyElementIndex===-1)await this._updateState(n),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{let e=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(n),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(e)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(e){if(e!==void 0){let t=this._minRebuildFromLine===void 0?1/0:this._minRebuildFromLine;this._minRebuildFromLine=Math.min(e,t)}return this._minRebuildFromLine}async _updateState(e){this._minRebuildFromLine=void 0,this._foldingModel=await De.get(this._editor)?.getFoldingModel()??void 0,this._widgetState=this.findScrollWidgetState();let t=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(t),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,e)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=N.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){let e=Math.min(this._maxStickyLines,this._editor.getOption(131).maxLineCount),t=this._editor.getScrollTop(),n=0,r=[],i=[],a=this._editor.getVisibleRanges();if(a.length!==0){let o=new z(a[0].startLineNumber,a[a.length-1].endLineNumber),s=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(o);for(let a of s){let o=a.startLineNumber,s=a.endLineNumber,c=a.top,l=c+a.height,u=this._editor.getTopForLineNumber(o)-t,d=this._editor.getBottomForLineNumber(s)-t;if(c>u&&c<=d&&(r.push(o),i.push(s+1),l>d&&(n=d-l)),r.length===e)break}}return this._endLineNumbers=i,new N(r,i,n,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}};Q=Z=Ke([X(1,de),X(2,k),X(3,O),X(4,A),X(5,j),X(6,i)],Q);var qe=class extends E{constructor(){super({id:`editor.action.toggleStickyScroll`,title:{...h(1448,`Toggle Editor Sticky Scroll`),mnemonicTitle:d(1444,`&&Toggle Editor Sticky Scroll`)},metadata:{description:h(1449,`Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport`)},category:Oe.View,toggled:{condition:r.equals(`config.editor.stickyScroll.enabled`,!0),title:d(1445,`Sticky Scroll`),mnemonicTitle:d(1446,`&&Sticky Scroll`)},menu:[{id:C.CommandPalette},{id:C.MenubarAppearanceMenu,group:`4_editor`,order:3},{id:C.StickyScrollContext}]})}async runEditorCommand(e,t){let n=e.get(ce),r=!n.getValue(`editor.stickyScroll.enabled`),i=Q.get(t)?.isFocused();n.updateValue(`editor.stickyScroll.enabled`,r),i&&t.focus()}},$=100,Je=class extends E{constructor(){super({id:`editor.action.focusStickyScroll`,title:{...h(1450,`Focus Editor Sticky Scroll`),mnemonicTitle:d(1447,`&&Focus Editor Sticky Scroll`)},precondition:r.and(r.has(`config.editor.stickyScroll.enabled`),M.stickyScrollVisible),menu:[{id:C.CommandPalette}]})}runEditorCommand(e,t){Q.get(t)?.focus()}},Ye=class extends E{constructor(){super({id:`editor.action.selectNextStickyScrollLine`,title:h(1451,`Select the next editor sticky scroll line`),precondition:M.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:$,primary:18}})}runEditorCommand(e,t){Q.get(t)?.focusNext()}},Xe=class extends E{constructor(){super({id:`editor.action.selectPreviousStickyScrollLine`,title:h(1452,`Select the previous sticky scroll line`),precondition:M.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:$,primary:16}})}runEditorCommand(e,t){Q.get(t)?.focusPrevious()}},Ze=class extends E{constructor(){super({id:`editor.action.goToFocusedStickyScrollLine`,title:h(1453,`Go to the focused sticky scroll line`),precondition:M.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:$,primary:3}})}runEditorCommand(e,t){Q.get(t)?.goToFocused()}},Qe=class extends E{constructor(){super({id:`editor.action.selectEditor`,title:h(1454,`Select Editor`),precondition:M.stickyScrollFocused.isEqualTo(!0),keybinding:{weight:$,primary:9}})}runEditorCommand(e,t){Q.get(t)?.selectEditor()}};ie(Q.ID,Q,1),D(qe),D(Je),D(Xe),D(Ye),D(Ze),D(Qe);export{ze as n,Oe as r,Q as t};