@univerjs/uniscript 0.4.1-nightly.202410291304 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/LICENSE +176 -0
  2. package/lib/cjs/index.js +1 -1
  3. package/lib/{cssMode-BFpUjq8v.js → cssMode-B_of5tVd.js} +1 -1
  4. package/lib/{cssMode-BCQBRdx1.mjs → cssMode-BuX-eUHc.mjs} +1 -1
  5. package/lib/es/index.js +1 -1
  6. package/lib/{freemarker2-DyRztPQN.mjs → freemarker2-D8-fH4uC.mjs} +1 -1
  7. package/lib/{freemarker2-DdTiSBi2.js → freemarker2-S5ay_GEf.js} +1 -1
  8. package/lib/{handlebars-Blgo7aqR.mjs → handlebars-CEMNnGaU.mjs} +1 -1
  9. package/lib/{handlebars-BcCn01qB.js → handlebars-CM3PRDRO.js} +1 -1
  10. package/lib/{html-CxEqoPGh.mjs → html-BSUn7oJR.mjs} +1 -1
  11. package/lib/{html-Babag4PV.js → html-Df-Osxjs.js} +1 -1
  12. package/lib/{htmlMode-BHLqs4-w.js → htmlMode-Bj4CfAzA.js} +1 -1
  13. package/lib/{htmlMode-DkZMCebd.mjs → htmlMode-xJPwX0cD.mjs} +1 -1
  14. package/lib/{index-CKu_pcs4.mjs → index-D6nY5NdF.mjs} +23 -22
  15. package/lib/{index-B3fJXKxC.js → index-rYV4VmC2.js} +17 -17
  16. package/lib/{javascript-rn8o-ead.js → javascript-D1eKEotE.js} +1 -1
  17. package/lib/{javascript-BaDtklYB.mjs → javascript-c8D1_K05.mjs} +1 -1
  18. package/lib/{jsonMode-DSD5Ik2f.mjs → jsonMode-8-L3-E9k.mjs} +1 -1
  19. package/lib/{jsonMode-Csu0RiVw.js → jsonMode-BdBVsN9_.js} +1 -1
  20. package/lib/{liquid-8CCoxyQp.js → liquid-BmlJOXgY.js} +1 -1
  21. package/lib/{liquid-q19teVI6.mjs → liquid-Bs7DM5cg.mjs} +1 -1
  22. package/lib/{mdx-PW21M9I1.mjs → mdx-BEI71kqO.mjs} +1 -1
  23. package/lib/{mdx-DzuJn6Wv.js → mdx-DJV2KJ98.js} +1 -1
  24. package/lib/{python-BwZ__8p3.mjs → python-BOeTitp9.mjs} +1 -1
  25. package/lib/{python-DVUPIVxh.js → python-DRyE-VQQ.js} +1 -1
  26. package/lib/{razor-DQMksoV9.mjs → razor-D0RPXCAO.mjs} +1 -1
  27. package/lib/{razor-aXktutOF.js → razor-DtDOotKq.js} +1 -1
  28. package/lib/{tsMode-w7xtQAYq.mjs → tsMode-BB2mDc5d.mjs} +1 -1
  29. package/lib/{tsMode-CnRtVXQY.js → tsMode-N-LS5RKx.js} +1 -1
  30. package/lib/{typescript-CHqNbo9C.js → typescript-CZplv8KD.js} +1 -1
  31. package/lib/{typescript-98-SUXVw.mjs → typescript-f9PHTVoW.mjs} +1 -1
  32. package/lib/umd/index.js +2 -2
  33. package/lib/{xml-DkULQKNC.js → xml-BSe-ETnG.js} +1 -1
  34. package/lib/{xml-9CzKJT1G.mjs → xml-Dv0cmUxw.mjs} +1 -1
  35. package/lib/{yaml-DNNNA-GG.js → yaml-O_DoXtBP.js} +1 -1
  36. package/lib/{yaml-BxP_V9uW.mjs → yaml-eXS7QSgG.mjs} +1 -1
  37. package/package.json +9 -9
package/lib/umd/index.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/ui","rxjs","react","@univerjs/design","@univerjs/sheets-ui","@univerjs/sheets"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverUniscript={},global.UniverCore,global.UniverUi,global.rxjs,global.React,global.UniverDesign,global.UniverSheetsUi,global.UniverSheets))})(this,function(exports2,core,ui,rxjs,require$$0,design,sheetsUi,sheets){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p,_q,_r,_s,_t,_u,_v,_w,_x,_y,_z,_A,_B,_C,_D,_E,_F,_G,_H,_I,_J,_K,_L,_M,_N,_O,_P,_Q,_R,_S,_T,_U,_V,_W,_X,_Y,_Z,__,_$2,_aa,_ba,_ca,_da,_ea,_fa,_ga,_ha,_ia,_ka,_la,_ma,_na,_oa,_pa,_qa,_ra,_sa,_ta,_ua,_va,_wa,_xa,_ya,_za,_Aa,_Ba,_Ca,_Da,_Ea,_Fa,_Ga,_Ha,_Ia,_Ja,_Ka,_La,_Ma,_Na,_Oa,_Pa,_Qa,_Ra,_Sa,_Ta,_Ua,_Va,_Wa,_Xa,_Ya,_Za,__a,_$a,_ab,_bb,_cb,_db,_eb,_fb,_gb,_hb,_ib,_jb,_kb,_lb,_mb,_nb,_ob,_pb,_qb,_rb,_sb,_tb,_ub,_vb,_wb,_xb,_yb,_zb,_Ab,_Bb,_Cb,_Db,_Eb,_Fb,_Gb,_Hb,_Ib,_Jb,_Kb,_Lb,_Mb,_Nb,_Ob,_Pb,_Qb,_Rb,_Sb,_Tb,_Ub,_Vb,_Wb,_Xb,_Yb,_Zb,__b,_$b,_ac,_bc,_cc,_dc,_ec,_fc,_gc,_hc,_ic,_jc,_kc,_lc,_mc,_nc,_oc,_pc,_qc,_rc,_sc,_tc,_uc,_vc,_wc,_xc,_yc,_zc,_Ac,_Bc,_Cc,_Dc,_Ec,_Fc,_Gc,_Hc,_Ic,_Jc,_Kc,_Lc,_Mc,_Nc,_Oc,_Pc,_Qc,_Rc,_Sc,_Tc,_Uc,_Vc,_Wc,_Xc,_Yc,_Zc,__c,_$c,_ad,_bd,_cd,_dd,_ed,_fd,_gd,_hd,_id,_jd,_kd,_ld,_md,_nd,_od,_pd,_qd,_rd,_sd,_td,_ud,_vd,_wd,_xd,_yd,_zd,_Ad,_Bd,_Cd,_Dd,_Ed,_Fd,_Gd,_Hd,_Id,_Jd,_Kd,_Ld,_Md,_Nd,_Od,_Pd,_Qd,_Rd,_Sd,_Td,_Ud,_Vd,_Wd,_Xd,_Yd,_Zd,__d,_$d,_ae,_be,_ce,_de,_ee,_fe,_ge,_he,_ie,_je,_ke,_le,_me,_ne,_oe,_pe,_qe,_re,_se,_te,_ue,_ve,_we,_xe,_ye,_ze,_Ae,_Be,_Ce,_De,_Ee,_Fe,_Ge,_He,_Ie,_Je,_Ke,_Le,_Me,_Ne,_Oe,_Pe,_Qe,_Re,_Se,_Te,_Ue,_Ve,_We,_Xe,_Ye,_Ze,__e,_$e,_af,_bf,_cf,_df,_ef,_ff,_gf,_hf,_if,_jf,_kf,_lf,_mf,_nf,_of,_pf,_qf,_rf,_sf,_tf,_uf,_vf,_wf,_xf,_yf,_zf,_Af,_Bf,_Cf,_Df,_Ef,_Ff,_Gf,_Hf,_If,_Jf,_Kf,_Lf,_Mf,_Nf,_Of,_Pf,_Qf,_Rf,_Sf,_Tf,_Uf,_Vf,_Wf,_Xf,_Yf,_Zf,__f,_$f;const PLUGIN_CONFIG_KEY="uniscript.config",defaultPluginConfig={},_ScriptPanelService=class _ScriptPanelService extends core.Disposable{constructor(){super(...arguments);__publicField(this,"_open$",new rxjs.BehaviorSubject(!1));__publicField(this,"open$",this._open$.pipe(rxjs.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}};__name(_ScriptPanelService,"ScriptPanelService");let ScriptPanelService=_ScriptPanelService;const ScriptPanelComponentName="ScriptPanel",ToggleScriptPanelOperation={type:core.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:__name(accessor=>{const scriptPanelService=accessor.get(ScriptPanelService),sidebarService=accessor.get(ui.ISidebarService);return scriptPanelService.isOpen?(scriptPanelService.close(),sidebarService.close()):(scriptPanelService.open(),sidebarService.open({header:{title:"script-panel.title"},children:{label:ScriptPanelComponentName},width:600})),!0},"handler")};var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/**
1
+ (function(global,factory){typeof exports=="object"&&typeof module<"u"?factory(exports,require("@univerjs/core"),require("@univerjs/ui"),require("rxjs"),require("react"),require("@univerjs/design"),require("@univerjs/facade"),require("@univerjs/sheets-ui"),require("@univerjs/sheets")):typeof define=="function"&&define.amd?define(["exports","@univerjs/core","@univerjs/ui","rxjs","react","@univerjs/design","@univerjs/facade","@univerjs/sheets-ui","@univerjs/sheets"],factory):(global=typeof globalThis<"u"?globalThis:global||self,factory(global.UniverUniscript={},global.UniverCore,global.UniverUi,global.rxjs,global.React,global.UniverDesign,global.UniverFacade,global.UniverSheetsUi,global.UniverSheets))})(this,function(exports2,core,ui,rxjs,require$$0,design,facade,sheetsUi,sheets){"use strict";var __defProp=Object.defineProperty;var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value);var _a2,_b2,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p,_q,_r,_s,_t,_u,_v,_w,_x,_y,_z,_A,_B,_C,_D,_E,_F,_G,_H,_I,_J,_K,_L,_M,_N,_O,_P,_Q,_R,_S,_T,_U,_V,_W,_X,_Y,_Z,__,_$2,_aa,_ba,_ca,_da,_ea,_fa,_ga,_ha,_ia,_ka,_la,_ma,_na,_oa,_pa,_qa,_ra,_sa,_ta,_ua,_va,_wa,_xa,_ya,_za,_Aa,_Ba,_Ca,_Da,_Ea,_Fa,_Ga,_Ha,_Ia,_Ja,_Ka,_La,_Ma,_Na,_Oa,_Pa,_Qa,_Ra,_Sa,_Ta,_Ua,_Va,_Wa,_Xa,_Ya,_Za,__a,_$a,_ab,_bb,_cb,_db,_eb,_fb,_gb,_hb,_ib,_jb,_kb,_lb,_mb,_nb,_ob,_pb,_qb,_rb,_sb,_tb,_ub,_vb,_wb,_xb,_yb,_zb,_Ab,_Bb,_Cb,_Db,_Eb,_Fb,_Gb,_Hb,_Ib,_Jb,_Kb,_Lb,_Mb,_Nb,_Ob,_Pb,_Qb,_Rb,_Sb,_Tb,_Ub,_Vb,_Wb,_Xb,_Yb,_Zb,__b,_$b,_ac,_bc,_cc,_dc,_ec,_fc,_gc,_hc,_ic,_jc,_kc,_lc,_mc,_nc,_oc,_pc,_qc,_rc,_sc,_tc,_uc,_vc,_wc,_xc,_yc,_zc,_Ac,_Bc,_Cc,_Dc,_Ec,_Fc,_Gc,_Hc,_Ic,_Jc,_Kc,_Lc,_Mc,_Nc,_Oc,_Pc,_Qc,_Rc,_Sc,_Tc,_Uc,_Vc,_Wc,_Xc,_Yc,_Zc,__c,_$c,_ad,_bd,_cd,_dd,_ed,_fd,_gd,_hd,_id,_jd,_kd,_ld,_md,_nd,_od,_pd,_qd,_rd,_sd,_td,_ud,_vd,_wd,_xd,_yd,_zd,_Ad,_Bd,_Cd,_Dd,_Ed,_Fd,_Gd,_Hd,_Id,_Jd,_Kd,_Ld,_Md,_Nd,_Od,_Pd,_Qd,_Rd,_Sd,_Td,_Ud,_Vd,_Wd,_Xd,_Yd,_Zd,__d,_$d,_ae,_be,_ce,_de,_ee,_fe,_ge,_he,_ie,_je,_ke,_le,_me,_ne,_oe,_pe,_qe,_re,_se,_te,_ue,_ve,_we,_xe,_ye,_ze,_Ae,_Be,_Ce,_De,_Ee,_Fe,_Ge,_He,_Ie,_Je,_Ke,_Le,_Me,_Ne,_Oe,_Pe,_Qe,_Re,_Se,_Te,_Ue,_Ve,_We,_Xe,_Ye,_Ze,__e,_$e,_af,_bf,_cf,_df,_ef,_ff,_gf,_hf,_if,_jf,_kf,_lf,_mf,_nf,_of,_pf,_qf,_rf,_sf,_tf,_uf,_vf,_wf,_xf,_yf,_zf,_Af,_Bf,_Cf,_Df,_Ef,_Ff,_Gf,_Hf,_If,_Jf,_Kf,_Lf,_Mf,_Nf,_Of,_Pf,_Qf,_Rf,_Sf,_Tf,_Uf,_Vf,_Wf,_Xf,_Yf,_Zf,__f,_$f;const PLUGIN_CONFIG_KEY="uniscript.config",defaultPluginConfig={},_ScriptPanelService=class _ScriptPanelService extends core.Disposable{constructor(){super(...arguments);__publicField(this,"_open$",new rxjs.BehaviorSubject(!1));__publicField(this,"open$",this._open$.pipe(rxjs.distinctUntilChanged()))}get isOpen(){return this._open$.getValue()}dispose(){super.dispose(),this._open$.next(!1),this._open$.complete()}open(){this._open$.next(!0)}close(){this._open$.next(!1)}};__name(_ScriptPanelService,"ScriptPanelService");let ScriptPanelService=_ScriptPanelService;const ScriptPanelComponentName="ScriptPanel",ToggleScriptPanelOperation={type:core.CommandType.OPERATION,id:"univer.operation.toggle-script-panel",handler:__name(accessor=>{const scriptPanelService=accessor.get(ScriptPanelService),sidebarService=accessor.get(ui.ISidebarService);return scriptPanelService.isOpen?(scriptPanelService.close(),sidebarService.close()):(scriptPanelService.open(),sidebarService.open({header:{title:"script-panel.title"},children:{label:ScriptPanelComponentName},width:600})),!0},"handler")};var jsxRuntime={exports:{}},reactJsxRuntime_production_min={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.js
4
4
  *
@@ -1160,7 +1160,7 @@ ${graph.toString()}`}};__name(_CyclicDependencyError,"CyclicDependencyError");le
1160
1160
  `));const d=this._diffProviderFactoryService.createDiffProvider({diffAlgorithm:"advanced"});return ObservablePromise.fromFn(async()=>{const result=await d.computeDiff(this._originalModel.get(),this._modifiedModel.get(),{computeMoves:!1,ignoreTrimWhitespace:!1,maxComputationTimeMs:1e3},CancellationToken.None);if(!result.identical)return new InlineEdit(LineRange$1.fromRangeInclusive(range2),removeIndentation2(newLines),result.changes)})}),this._fetchStore=this._register(new DisposableStore),this._inlineEditsFetchResult=disposableObservableValue(this,void 0),this._inlineEdits=derivedOpts({owner:this,equalsFn:structuralEquals},reader=>{var _a3,_b3;return(_b3=(_a3=this._inlineEditsFetchResult.read(reader))==null?void 0:_a3.completions.map(c=>new InlineEditData(c)))!=null?_b3:[]}),this._fetchInlineEditsPromise=derivedHandleChanges({owner:this,createEmptyChangeSummary:__name(()=>({inlineCompletionTriggerKind:InlineCompletionTriggerKind$4.Automatic}),"createEmptyChangeSummary"),handleChange:__name((ctx,changeSummary)=>(ctx.didChange(this._forceUpdateExplicitlySignal)&&(changeSummary.inlineCompletionTriggerKind=InlineCompletionTriggerKind$4.Explicit),!0),"handleChange")},async(reader,changeSummary)=>{var _a3;this._fetchStore.clear(),this._forceUpdateExplicitlySignal.read(reader),this._textModelVersionId.read(reader);function mapValue(value,fn){return fn(value)}__name(mapValue,"mapValue");const selection=(_a3=this._pinnedRange.range.read(reader))!=null?_a3:mapValue(this._selection.read(reader),v=>v.isEmpty()?void 0:v);if(!selection){this._inlineEditsFetchResult.set(void 0,void 0),this.userPrompt.set(void 0,void 0);return}const context={triggerKind:changeSummary.inlineCompletionTriggerKind,selectedSuggestionInfo:void 0,userPrompt:this.userPrompt.read(reader)},token=cancelOnDispose(this._fetchStore);await timeout(200,token);const result=await provideInlineCompletions(this.languageFeaturesService.inlineCompletionsProvider,selection,this.textModel,context,token);token.isCancellationRequested||this._inlineEditsFetchResult.set(result,void 0)}),this._filteredInlineEditItems=derivedOpts({owner:this,equalsFn:itemsEquals()},reader=>this._inlineEdits.read(reader)),this.selectedInlineCompletionIndex=derived(this,reader=>{const selectedInlineCompletionId=this._selectedInlineCompletionId.read(reader),filteredCompletions=this._filteredInlineEditItems.read(reader),idx=this._selectedInlineCompletionId===void 0?-1:filteredCompletions.findIndex(v=>v.semanticId===selectedInlineCompletionId);return idx===-1?(this._selectedInlineCompletionId.set(void 0,void 0),0):idx}),this.selectedInlineEdit=derived(this,reader=>{const filteredCompletions=this._filteredInlineEditItems.read(reader),idx=this.selectedInlineCompletionIndex.read(reader);return filteredCompletions[idx]}),this._register(recomputeInitiallyAndOnChange(this._fetchInlineEditsPromise))}async triggerExplicitly(tx){subtransaction(tx,tx2=>{this._isActive.set(!0,tx2),this._forceUpdateExplicitlySignal.trigger(tx2)}),await this._fetchInlineEditsPromise.get()}stop(tx){subtransaction(tx,tx2=>{this.userPrompt.set(void 0,tx2),this._isActive.set(!1,tx2),this._inlineEditsFetchResult.set(void 0,tx2),this._pinnedRange.setRange(void 0,tx2)})}async _deltaSelectedInlineCompletionIndex(delta){await this.triggerExplicitly();const completions=this._filteredInlineEditItems.get()||[];if(completions.length>0){const newIdx=(this.selectedInlineCompletionIndex.get()+delta+completions.length)%completions.length;this._selectedInlineCompletionId.set(completions[newIdx].semanticId,void 0)}else this._selectedInlineCompletionId.set(void 0,void 0)}async next(){await this._deltaSelectedInlineCompletionIndex(1)}async previous(){await this._deltaSelectedInlineCompletionIndex(-1)}async accept(editor2){if(editor2.getModel()!==this.textModel)throw new BugIndicatingError;const edit=this.selectedInlineEdit.get();edit&&(editor2.pushUndoStop(),editor2.executeEdits("inlineSuggestion.accept",[edit.inlineCompletion.toSingleTextEdit().toSingleEditOperation()]),this.stop())}},__name(_Td,"InlineEditsModel"),InlineEditsModel_1=_Td,_Td._modelId=0,_Td);InlineEditsModel=InlineEditsModel_1=__decorate$t([__param$t(4,ILanguageFeaturesService),__param$t(5,IDiffProviderFactoryService),__param$t(6,IModelService)],InlineEditsModel);const _InlineEditData=class _InlineEditData{constructor(inlineCompletion){this.inlineCompletion=inlineCompletion,this.semanticId=this.inlineCompletion.hash()}};__name(_InlineEditData,"InlineEditData");let InlineEditData=_InlineEditData;const _TrackedRange=class _TrackedRange extends Disposable{constructor(_textModel,_versionId){super(),this._textModel=_textModel,this._versionId=_versionId,this._decorations=observableValue(this,[]),this.range=derived(this,reader=>{var _a3;this._versionId.read(reader);const deco=this._decorations.read(reader)[0];return deco&&(_a3=this._textModel.getDecorationRange(deco))!=null?_a3:null}),this._register(toDisposable(()=>{this._textModel.deltaDecorations(this._decorations.get(),[])}))}setRange(range2,tx){this._decorations.set(this._textModel.deltaDecorations(this._decorations.get(),range2?[{range:range2,options:{description:"trackedRange"}}]:[]),tx)}};__name(_TrackedRange,"TrackedRange");let TrackedRange=_TrackedRange;var __decorate$s=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$s=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},InlineEditsController_1;let InlineEditsController=(_Ud=class extends Disposable{static get(editor2){return editor2.getContribution(InlineEditsController_1.ID)}constructor(editor2,_instantiationService,_contextKeyService,_debounceService,_languageFeaturesService,_configurationService){super(),this.editor=editor2,this._instantiationService=_instantiationService,this._contextKeyService=_contextKeyService,this._debounceService=_debounceService,this._languageFeaturesService=_languageFeaturesService,this._configurationService=_configurationService,this._enabled=observableConfigValue("editor.inlineEdits.enabled",!1,this._configurationService),this._editorObs=observableCodeEditor(this.editor),this._selection=derived(this,reader=>{var _a3;return(_a3=this._editorObs.cursorSelection.read(reader))!=null?_a3:new Selection$1(1,1,1,1)}),this._debounceValue=this._debounceService.for(this._languageFeaturesService.inlineCompletionsProvider,"InlineEditsDebounce",{min:50,max:50}),this.model=derivedDisposable(this,reader=>{if(!this._enabled.read(reader)||this._editorObs.isReadonly.read(reader))return;const textModel=this._editorObs.model.read(reader);return textModel?this._instantiationService.createInstance(readHotReloadableExport(InlineEditsModel,reader),textModel,this._editorObs.versionId,this._selection,this._debounceValue):void 0}),this._hadInlineEdit=derivedObservableWithCache(this,(reader,lastValue)=>{var _a3;return lastValue||((_a3=this.model.read(reader))==null?void 0:_a3.inlineEdit.read(reader))!==void 0}),this._widget=derivedDisposable(this,reader=>{if(this._hadInlineEdit.read(reader))return this._instantiationService.createInstance(readHotReloadableExport(InlineEditsWidget,reader),this.editor,this.model.map((m2,reader2)=>m2==null?void 0:m2.inlineEdit.read(reader2)),flattenSettableObservable(reader2=>{var _a3,_b3;return(_b3=(_a3=this.model.read(reader2))==null?void 0:_a3.userPrompt)!=null?_b3:observableValue("empty","")}))}),this._register(bindContextKey(inlineEditVisible,this._contextKeyService,r2=>{var _a3;return!!((_a3=this.model.read(r2))!=null&&_a3.inlineEdit.read(r2))})),this._register(bindContextKey(isPinnedContextKey,this._contextKeyService,r2=>{var _a3;return!!((_a3=this.model.read(r2))!=null&&_a3.isPinned.read(r2))})),this.model.recomputeInitiallyAndOnChange(this._store),this._widget.recomputeInitiallyAndOnChange(this._store)}},__name(_Ud,"InlineEditsController"),InlineEditsController_1=_Ud,_Ud.ID="editor.contrib.inlineEditsController",_Ud);InlineEditsController=InlineEditsController_1=__decorate$s([__param$s(1,IInstantiationService),__param$s(2,IContextKeyService),__param$s(3,ILanguageFeatureDebounceService),__param$s(4,ILanguageFeaturesService),__param$s(5,IConfigurationService)],InlineEditsController);function flattenSettableObservable(fn){return derivedWithSetter(void 0,reader=>fn(reader).read(reader),(value,tx)=>{fn(void 0).set(value,tx)})}__name(flattenSettableObservable,"flattenSettableObservable");function labelAndAlias(str){return{label:str.value,alias:str.original}}__name(labelAndAlias,"labelAndAlias");const _ShowNextInlineEditAction=class _ShowNextInlineEditAction extends EditorAction{constructor(){super({id:_ShowNextInlineEditAction.ID,...labelAndAlias(localize2("action.inlineEdits.showNext","Show Next Inline Edit")),precondition:ContextKeyExpr.and(EditorContextKeys.writable,inlineEditVisible),kbOpts:{weight:100,primary:606}})}async run(accessor,editor2){var _a3;const controller=InlineEditsController.get(editor2);(_a3=controller==null?void 0:controller.model.get())==null||_a3.next()}};__name(_ShowNextInlineEditAction,"ShowNextInlineEditAction"),_ShowNextInlineEditAction.ID=showNextInlineEditActionId;let ShowNextInlineEditAction=_ShowNextInlineEditAction;const _ShowPreviousInlineEditAction=class _ShowPreviousInlineEditAction extends EditorAction{constructor(){super({id:_ShowPreviousInlineEditAction.ID,...labelAndAlias(localize2("action.inlineEdits.showPrevious","Show Previous Inline Edit")),precondition:ContextKeyExpr.and(EditorContextKeys.writable,inlineEditVisible),kbOpts:{weight:100,primary:604}})}async run(accessor,editor2){var _a3;const controller=InlineEditsController.get(editor2);(_a3=controller==null?void 0:controller.model.get())==null||_a3.previous()}};__name(_ShowPreviousInlineEditAction,"ShowPreviousInlineEditAction"),_ShowPreviousInlineEditAction.ID=showPreviousInlineEditActionId;let ShowPreviousInlineEditAction=_ShowPreviousInlineEditAction;const _TriggerInlineEditAction=class _TriggerInlineEditAction extends EditorAction{constructor(){super({id:"editor.action.inlineEdits.trigger",...labelAndAlias(localize2("action.inlineEdits.trigger","Trigger Inline Edit")),precondition:EditorContextKeys.writable})}async run(accessor,editor2){const controller=InlineEditsController.get(editor2);await asyncTransaction(async tx=>{var _a3;await((_a3=controller==null?void 0:controller.model.get())==null?void 0:_a3.triggerExplicitly(tx))})}};__name(_TriggerInlineEditAction,"TriggerInlineEditAction");let TriggerInlineEditAction=_TriggerInlineEditAction;const _AcceptInlineEdit=class _AcceptInlineEdit extends EditorAction{constructor(){super({id:inlineEditAcceptId,...labelAndAlias(localize2("action.inlineEdits.accept","Accept Inline Edit")),precondition:inlineEditVisible,menuOpts:{menuId:MenuId.InlineEditsActions,title:localize("inlineEditsActions","Accept Inline Edit"),group:"primary",order:1,icon:Codicon.check},kbOpts:{primary:2058,weight:2e4,kbExpr:inlineEditVisible}})}async run(accessor,editor2){var _a3;editor2 instanceof EmbeddedCodeEditorWidget&&(editor2=editor2.getParentEditor());const controller=InlineEditsController.get(editor2);controller&&((_a3=controller.model.get())==null||_a3.accept(controller.editor),controller.editor.focus())}};__name(_AcceptInlineEdit,"AcceptInlineEdit");let AcceptInlineEdit=_AcceptInlineEdit;const _HideInlineEdit=class _HideInlineEdit extends EditorAction{constructor(){super({id:_HideInlineEdit.ID,...labelAndAlias(localize2("action.inlineEdits.hide","Hide Inline Edit")),precondition:inlineEditVisible,kbOpts:{weight:100,primary:9}})}async run(accessor,editor2){const controller=InlineEditsController.get(editor2);transaction(tx=>{var _a3;(_a3=controller==null?void 0:controller.model.get())==null||_a3.stop(tx)})}};__name(_HideInlineEdit,"HideInlineEdit"),_HideInlineEdit.ID="editor.action.inlineEdits.hide";let HideInlineEdit=_HideInlineEdit;registerEditorContribution(InlineEditsController.ID,InlineEditsController,3),registerEditorAction(TriggerInlineEditAction),registerEditorAction(ShowNextInlineEditAction),registerEditorAction(ShowPreviousInlineEditAction),registerEditorAction(AcceptInlineEdit),registerEditorAction(HideInlineEdit);const Context={Visible:new RawContextKey("parameterHintsVisible",!1),MultipleSignatures:new RawContextKey("parameterHintsMultipleSignatures",!1)};async function provideSignatureHelp(registry,model,position,context,token){const supports=registry.ordered(model);for(const support of supports)try{const result=await support.provideSignatureHelp(model,position,token,context);if(result)return result}catch(err){onUnexpectedExternalError(err)}}__name(provideSignatureHelp,"provideSignatureHelp"),CommandsRegistry.registerCommand("_executeSignatureHelpProvider",async(accessor,...args)=>{const[uri,position,triggerCharacter]=args;assertType(URI$3.isUri(uri)),assertType(Position$4.isIPosition(position)),assertType(typeof triggerCharacter=="string"||!triggerCharacter);const languageFeaturesService=accessor.get(ILanguageFeaturesService),ref=await accessor.get(ITextModelService).createModelReference(uri);try{const result=await provideSignatureHelp(languageFeaturesService.signatureHelpProvider,ref.object.textEditorModel,Position$4.lift(position),{triggerKind:SignatureHelpTriggerKind$1.Invoke,isRetrigger:!1,triggerCharacter},CancellationToken.None);return result?(setTimeout(()=>result.dispose(),0),result.value):void 0}finally{ref.dispose()}});var ParameterHintState;(function(ParameterHintState2){ParameterHintState2.Default={type:0};const _Pending=class _Pending{constructor(request,previouslyActiveHints){this.request=request,this.previouslyActiveHints=previouslyActiveHints,this.type=2}};__name(_Pending,"Pending");let Pending=_Pending;ParameterHintState2.Pending=Pending;const _Active=class _Active{constructor(hints){this.hints=hints,this.type=1}};__name(_Active,"Active");let Active=_Active;ParameterHintState2.Active=Active})(ParameterHintState||(ParameterHintState={}));const _ParameterHintsModel=class _ParameterHintsModel extends Disposable{constructor(editor2,providers,delay=_ParameterHintsModel.DEFAULT_DELAY){super(),this._onChangedHints=this._register(new Emitter$1),this.onChangedHints=this._onChangedHints.event,this.triggerOnType=!1,this._state=ParameterHintState.Default,this._pendingTriggers=[],this._lastSignatureHelpResult=this._register(new MutableDisposable),this.triggerChars=new CharacterSet,this.retriggerChars=new CharacterSet,this.triggerId=0,this.editor=editor2,this.providers=providers,this.throttledDelayer=new Delayer(delay),this._register(this.editor.onDidBlurEditorWidget(()=>this.cancel())),this._register(this.editor.onDidChangeConfiguration(()=>this.onEditorConfigurationChange())),this._register(this.editor.onDidChangeModel(e=>this.onModelChanged())),this._register(this.editor.onDidChangeModelLanguage(_=>this.onModelChanged())),this._register(this.editor.onDidChangeCursorSelection(e=>this.onCursorChange(e))),this._register(this.editor.onDidChangeModelContent(e=>this.onModelContentChange())),this._register(this.providers.onDidChange(this.onModelChanged,this)),this._register(this.editor.onDidType(text2=>this.onDidType(text2))),this.onEditorConfigurationChange(),this.onModelChanged()}get state(){return this._state}set state(value){this._state.type===2&&this._state.request.cancel(),this._state=value}cancel(silent=!1){this.state=ParameterHintState.Default,this.throttledDelayer.cancel(),silent||this._onChangedHints.fire(void 0)}trigger(context,delay){const model=this.editor.getModel();if(!model||!this.providers.has(model))return;const triggerId=++this.triggerId;this._pendingTriggers.push(context),this.throttledDelayer.trigger(()=>this.doTrigger(triggerId),delay).catch(onUnexpectedError)}next(){if(this.state.type!==1)return;const length=this.state.hints.signatures.length,activeSignature=this.state.hints.activeSignature,last=activeSignature%length===length-1,cycle=this.editor.getOption(86).cycle;if((length<2||last)&&!cycle){this.cancel();return}this.updateActiveSignature(last&&cycle?0:activeSignature+1)}previous(){if(this.state.type!==1)return;const length=this.state.hints.signatures.length,activeSignature=this.state.hints.activeSignature,first2=activeSignature===0,cycle=this.editor.getOption(86).cycle;if((length<2||first2)&&!cycle){this.cancel();return}this.updateActiveSignature(first2&&cycle?length-1:activeSignature-1)}updateActiveSignature(activeSignature){this.state.type===1&&(this.state=new ParameterHintState.Active({...this.state.hints,activeSignature}),this._onChangedHints.fire(this.state.hints))}async doTrigger(triggerId){const isRetrigger=this.state.type===1||this.state.type===2,activeSignatureHelp=this.getLastActiveHints();if(this.cancel(!0),this._pendingTriggers.length===0)return!1;const context=this._pendingTriggers.reduce(mergeTriggerContexts);this._pendingTriggers=[];const triggerContext={triggerKind:context.triggerKind,triggerCharacter:context.triggerCharacter,isRetrigger,activeSignatureHelp};if(!this.editor.hasModel())return!1;const model=this.editor.getModel(),position=this.editor.getPosition();this.state=new ParameterHintState.Pending(createCancelablePromise(token=>provideSignatureHelp(this.providers,model,position,triggerContext,token)),activeSignatureHelp);try{const result=await this.state.request;return triggerId!==this.triggerId?(result==null||result.dispose(),!1):!result||!result.value.signatures||result.value.signatures.length===0?(result==null||result.dispose(),this._lastSignatureHelpResult.clear(),this.cancel(),!1):(this.state=new ParameterHintState.Active(result.value),this._lastSignatureHelpResult.value=result,this._onChangedHints.fire(this.state.hints),!0)}catch(error){return triggerId===this.triggerId&&(this.state=ParameterHintState.Default),onUnexpectedError(error),!1}}getLastActiveHints(){switch(this.state.type){case 1:return this.state.hints;case 2:return this.state.previouslyActiveHints;default:return}}get isTriggered(){return this.state.type===1||this.state.type===2||this.throttledDelayer.isTriggered()}onModelChanged(){this.cancel(),this.triggerChars.clear(),this.retriggerChars.clear();const model=this.editor.getModel();if(model)for(const support of this.providers.ordered(model)){for(const ch of support.signatureHelpTriggerCharacters||[])if(ch.length){const charCode=ch.charCodeAt(0);this.triggerChars.add(charCode),this.retriggerChars.add(charCode)}for(const ch of support.signatureHelpRetriggerCharacters||[])ch.length&&this.retriggerChars.add(ch.charCodeAt(0))}}onDidType(text2){if(!this.triggerOnType)return;const lastCharIndex=text2.length-1,triggerCharCode=text2.charCodeAt(lastCharIndex);(this.triggerChars.has(triggerCharCode)||this.isTriggered&&this.retriggerChars.has(triggerCharCode))&&this.trigger({triggerKind:SignatureHelpTriggerKind$1.TriggerCharacter,triggerCharacter:text2.charAt(lastCharIndex)})}onCursorChange(e){e.source==="mouse"?this.cancel():this.isTriggered&&this.trigger({triggerKind:SignatureHelpTriggerKind$1.ContentChange})}onModelContentChange(){this.isTriggered&&this.trigger({triggerKind:SignatureHelpTriggerKind$1.ContentChange})}onEditorConfigurationChange(){this.triggerOnType=this.editor.getOption(86).enabled,this.triggerOnType||this.cancel()}dispose(){this.cancel(!0),super.dispose()}};__name(_ParameterHintsModel,"ParameterHintsModel"),_ParameterHintsModel.DEFAULT_DELAY=120;let ParameterHintsModel=_ParameterHintsModel;function mergeTriggerContexts(previous,current){switch(current.triggerKind){case SignatureHelpTriggerKind$1.Invoke:return current;case SignatureHelpTriggerKind$1.ContentChange:return previous;case SignatureHelpTriggerKind$1.TriggerCharacter:default:return current}}__name(mergeTriggerContexts,"mergeTriggerContexts");var __decorate$r=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$r=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ParameterHintsWidget_1;const $=$$e,parameterHintsNextIcon=registerIcon("parameter-hints-next",Codicon.chevronDown,localize("parameterHintsNextIcon","Icon for show next parameter hint.")),parameterHintsPreviousIcon=registerIcon("parameter-hints-previous",Codicon.chevronUp,localize("parameterHintsPreviousIcon","Icon for show previous parameter hint."));let ParameterHintsWidget=(_Vd=class extends Disposable{constructor(editor2,model,contextKeyService,openerService,languageService,telemetryService){super(),this.editor=editor2,this.model=model,this.telemetryService=telemetryService,this.renderDisposeables=this._register(new DisposableStore),this.visible=!1,this.announcedLabel=null,this.allowEditorOverflow=!0,this.markdownRenderer=this._register(new MarkdownRenderer({editor:editor2},languageService,openerService)),this.keyVisible=Context.Visible.bindTo(contextKeyService),this.keyMultipleSignatures=Context.MultipleSignatures.bindTo(contextKeyService)}createParameterHintDOMNodes(){const element=$(".editor-widget.parameter-hints-widget"),wrapper=append$1(element,$(".phwrapper"));wrapper.tabIndex=-1;const controls=append$1(wrapper,$(".controls")),previous=append$1(controls,$(".button"+ThemeIcon.asCSSSelector(parameterHintsPreviousIcon))),overloads=append$1(controls,$(".overloads")),next=append$1(controls,$(".button"+ThemeIcon.asCSSSelector(parameterHintsNextIcon)));this._register(addDisposableListener(previous,"click",e=>{EventHelper.stop(e),this.previous()})),this._register(addDisposableListener(next,"click",e=>{EventHelper.stop(e),this.next()}));const body=$(".body"),scrollbar=new DomScrollableElement(body,{alwaysConsumeMouseWheel:!0});this._register(scrollbar),wrapper.appendChild(scrollbar.getDomNode());const signature=append$1(body,$(".signature")),docs=append$1(body,$(".docs"));element.style.userSelect="text",this.domNodes={element,signature,overloads,docs,scrollbar},this.editor.addContentWidget(this),this.hide(),this._register(this.editor.onDidChangeCursorSelection(e=>{this.visible&&this.editor.layoutContentWidget(this)}));const updateFont=__name(()=>{if(!this.domNodes)return;const fontInfo=this.editor.getOption(50),element2=this.domNodes.element;element2.style.fontSize=`${fontInfo.fontSize}px`,element2.style.lineHeight=`${fontInfo.lineHeight/fontInfo.fontSize}`,element2.style.setProperty("--vscode-parameterHintsWidget-editorFontFamily",fontInfo.fontFamily),element2.style.setProperty("--vscode-parameterHintsWidget-editorFontFamilyDefault",EDITOR_FONT_DEFAULTS.fontFamily)},"updateFont");updateFont(),this._register(Event.chain(this.editor.onDidChangeConfiguration.bind(this.editor),$2=>$2.filter(e=>e.hasChanged(50)))(updateFont)),this._register(this.editor.onDidLayoutChange(e=>this.updateMaxHeight())),this.updateMaxHeight()}show(){this.visible||(this.domNodes||this.createParameterHintDOMNodes(),this.keyVisible.set(!0),this.visible=!0,setTimeout(()=>{var _a3;(_a3=this.domNodes)==null||_a3.element.classList.add("visible")},100),this.editor.layoutContentWidget(this))}hide(){var _a3;this.renderDisposeables.clear(),this.visible&&(this.keyVisible.reset(),this.visible=!1,this.announcedLabel=null,(_a3=this.domNodes)==null||_a3.element.classList.remove("visible"),this.editor.layoutContentWidget(this))}getPosition(){return this.visible?{position:this.editor.getPosition(),preference:[1,2]}:null}render(hints){var _a3;if(this.renderDisposeables.clear(),!this.domNodes)return;const multiple=hints.signatures.length>1;this.domNodes.element.classList.toggle("multiple",multiple),this.keyMultipleSignatures.set(multiple),this.domNodes.signature.innerText="",this.domNodes.docs.innerText="";const signature=hints.signatures[hints.activeSignature];if(!signature)return;const code=append$1(this.domNodes.signature,$(".code")),hasParameters=signature.parameters.length>0,activeParameterIndex=(_a3=signature.activeParameter)!=null?_a3:hints.activeParameter;if(hasParameters)this.renderParameters(code,signature,activeParameterIndex);else{const label=append$1(code,$("span"));label.textContent=signature.label}const activeParameter=signature.parameters[activeParameterIndex];if(activeParameter!=null&&activeParameter.documentation){const documentation=$("span.documentation");if(typeof activeParameter.documentation=="string")documentation.textContent=activeParameter.documentation;else{const renderedContents=this.renderMarkdownDocs(activeParameter.documentation);documentation.appendChild(renderedContents.element)}append$1(this.domNodes.docs,$("p",{},documentation))}if(signature.documentation!==void 0)if(typeof signature.documentation=="string")append$1(this.domNodes.docs,$("p",{},signature.documentation));else{const renderedContents=this.renderMarkdownDocs(signature.documentation);append$1(this.domNodes.docs,renderedContents.element)}const hasDocs=this.hasDocs(signature,activeParameter);if(this.domNodes.signature.classList.toggle("has-docs",hasDocs),this.domNodes.docs.classList.toggle("empty",!hasDocs),this.domNodes.overloads.textContent=String(hints.activeSignature+1).padStart(hints.signatures.length.toString().length,"0")+"/"+hints.signatures.length,activeParameter){let labelToAnnounce="";const param=signature.parameters[activeParameterIndex];Array.isArray(param.label)?labelToAnnounce=signature.label.substring(param.label[0],param.label[1]):labelToAnnounce=param.label,param.documentation&&(labelToAnnounce+=typeof param.documentation=="string"?`, ${param.documentation}`:`, ${param.documentation.value}`),signature.documentation&&(labelToAnnounce+=typeof signature.documentation=="string"?`, ${signature.documentation}`:`, ${signature.documentation.value}`),this.announcedLabel!==labelToAnnounce&&(alert(localize("hint","{0}, hint",labelToAnnounce)),this.announcedLabel=labelToAnnounce)}this.editor.layoutContentWidget(this),this.domNodes.scrollbar.scanDomNode()}renderMarkdownDocs(markdown2){const stopWatch=new StopWatch,renderedContents=this.renderDisposeables.add(this.markdownRenderer.render(markdown2,{asyncRenderCallback:__name(()=>{var _a3;(_a3=this.domNodes)==null||_a3.scrollbar.scanDomNode()},"asyncRenderCallback")}));renderedContents.element.classList.add("markdown-docs");const renderDuration=stopWatch.elapsed();return renderDuration>300&&this.telemetryService.publicLog2("parameterHints.parseMarkdown",{renderDuration}),renderedContents}hasDocs(signature,activeParameter){return!!(activeParameter&&typeof activeParameter.documentation=="string"&&assertIsDefined(activeParameter.documentation).length>0||activeParameter&&typeof activeParameter.documentation=="object"&&assertIsDefined(activeParameter.documentation).value.length>0||signature.documentation&&typeof signature.documentation=="string"&&assertIsDefined(signature.documentation).length>0||signature.documentation&&typeof signature.documentation=="object"&&assertIsDefined(signature.documentation.value).length>0)}renderParameters(parent,signature,activeParameterIndex){const[start,end]=this.getParameterLabelOffsets(signature,activeParameterIndex),beforeSpan=document.createElement("span");beforeSpan.textContent=signature.label.substring(0,start);const paramSpan=document.createElement("span");paramSpan.textContent=signature.label.substring(start,end),paramSpan.className="parameter active";const afterSpan=document.createElement("span");afterSpan.textContent=signature.label.substring(end),append$1(parent,beforeSpan,paramSpan,afterSpan)}getParameterLabelOffsets(signature,paramIdx){const param=signature.parameters[paramIdx];if(param){if(Array.isArray(param.label))return param.label;if(param.label.length){const regex=new RegExp(`(\\W|^)${escapeRegExpCharacters(param.label)}(?=\\W|$)`,"g");regex.test(signature.label);const idx=regex.lastIndex-param.label.length;return idx>=0?[idx,regex.lastIndex]:[0,0]}else return[0,0]}else return[0,0]}next(){this.editor.focus(),this.model.next()}previous(){this.editor.focus(),this.model.previous()}getDomNode(){return this.domNodes||this.createParameterHintDOMNodes(),this.domNodes.element}getId(){return ParameterHintsWidget_1.ID}updateMaxHeight(){if(!this.domNodes)return;const maxHeight=`${Math.max(this.editor.getLayoutInfo().height/4,250)}px`;this.domNodes.element.style.maxHeight=maxHeight;const wrapper=this.domNodes.element.getElementsByClassName("phwrapper");wrapper.length&&(wrapper[0].style.maxHeight=maxHeight)}},__name(_Vd,"ParameterHintsWidget"),ParameterHintsWidget_1=_Vd,_Vd.ID="editor.widget.parameterHintsWidget",_Vd);ParameterHintsWidget=ParameterHintsWidget_1=__decorate$r([__param$r(2,IContextKeyService),__param$r(3,IOpenerService),__param$r(4,ILanguageService),__param$r(5,ITelemetryService)],ParameterHintsWidget),registerColor("editorHoverWidget.highlightForeground",listHighlightForeground,localize("editorHoverWidgetHighlightForeground","Foreground color of the active item in the parameter hint."));var __decorate$q=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$q=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ParameterHintsController_1;let ParameterHintsController=(_Wd=class extends Disposable{static get(editor2){return editor2.getContribution(ParameterHintsController_1.ID)}constructor(editor2,instantiationService,languageFeaturesService){super(),this.editor=editor2,this.model=this._register(new ParameterHintsModel(editor2,languageFeaturesService.signatureHelpProvider)),this._register(this.model.onChangedHints(newParameterHints=>{var _a3;newParameterHints?(this.widget.value.show(),this.widget.value.render(newParameterHints)):(_a3=this.widget.rawValue)==null||_a3.hide()})),this.widget=new Lazy(()=>this._register(instantiationService.createInstance(ParameterHintsWidget,this.editor,this.model)))}cancel(){this.model.cancel()}previous(){var _a3;(_a3=this.widget.rawValue)==null||_a3.previous()}next(){var _a3;(_a3=this.widget.rawValue)==null||_a3.next()}trigger(context){this.model.trigger(context,0)}},__name(_Wd,"ParameterHintsController"),ParameterHintsController_1=_Wd,_Wd.ID="editor.controller.parameterHints",_Wd);ParameterHintsController=ParameterHintsController_1=__decorate$q([__param$q(1,IInstantiationService),__param$q(2,ILanguageFeaturesService)],ParameterHintsController);const _TriggerParameterHintsAction=class _TriggerParameterHintsAction extends EditorAction{constructor(){super({id:"editor.action.triggerParameterHints",label:localize("parameterHints.trigger.label","Trigger Parameter Hints"),alias:"Trigger Parameter Hints",precondition:EditorContextKeys.hasSignatureHelpProvider,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:3082,weight:100}})}run(accessor,editor2){const controller=ParameterHintsController.get(editor2);controller==null||controller.trigger({triggerKind:SignatureHelpTriggerKind$1.Invoke})}};__name(_TriggerParameterHintsAction,"TriggerParameterHintsAction");let TriggerParameterHintsAction=_TriggerParameterHintsAction;registerEditorContribution(ParameterHintsController.ID,ParameterHintsController,2),registerEditorAction(TriggerParameterHintsAction);const weight$1=175,ParameterHintsCommand=EditorCommand.bindToContribution(ParameterHintsController.get);registerEditorCommand(new ParameterHintsCommand({id:"closeParameterHints",precondition:Context.Visible,handler:__name(x=>x.cancel(),"handler"),kbOpts:{weight:weight$1,kbExpr:EditorContextKeys.focus,primary:9,secondary:[1033]}})),registerEditorCommand(new ParameterHintsCommand({id:"showPrevParameterHint",precondition:ContextKeyExpr.and(Context.Visible,Context.MultipleSignatures),handler:__name(x=>x.previous(),"handler"),kbOpts:{weight:weight$1,kbExpr:EditorContextKeys.focus,primary:16,secondary:[528],mac:{primary:16,secondary:[528,302]}}})),registerEditorCommand(new ParameterHintsCommand({id:"showNextParameterHint",precondition:ContextKeyExpr.and(Context.Visible,Context.MultipleSignatures),handler:__name(x=>x.next(),"handler"),kbOpts:{weight:weight$1,kbExpr:EditorContextKeys.focus,primary:18,secondary:[530],mac:{primary:18,secondary:[530,300]}}}));var __decorate$p=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$p=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _BaseClass=class _BaseClass{constructor(instantiationService){this.instantiationService=instantiationService}init(...params){}};__name(_BaseClass,"BaseClass");let BaseClass=_BaseClass;function createWrapper(getClass,B){var _a3;return _a3=class extends B{constructor(){super(...arguments),this._autorun=void 0}init(...params){this._autorun=autorunWithStore((reader,store)=>{const clazz=readHotReloadableExport(getClass(),reader);store.add(this.instantiationService.createInstance(clazz,...params))})}dispose(){var _a4;(_a4=this._autorun)==null||_a4.dispose()}},__name(_a3,"ReloadableWrapper"),_a3}__name(createWrapper,"createWrapper");function wrapInReloadableClass1(getClass){return isHotReloadEnabled()?createWrapper(getClass,BaseClass1):getClass()}__name(wrapInReloadableClass1,"wrapInReloadableClass1");let BaseClass1=(_Xd=class extends BaseClass{constructor(param1,i){super(i),this.init(param1)}},__name(_Xd,"BaseClass1"),_Xd);BaseClass1=__decorate$p([__param$p(1,IInstantiationService)],BaseClass1),registerEditorContribution(PlaceholderTextContribution.ID,wrapInReloadableClass1(()=>PlaceholderTextContribution),0),registerColor("editor.placeholder.foreground",ghostTextForeground,localize("placeholderForeground","Foreground color of the placeholder text in the editor."));var __decorate$o=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$o=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const CONTEXT_RENAME_INPUT_VISIBLE=new RawContextKey("renameInputVisible",!1,localize("renameInputVisible","Whether the rename input widget is visible"));new RawContextKey("renameInputFocused",!1,localize("renameInputFocused","Whether the rename input widget is focused"));let RenameWidget=(_Yd=class{constructor(_editor,_acceptKeybindings,_themeService,_keybindingService,contextKeyService,_logService){this._editor=_editor,this._acceptKeybindings=_acceptKeybindings,this._themeService=_themeService,this._keybindingService=_keybindingService,this._logService=_logService,this.allowEditorOverflow=!0,this._disposables=new DisposableStore,this._visibleContextKey=CONTEXT_RENAME_INPUT_VISIBLE.bindTo(contextKeyService),this._isEditingRenameCandidate=!1,this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,this._candidates=new Set,this._beforeFirstInputFieldEditSW=new StopWatch,this._inputWithButton=new InputWithButton,this._disposables.add(this._inputWithButton),this._editor.addContentWidget(this),this._disposables.add(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(50)&&this._updateFont()})),this._disposables.add(_themeService.onDidColorThemeChange(this._updateStyles,this))}dispose(){this._disposables.dispose(),this._editor.removeContentWidget(this)}getId(){return"__renameInputWidget"}getDomNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="monaco-editor rename-box",this._domNode.appendChild(this._inputWithButton.domNode),this._renameCandidateListView=this._disposables.add(new RenameCandidateListView(this._domNode,{fontInfo:this._editor.getOption(50),onFocusChange:__name(newSymbolName=>{this._inputWithButton.input.value=newSymbolName,this._isEditingRenameCandidate=!1},"onFocusChange"),onSelectionChange:__name(()=>{this._isEditingRenameCandidate=!1,this.acceptInput(!1)},"onSelectionChange")})),this._disposables.add(this._inputWithButton.onDidInputChange(()=>{var _a3,_b3,_c2,_d2;((_a3=this._renameCandidateListView)==null?void 0:_a3.focusedCandidate)!==void 0&&(this._isEditingRenameCandidate=!0),(_b3=this._timeBeforeFirstInputFieldEdit)!=null||(this._timeBeforeFirstInputFieldEdit=this._beforeFirstInputFieldEditSW.elapsed()),((_c2=this._renameCandidateProvidersCts)==null?void 0:_c2.token.isCancellationRequested)===!1&&this._renameCandidateProvidersCts.cancel(),(_d2=this._renameCandidateListView)==null||_d2.clearFocus()})),this._label=document.createElement("div"),this._label.className="rename-label",this._domNode.appendChild(this._label),this._updateFont(),this._updateStyles(this._themeService.getColorTheme())),this._domNode}_updateStyles(theme){var _a3,_b3,_c2,_d2,_e2;if(!this._domNode)return;const widgetShadowColor=theme.getColor(widgetShadow),widgetBorderColor=theme.getColor(widgetBorder);this._domNode.style.backgroundColor=String((_a3=theme.getColor(editorWidgetBackground))!=null?_a3:""),this._domNode.style.boxShadow=widgetShadowColor?` 0 0 8px 2px ${widgetShadowColor}`:"",this._domNode.style.border=widgetBorderColor?`1px solid ${widgetBorderColor}`:"",this._domNode.style.color=String((_b3=theme.getColor(inputForeground))!=null?_b3:"");const border=theme.getColor(inputBorder);this._inputWithButton.domNode.style.backgroundColor=String((_c2=theme.getColor(inputBackground))!=null?_c2:""),this._inputWithButton.input.style.backgroundColor=String((_d2=theme.getColor(inputBackground))!=null?_d2:""),this._inputWithButton.domNode.style.borderWidth=border?"1px":"0px",this._inputWithButton.domNode.style.borderStyle=border?"solid":"none",this._inputWithButton.domNode.style.borderColor=(_e2=border==null?void 0:border.toString())!=null?_e2:"none"}_updateFont(){if(this._domNode===void 0)return;assertType(this._label!==void 0,"RenameWidget#_updateFont: _label must not be undefined given _domNode is defined"),this._editor.applyFontInfo(this._inputWithButton.input);const fontInfo=this._editor.getOption(50);this._label.style.fontSize=`${this._computeLabelFontSize(fontInfo.fontSize)}px`}_computeLabelFontSize(editorFontSize){return editorFontSize*.8}getPosition(){if(!this._visible||!this._editor.hasModel()||!this._editor.getDomNode())return null;const bodyBox=getClientArea(this.getDomNode().ownerDocument.body),editorBox=getDomNodePagePosition(this._editor.getDomNode()),cursorBoxTop=this._getTopForPosition();this._nPxAvailableAbove=cursorBoxTop+editorBox.top,this._nPxAvailableBelow=bodyBox.height-this._nPxAvailableAbove;const lineHeight=this._editor.getOption(67),{totalHeight:candidateViewHeight}=RenameCandidateView.getLayoutInfo({lineHeight}),positionPreference=this._nPxAvailableBelow>candidateViewHeight*6?[2,1]:[1,2];return{position:this._position,preference:positionPreference}}beforeRender(){var _a3,_b3;const[accept,preview]=this._acceptKeybindings;return this._label.innerText=localize({key:"label",comment:['placeholders are keybindings, e.g "F2 to Rename, Shift+F2 to Preview"']},"{0} to Rename, {1} to Preview",(_a3=this._keybindingService.lookupKeybinding(accept))==null?void 0:_a3.getLabel(),(_b3=this._keybindingService.lookupKeybinding(preview))==null?void 0:_b3.getLabel()),this._domNode.style.minWidth="200px",null}afterRender(position){if(position===null){this.cancelInput(!0,"afterRender (because position is null)");return}if(!this._editor.hasModel()||!this._editor.getDomNode())return;assertType(this._renameCandidateListView),assertType(this._nPxAvailableAbove!==void 0),assertType(this._nPxAvailableBelow!==void 0);const inputBoxHeight=getTotalHeight(this._inputWithButton.domNode),labelHeight=getTotalHeight(this._label);let totalHeightAvailable;position===2?totalHeightAvailable=this._nPxAvailableBelow:totalHeightAvailable=this._nPxAvailableAbove,this._renameCandidateListView.layout({height:totalHeightAvailable-labelHeight-inputBoxHeight,width:getTotalWidth(this._inputWithButton.domNode)})}acceptInput(wantsPreview){var _a3;this._trace("invoking acceptInput"),(_a3=this._currentAcceptInput)==null||_a3.call(this,wantsPreview)}cancelInput(focusEditor,caller){var _a3;(_a3=this._currentCancelInput)==null||_a3.call(this,focusEditor)}focusNextRenameSuggestion(){var _a3;(_a3=this._renameCandidateListView)!=null&&_a3.focusNext()||(this._inputWithButton.input.value=this._currentName)}focusPreviousRenameSuggestion(){var _a3;(_a3=this._renameCandidateListView)!=null&&_a3.focusPrevious()||(this._inputWithButton.input.value=this._currentName)}getInput(where,currentName,supportPreview,requestRenameCandidates,cts){const{start:selectionStart,end:selectionEnd}=this._getSelection(where,currentName);this._renameCts=cts;const disposeOnDone=new DisposableStore;this._nRenameSuggestionsInvocations=0,this._hadAutomaticRenameSuggestionsInvocation=!1,requestRenameCandidates===void 0?this._inputWithButton.button.style.display="none":(this._inputWithButton.button.style.display="flex",this._requestRenameCandidatesOnce=requestRenameCandidates,this._requestRenameCandidates(currentName,!1),disposeOnDone.add(addDisposableListener(this._inputWithButton.button,"click",()=>this._requestRenameCandidates(currentName,!0))),disposeOnDone.add(addDisposableListener(this._inputWithButton.button,EventType$1.KEY_DOWN,e=>{const keyEvent=new StandardKeyboardEvent(e);(keyEvent.equals(3)||keyEvent.equals(10))&&(keyEvent.stopPropagation(),keyEvent.preventDefault(),this._requestRenameCandidates(currentName,!0))}))),this._isEditingRenameCandidate=!1,this._domNode.classList.toggle("preview",supportPreview),this._position=new Position$4(where.startLineNumber,where.startColumn),this._currentName=currentName,this._inputWithButton.input.value=currentName,this._inputWithButton.input.setAttribute("selectionStart",selectionStart.toString()),this._inputWithButton.input.setAttribute("selectionEnd",selectionEnd.toString()),this._inputWithButton.input.size=Math.max((where.endColumn-where.startColumn)*1.1,20),this._beforeFirstInputFieldEditSW.reset(),disposeOnDone.add(toDisposable(()=>{this._renameCts=void 0,cts.dispose(!0)})),disposeOnDone.add(toDisposable(()=>{this._renameCandidateProvidersCts!==void 0&&(this._renameCandidateProvidersCts.dispose(!0),this._renameCandidateProvidersCts=void 0)})),disposeOnDone.add(toDisposable(()=>this._candidates.clear()));const inputResult=new DeferredPromise;return inputResult.p.finally(()=>{disposeOnDone.dispose(),this._hide()}),this._currentCancelInput=focusEditor=>{var _a3;return this._trace("invoking _currentCancelInput"),this._currentAcceptInput=void 0,this._currentCancelInput=void 0,(_a3=this._renameCandidateListView)==null||_a3.clearCandidates(),inputResult.complete(focusEditor),!0},this._currentAcceptInput=wantsPreview=>{this._trace("invoking _currentAcceptInput"),assertType(this._renameCandidateListView!==void 0);const nRenameSuggestions=this._renameCandidateListView.nCandidates;let newName,source;const focusedCandidate=this._renameCandidateListView.focusedCandidate;if(focusedCandidate!==void 0?(this._trace("using new name from renameSuggestion"),newName=focusedCandidate,source={k:"renameSuggestion"}):(this._trace("using new name from inputField"),newName=this._inputWithButton.input.value,source=this._isEditingRenameCandidate?{k:"userEditedRenameSuggestion"}:{k:"inputField"}),newName===currentName||newName.trim().length===0){this.cancelInput(!0,"_currentAcceptInput (because newName === value || newName.trim().length === 0)");return}this._currentAcceptInput=void 0,this._currentCancelInput=void 0,this._renameCandidateListView.clearCandidates(),inputResult.complete({newName,wantsPreview:supportPreview&&wantsPreview,stats:{source,nRenameSuggestions,timeBeforeFirstInputFieldEdit:this._timeBeforeFirstInputFieldEdit,nRenameSuggestionsInvocations:this._nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:this._hadAutomaticRenameSuggestionsInvocation}})},disposeOnDone.add(cts.token.onCancellationRequested(()=>this.cancelInput(!0,"cts.token.onCancellationRequested"))),disposeOnDone.add(this._editor.onDidBlurEditorWidget(()=>{var _a3;return this.cancelInput(!((_a3=this._domNode)!=null&&_a3.ownerDocument.hasFocus()),"editor.onDidBlurEditorWidget")})),this._show(),inputResult.p}_requestRenameCandidates(currentName,isManuallyTriggered){if(this._requestRenameCandidatesOnce!==void 0&&(this._renameCandidateProvidersCts!==void 0&&this._renameCandidateProvidersCts.dispose(!0),assertType(this._renameCts),this._inputWithButton.buttonState!=="stop")){this._renameCandidateProvidersCts=new CancellationTokenSource$1;const triggerKind=isManuallyTriggered?NewSymbolNameTriggerKind$1.Invoke:NewSymbolNameTriggerKind$1.Automatic,candidates=this._requestRenameCandidatesOnce(triggerKind,this._renameCandidateProvidersCts.token);if(candidates.length===0){this._inputWithButton.setSparkleButton();return}isManuallyTriggered||(this._hadAutomaticRenameSuggestionsInvocation=!0),this._nRenameSuggestionsInvocations+=1,this._inputWithButton.setStopButton(),this._updateRenameCandidates(candidates,currentName,this._renameCts.token)}}_getSelection(where,currentName){assertType(this._editor.hasModel());const selection=this._editor.getSelection();let start=0,end=currentName.length;return!Range$5.isEmpty(selection)&&!Range$5.spansMultipleLines(selection)&&Range$5.containsRange(where,selection)&&(start=Math.max(0,selection.startColumn-where.startColumn),end=Math.min(where.endColumn,selection.endColumn)-where.startColumn),{start,end}}_show(){this._trace("invoking _show"),this._editor.revealLineInCenterIfOutsideViewport(this._position.lineNumber,0),this._visible=!0,this._visibleContextKey.set(!0),this._editor.layoutContentWidget(this),setTimeout(()=>{this._inputWithButton.input.focus(),this._inputWithButton.input.setSelectionRange(parseInt(this._inputWithButton.input.getAttribute("selectionStart")),parseInt(this._inputWithButton.input.getAttribute("selectionEnd")))},100)}async _updateRenameCandidates(candidates,currentName,token){const trace=__name((...args)=>this._trace("_updateRenameCandidates",...args),"trace");trace("start");const namesListResults=await raceCancellation(Promise.allSettled(candidates),token);if(this._inputWithButton.setSparkleButton(),namesListResults===void 0){trace("returning early - received updateRenameCandidates results - undefined");return}const newNames=namesListResults.flatMap(namesListResult=>namesListResult.status==="fulfilled"&&isDefined(namesListResult.value)?namesListResult.value:[]);trace(`received updateRenameCandidates results - total (unfiltered) ${newNames.length} candidates.`);const distinctNames=distinct(newNames,v=>v.newSymbolName);trace(`distinct candidates - ${distinctNames.length} candidates.`);const validDistinctNames=distinctNames.filter(({newSymbolName})=>newSymbolName.trim().length>0&&newSymbolName!==this._inputWithButton.input.value&&newSymbolName!==currentName&&!this._candidates.has(newSymbolName));if(trace(`valid distinct candidates - ${newNames.length} candidates.`),validDistinctNames.forEach(n2=>this._candidates.add(n2.newSymbolName)),validDistinctNames.length<1){trace("returning early - no valid distinct candidates");return}trace("setting candidates"),this._renameCandidateListView.setCandidates(validDistinctNames),trace("asking editor to re-layout"),this._editor.layoutContentWidget(this)}_hide(){this._trace("invoked _hide"),this._visible=!1,this._visibleContextKey.reset(),this._editor.layoutContentWidget(this)}_getTopForPosition(){const visibleRanges=this._editor.getVisibleRanges();let firstLineInViewport;return visibleRanges.length>0?firstLineInViewport=visibleRanges[0].startLineNumber:(this._logService.warn("RenameWidget#_getTopForPosition: this should not happen - visibleRanges is empty"),firstLineInViewport=Math.max(1,this._position.lineNumber-5)),this._editor.getTopForLineNumber(this._position.lineNumber)-this._editor.getTopForLineNumber(firstLineInViewport)}_trace(...args){this._logService.trace("RenameWidget",...args)}},__name(_Yd,"RenameWidget"),_Yd);RenameWidget=__decorate$o([__param$o(2,IThemeService),__param$o(3,IKeybindingService),__param$o(4,IContextKeyService),__param$o(5,ILogService)],RenameWidget);const _RenameCandidateListView=class _RenameCandidateListView{constructor(parent,opts){this._disposables=new DisposableStore,this._availableHeight=0,this._minimumWidth=0,this._lineHeight=opts.fontInfo.lineHeight,this._typicalHalfwidthCharacterWidth=opts.fontInfo.typicalHalfwidthCharacterWidth,this._listContainer=document.createElement("div"),this._listContainer.className="rename-box rename-candidate-list-container",parent.appendChild(this._listContainer),this._listWidget=_RenameCandidateListView._createListWidget(this._listContainer,this._candidateViewHeight,opts.fontInfo),this._listWidget.onDidChangeFocus(e=>{e.elements.length===1&&opts.onFocusChange(e.elements[0].newSymbolName)},this._disposables),this._listWidget.onDidChangeSelection(e=>{e.elements.length===1&&opts.onSelectionChange()},this._disposables),this._disposables.add(this._listWidget.onDidBlur(e=>{this._listWidget.setFocus([])})),this._listWidget.style(getListStyles({listInactiveFocusForeground:quickInputListFocusForeground,listInactiveFocusBackground:quickInputListFocusBackground}))}dispose(){this._listWidget.dispose(),this._disposables.dispose()}layout({height,width:width2}){this._availableHeight=height,this._minimumWidth=width2}setCandidates(candidates){this._listWidget.splice(0,0,candidates);const height=this._pickListHeight(this._listWidget.length),width2=this._pickListWidth(candidates);this._listWidget.layout(height,width2),this._listContainer.style.height=`${height}px`,this._listContainer.style.width=`${width2}px`,status(localize("renameSuggestionsReceivedAria","Received {0} rename suggestions",candidates.length))}clearCandidates(){this._listContainer.style.height="0px",this._listContainer.style.width="0px",this._listWidget.splice(0,this._listWidget.length,[])}get nCandidates(){return this._listWidget.length}get focusedCandidate(){if(this._listWidget.length===0)return;const selectedElement=this._listWidget.getSelectedElements()[0];if(selectedElement!==void 0)return selectedElement.newSymbolName;const focusedElement=this._listWidget.getFocusedElements()[0];if(focusedElement!==void 0)return focusedElement.newSymbolName}focusNext(){if(this._listWidget.length===0)return!1;const focusedIxs=this._listWidget.getFocus();if(focusedIxs.length===0)return this._listWidget.focusFirst(),this._listWidget.reveal(0),!0;if(focusedIxs[0]===this._listWidget.length-1)return this._listWidget.setFocus([]),this._listWidget.reveal(0),!1;{this._listWidget.focusNext();const focused=this._listWidget.getFocus()[0];return this._listWidget.reveal(focused),!0}}focusPrevious(){if(this._listWidget.length===0)return!1;const focusedIxs=this._listWidget.getFocus();if(focusedIxs.length===0){this._listWidget.focusLast();const focused=this._listWidget.getFocus()[0];return this._listWidget.reveal(focused),!0}else{if(focusedIxs[0]===0)return this._listWidget.setFocus([]),!1;{this._listWidget.focusPrevious();const focused=this._listWidget.getFocus()[0];return this._listWidget.reveal(focused),!0}}}clearFocus(){this._listWidget.setFocus([])}get _candidateViewHeight(){const{totalHeight}=RenameCandidateView.getLayoutInfo({lineHeight:this._lineHeight});return totalHeight}_pickListHeight(nCandidates){const heightToFitAllCandidates=this._candidateViewHeight*nCandidates;return Math.min(heightToFitAllCandidates,this._availableHeight,this._candidateViewHeight*7)}_pickListWidth(candidates){const longestCandidateWidth=Math.ceil(Math.max(...candidates.map(c=>c.newSymbolName.length))*this._typicalHalfwidthCharacterWidth);return Math.max(this._minimumWidth,25+longestCandidateWidth+10)}static _createListWidget(container,candidateViewHeight,fontInfo){const virtualDelegate=new class{getTemplateId(element){return"candidate"}getHeight(element){return candidateViewHeight}},renderer=new class{constructor(){this.templateId="candidate"}renderTemplate(container2){return new RenameCandidateView(container2,fontInfo)}renderElement(candidate,index,templateData){templateData.populate(candidate)}disposeTemplate(templateData){templateData.dispose()}};return new List("NewSymbolNameCandidates",container,virtualDelegate,[renderer],{keyboardSupport:!1,mouseSupport:!0,multipleSelectionSupport:!1})}};__name(_RenameCandidateListView,"RenameCandidateListView");let RenameCandidateListView=_RenameCandidateListView;const _InputWithButton=class _InputWithButton{constructor(){this._onDidInputChange=new Emitter$1,this.onDidInputChange=this._onDidInputChange.event,this._disposables=new DisposableStore}get domNode(){return this._domNode||(this._domNode=document.createElement("div"),this._domNode.className="rename-input-with-button",this._domNode.style.display="flex",this._domNode.style.flexDirection="row",this._domNode.style.alignItems="center",this._inputNode=document.createElement("input"),this._inputNode.className="rename-input",this._inputNode.type="text",this._inputNode.style.border="none",this._inputNode.setAttribute("aria-label",localize("renameAriaLabel","Rename input. Type new name and press Enter to commit.")),this._domNode.appendChild(this._inputNode),this._buttonNode=document.createElement("div"),this._buttonNode.className="rename-suggestions-button",this._buttonNode.setAttribute("tabindex","0"),this._buttonGenHoverText=localize("generateRenameSuggestionsButton","Generate new name suggestions"),this._buttonCancelHoverText=localize("cancelRenameSuggestionsButton","Cancel"),this._buttonHover=getBaseLayerHoverDelegate().setupManagedHover(getDefaultHoverDelegate("element"),this._buttonNode,this._buttonGenHoverText),this._disposables.add(this._buttonHover),this._domNode.appendChild(this._buttonNode),this._disposables.add(addDisposableListener(this.input,EventType$1.INPUT,()=>this._onDidInputChange.fire())),this._disposables.add(addDisposableListener(this.input,EventType$1.KEY_DOWN,e=>{const keyEvent=new StandardKeyboardEvent(e);(keyEvent.keyCode===15||keyEvent.keyCode===17)&&this._onDidInputChange.fire()})),this._disposables.add(addDisposableListener(this.input,EventType$1.CLICK,()=>this._onDidInputChange.fire())),this._disposables.add(addDisposableListener(this.input,EventType$1.FOCUS,()=>{this.domNode.style.outlineWidth="1px",this.domNode.style.outlineStyle="solid",this.domNode.style.outlineOffset="-1px",this.domNode.style.outlineColor="var(--vscode-focusBorder)"})),this._disposables.add(addDisposableListener(this.input,EventType$1.BLUR,()=>{this.domNode.style.outline="none"}))),this._domNode}get input(){return assertType(this._inputNode),this._inputNode}get button(){return assertType(this._buttonNode),this._buttonNode}get buttonState(){return this._buttonState}setSparkleButton(){var _a3,_b3;this._buttonState="sparkle",(_a3=this._sparkleIcon)!=null||(this._sparkleIcon=renderIcon(Codicon.sparkle)),clearNode(this.button),this.button.appendChild(this._sparkleIcon),this.button.setAttribute("aria-label","Generating new name suggestions"),(_b3=this._buttonHover)==null||_b3.update(this._buttonGenHoverText),this.input.focus()}setStopButton(){var _a3,_b3;this._buttonState="stop",(_a3=this._stopIcon)!=null||(this._stopIcon=renderIcon(Codicon.primitiveSquare)),clearNode(this.button),this.button.appendChild(this._stopIcon),this.button.setAttribute("aria-label","Cancel generating new name suggestions"),(_b3=this._buttonHover)==null||_b3.update(this._buttonCancelHoverText),this.input.focus()}dispose(){this._disposables.dispose()}};__name(_InputWithButton,"InputWithButton");let InputWithButton=_InputWithButton;const _RenameCandidateView=class _RenameCandidateView{constructor(parent,fontInfo){this._domNode=document.createElement("div"),this._domNode.className="rename-box rename-candidate",this._domNode.style.display="flex",this._domNode.style.columnGap="5px",this._domNode.style.alignItems="center",this._domNode.style.height=`${fontInfo.lineHeight}px`,this._domNode.style.padding=`${_RenameCandidateView._PADDING}px`;const iconContainer=document.createElement("div");iconContainer.style.display="flex",iconContainer.style.alignItems="center",iconContainer.style.width=iconContainer.style.height=`${fontInfo.lineHeight*.8}px`,this._domNode.appendChild(iconContainer),this._icon=renderIcon(Codicon.sparkle),this._icon.style.display="none",iconContainer.appendChild(this._icon),this._label=document.createElement("div"),applyFontInfo(this._label,fontInfo),this._domNode.appendChild(this._label),parent.appendChild(this._domNode)}populate(value){this._updateIcon(value),this._updateLabel(value)}_updateIcon(value){var _a3;const isAIGenerated=!!((_a3=value.tags)!=null&&_a3.includes(NewSymbolNameTag$1.AIGenerated));this._icon.style.display=isAIGenerated?"inherit":"none"}_updateLabel(value){this._label.innerText=value.newSymbolName}static getLayoutInfo({lineHeight}){return{totalHeight:lineHeight+_RenameCandidateView._PADDING*2}}dispose(){}};__name(_RenameCandidateView,"RenameCandidateView"),_RenameCandidateView._PADDING=2;let RenameCandidateView=_RenameCandidateView;var __decorate$n=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$n=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},RenameController_1;const _RenameSkeleton=class _RenameSkeleton{constructor(model,position,registry){this.model=model,this.position=position,this._providerRenameIdx=0,this._providers=registry.ordered(model)}hasProvider(){return this._providers.length>0}async resolveRenameLocation(token){const rejects=[];for(this._providerRenameIdx=0;this._providerRenameIdx<this._providers.length;this._providerRenameIdx++){const provider=this._providers[this._providerRenameIdx];if(!provider.resolveRenameLocation)break;const res=await provider.resolveRenameLocation(this.model,this.position,token);if(res){if(res.rejectReason){rejects.push(res.rejectReason);continue}return res}}this._providerRenameIdx=0;const word=this.model.getWordAtPosition(this.position);return word?{range:new Range$5(this.position.lineNumber,word.startColumn,this.position.lineNumber,word.endColumn),text:word.word,rejectReason:rejects.length>0?rejects.join(`
1161
1161
  `):void 0}:{range:Range$5.fromPositions(this.position),text:"",rejectReason:rejects.length>0?rejects.join(`
1162
1162
  `):void 0}}async provideRenameEdits(newName,token){return this._provideRenameEdits(newName,this._providerRenameIdx,[],token)}async _provideRenameEdits(newName,i,rejects,token){const provider=this._providers[i];if(!provider)return{edits:[],rejectReason:rejects.join(`
1163
- `)};const result=await provider.provideRenameEdits(this.model,this.position,newName,token);if(result){if(result.rejectReason)return this._provideRenameEdits(newName,i+1,rejects.concat(result.rejectReason),token)}else return this._provideRenameEdits(newName,i+1,rejects.concat(localize("no result","No result.")),token);return result}};__name(_RenameSkeleton,"RenameSkeleton");let RenameSkeleton=_RenameSkeleton;async function rename(registry,model,position,newName){const skeleton=new RenameSkeleton(model,position,registry),loc=await skeleton.resolveRenameLocation(CancellationToken.None);return loc!=null&&loc.rejectReason?{edits:[],rejectReason:loc.rejectReason}:skeleton.provideRenameEdits(newName,CancellationToken.None)}__name(rename,"rename");let RenameController=(_Zd=class{static get(editor2){return editor2.getContribution(RenameController_1.ID)}constructor(editor2,_instaService,_notificationService,_bulkEditService,_progressService,_logService,_configService,_languageFeaturesService,_telemetryService){this.editor=editor2,this._instaService=_instaService,this._notificationService=_notificationService,this._bulkEditService=_bulkEditService,this._progressService=_progressService,this._logService=_logService,this._configService=_configService,this._languageFeaturesService=_languageFeaturesService,this._telemetryService=_telemetryService,this._disposableStore=new DisposableStore,this._cts=new CancellationTokenSource$1,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(RenameWidget,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var _a3,_b3;const trace=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new CancellationTokenSource$1,!this.editor.hasModel()){trace("editor has no model");return}const position=this.editor.getPosition(),skeleton=new RenameSkeleton(this.editor.getModel(),position,this._languageFeaturesService.renameProvider);if(!skeleton.hasProvider()){trace("skeleton has no provider");return}const cts1=new EditorStateCancellationTokenSource(this.editor,5,void 0,this._cts.token);let loc;try{trace("resolving rename location");const resolveLocationOperation=skeleton.resolveRenameLocation(cts1.token);this._progressService.showWhile(resolveLocationOperation,250),loc=await resolveLocationOperation,trace("resolved rename location")}catch(e){e instanceof CancellationError?trace("resolve rename location cancelled",JSON.stringify(e,null," ")):(trace("resolve rename location failed",e instanceof Error?e:JSON.stringify(e,null," ")),(typeof e=="string"||isMarkdownString(e))&&((_a3=MessageController.get(this.editor))==null||_a3.showMessage(e||localize("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),position)));return}finally{cts1.dispose()}if(!loc){trace("returning early - no loc");return}if(loc.rejectReason){trace(`returning early - rejected with reason: ${loc.rejectReason}`,loc.rejectReason),(_b3=MessageController.get(this.editor))==null||_b3.showMessage(loc.rejectReason,position);return}if(cts1.token.isCancellationRequested){trace("returning early - cts1 cancelled");return}const cts2=new EditorStateCancellationTokenSource(this.editor,5,loc.range,this._cts.token),model=this.editor.getModel(),newSymbolNamesProviders=this._languageFeaturesService.newSymbolNamesProvider.all(model),resolvedNewSymbolnamesProviders=await Promise.all(newSymbolNamesProviders.map(async p2=>{var _a4;return[p2,(_a4=await p2.supportsAutomaticNewSymbolNamesTriggerKind)!=null?_a4:!1]})),requestRenameSuggestions=__name((triggerKind,cts)=>{let providers=resolvedNewSymbolnamesProviders.slice();return triggerKind===NewSymbolNameTriggerKind$1.Automatic&&(providers=providers.filter(([_,supportsAutomatic])=>supportsAutomatic)),providers.map(([p2])=>p2.provideNewSymbolNames(model,loc.range,triggerKind,cts))},"requestRenameSuggestions");trace("creating rename input field and awaiting its result");const supportPreview=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),inputFieldResult=await this._renameWidget.getInput(loc.range,loc.text,supportPreview,newSymbolNamesProviders.length>0?requestRenameSuggestions:void 0,cts2);if(trace("received response from rename input field"),newSymbolNamesProviders.length>0&&this._reportTelemetry(newSymbolNamesProviders.length,model.getLanguageId(),inputFieldResult),typeof inputFieldResult=="boolean"){trace(`returning early - rename input field response - ${inputFieldResult}`),inputFieldResult&&this.editor.focus(),cts2.dispose();return}this.editor.focus(),trace("requesting rename edits");const renameOperation=raceCancellation(skeleton.provideRenameEdits(inputFieldResult.newName,cts2.token),cts2.token).then(async renameResult=>{if(!renameResult){trace("returning early - no rename edits result");return}if(!this.editor.hasModel()){trace("returning early - no model after rename edits are provided");return}if(renameResult.rejectReason){trace(`returning early - rejected with reason: ${renameResult.rejectReason}`),this._notificationService.info(renameResult.rejectReason);return}this.editor.setSelection(Range$5.fromPositions(this.editor.getSelection().getPosition())),trace("applying edits"),this._bulkEditService.apply(renameResult,{editor:this.editor,showPreview:inputFieldResult.wantsPreview,label:localize("label","Renaming '{0}' to '{1}'",loc==null?void 0:loc.text,inputFieldResult.newName),code:"undoredo.rename",quotableLabel:localize("quotableLabel","Renaming {0} to {1}",loc==null?void 0:loc.text,inputFieldResult.newName),respectAutoSaveConfig:!0}).then(result=>{trace("edits applied"),result.ariaSummary&&alert(localize("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",loc.text,inputFieldResult.newName,result.ariaSummary))}).catch(err=>{trace(`error when applying edits ${JSON.stringify(err,null," ")}`),this._notificationService.error(localize("rename.failedApply","Rename failed to apply edits")),this._logService.error(err)})},err=>{trace("error when providing rename edits",JSON.stringify(err,null," ")),this._notificationService.error(localize("rename.failed","Rename failed to compute edits")),this._logService.error(err)}).finally(()=>{cts2.dispose()});return trace("returning rename operation"),this._progressService.showWhile(renameOperation,250),renameOperation}acceptRenameInput(wantsPreview){this._renameWidget.acceptInput(wantsPreview)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}_reportTelemetry(nRenameSuggestionProviders,languageId,inputFieldResult){const value=typeof inputFieldResult=="boolean"?{kind:"cancelled",languageId,nRenameSuggestionProviders}:{kind:"accepted",languageId,nRenameSuggestionProviders,source:inputFieldResult.stats.source.k,nRenameSuggestions:inputFieldResult.stats.nRenameSuggestions,timeBeforeFirstInputFieldEdit:inputFieldResult.stats.timeBeforeFirstInputFieldEdit,wantsPreview:inputFieldResult.wantsPreview,nRenameSuggestionsInvocations:inputFieldResult.stats.nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:inputFieldResult.stats.hadAutomaticRenameSuggestionsInvocation};this._telemetryService.publicLog2("renameInvokedEvent",value)}},__name(_Zd,"RenameController"),RenameController_1=_Zd,_Zd.ID="editor.contrib.renameController",_Zd);RenameController=RenameController_1=__decorate$n([__param$n(1,IInstantiationService),__param$n(2,INotificationService),__param$n(3,IBulkEditService),__param$n(4,IEditorProgressService),__param$n(5,ILogService),__param$n(6,ITextResourceConfigurationService),__param$n(7,ILanguageFeaturesService),__param$n(8,ITelemetryService)],RenameController);const _RenameAction=class _RenameAction extends EditorAction{constructor(){super({id:"editor.action.rename",label:localize("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:ContextKeyExpr.and(EditorContextKeys.writable,EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(accessor,args){const editorService=accessor.get(ICodeEditorService),[uri,pos]=Array.isArray(args)&&args||[void 0,void 0];return URI$3.isUri(uri)&&Position$4.isIPosition(pos)?editorService.openCodeEditor({resource:uri},editorService.getActiveCodeEditor()).then(editor2=>{editor2&&(editor2.setPosition(pos),editor2.invokeWithinContext(accessor2=>(this.reportTelemetry(accessor2,editor2),this.run(accessor2,editor2))))},onUnexpectedError):super.runCommand(accessor,args)}run(accessor,editor2){const logService=accessor.get(ILogService),controller=RenameController.get(editor2);return controller?(logService.trace("[RenameAction] got controller, running..."),controller.run()):(logService.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}};__name(_RenameAction,"RenameAction");let RenameAction=_RenameAction;registerEditorContribution(RenameController.ID,RenameController,4),registerEditorAction(RenameAction);const RenameCommand=EditorCommand.bindToContribution(RenameController.get);registerEditorCommand(new RenameCommand({id:"acceptRenameInput",precondition:CONTEXT_RENAME_INPUT_VISIBLE,handler:__name(x=>x.acceptRenameInput(!1),"handler"),kbOpts:{weight:199,kbExpr:ContextKeyExpr.and(EditorContextKeys.focus,ContextKeyExpr.not("isComposing")),primary:3}})),registerEditorCommand(new RenameCommand({id:"acceptRenameInputWithPreview",precondition:ContextKeyExpr.and(CONTEXT_RENAME_INPUT_VISIBLE,ContextKeyExpr.has("config.editor.rename.enablePreview")),handler:__name(x=>x.acceptRenameInput(!0),"handler"),kbOpts:{weight:199,kbExpr:ContextKeyExpr.and(EditorContextKeys.focus,ContextKeyExpr.not("isComposing")),primary:2051}})),registerEditorCommand(new RenameCommand({id:"cancelRenameInput",precondition:CONTEXT_RENAME_INPUT_VISIBLE,handler:__name(x=>x.cancelRenameInput(),"handler"),kbOpts:{weight:199,kbExpr:EditorContextKeys.focus,primary:9,secondary:[1033]}})),registerAction2((__d=class extends Action2{constructor(){super({id:"focusNextRenameSuggestion",title:{...localize2("focusNextRenameSuggestion","Focus Next Rename Suggestion")},precondition:CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{primary:18,weight:199}]})}run(accessor){const currentEditor=accessor.get(ICodeEditorService).getFocusedCodeEditor();if(!currentEditor)return;const controller=RenameController.get(currentEditor);controller&&controller.focusNextRenameSuggestion()}},__name(__d,"FocusNextRenameSuggestion"),__d)),registerAction2((_$d=class extends Action2{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...localize2("focusPreviousRenameSuggestion","Focus Previous Rename Suggestion")},precondition:CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{primary:16,weight:199}]})}run(accessor){const currentEditor=accessor.get(ICodeEditorService).getFocusedCodeEditor();if(!currentEditor)return;const controller=RenameController.get(currentEditor);controller&&controller.focusPreviousRenameSuggestion()}},__name(_$d,"FocusPreviousRenameSuggestion"),_$d)),registerModelAndPositionCommand("_executeDocumentRenameProvider",function(accessor,model,position,...args){const[newName]=args;assertType(typeof newName=="string");const{renameProvider}=accessor.get(ILanguageFeaturesService);return rename(renameProvider,model,position,newName)}),registerModelAndPositionCommand("_executePrepareRename",async function(accessor,model,position){const{renameProvider}=accessor.get(ILanguageFeaturesService),loc=await new RenameSkeleton(model,position,renameProvider).resolveRenameLocation(CancellationToken.None);if(loc!=null&&loc.rejectReason)throw new Error(loc.rejectReason);return loc}),Registry.as(Extensions$6.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:localize("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var __decorate$m=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$m=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let SectionHeaderDetector=(_ae=class extends Disposable{constructor(editor2,languageConfigurationService,editorWorkerService){super(),this.editor=editor2,this.languageConfigurationService=languageConfigurationService,this.editorWorkerService=editorWorkerService,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(editor2.getOption(73)),this.computePromise=null,this.currentOccurrences={},this._register(editor2.onDidChangeModel(e=>{this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(editor2.onDidChangeModelLanguage(e=>{this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(languageConfigurationService.onDidChange(e=>{var _a3;const editorLanguageId=(_a3=this.editor.getModel())==null?void 0:_a3.getLanguageId();editorLanguageId&&e.affects(editorLanguageId)&&(this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(editor2.onDidChangeConfiguration(e=>{this.options&&!e.hasChanged(73)||(this.options=this.createOptions(editor2.getOption(73)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(e=>{this.computeSectionHeaders.schedule()})),this._register(editor2.onDidChangeModelTokens(e=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new RunOnceScheduler(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(minimap){if(!minimap||!this.editor.hasModel())return;const languageId=this.editor.getModel().getLanguageId();if(!languageId)return;const commentsConfiguration=this.languageConfigurationService.getLanguageConfiguration(languageId).comments,foldingRules=this.languageConfigurationService.getLanguageConfiguration(languageId).foldingRules;if(!(!commentsConfiguration&&!(foldingRules!=null&&foldingRules.markers)))return{foldingRules,findMarkSectionHeaders:minimap.showMarkSectionHeaders,findRegionSectionHeaders:minimap.showRegionSectionHeaders}}findSectionHeaders(){var _a3,_b3;if(!this.editor.hasModel()||!((_a3=this.options)!=null&&_a3.findMarkSectionHeaders)&&!((_b3=this.options)!=null&&_b3.findRegionSectionHeaders))return;const model=this.editor.getModel();if(model.isDisposed()||model.isTooLargeForSyncing())return;const modelVersionId=model.getVersionId();this.editorWorkerService.findSectionHeaders(model.uri,this.options).then(sectionHeaders=>{model.isDisposed()||model.getVersionId()!==modelVersionId||this.updateDecorations(sectionHeaders)})}updateDecorations(sectionHeaders){const model=this.editor.getModel();model&&(sectionHeaders=sectionHeaders.filter(sectionHeader=>{if(!sectionHeader.shouldBeInComments)return!0;const validRange=model.validateRange(sectionHeader.range),tokens=model.tokenization.getLineTokens(validRange.startLineNumber),idx=tokens.findTokenIndexAtOffset(validRange.startColumn-1),tokenType=tokens.getStandardTokenType(idx);return tokens.getLanguageId(idx)===model.getLanguageId()&&tokenType===1}));const oldDecorations=Object.values(this.currentOccurrences).map(occurrence=>occurrence.decorationId),newDecorations=sectionHeaders.map(sectionHeader=>decoration(sectionHeader));this.editor.changeDecorations(changeAccessor=>{const decorations=changeAccessor.deltaDecorations(oldDecorations,newDecorations);this.currentOccurrences={};for(let i=0,len=decorations.length;i<len;i++){const occurrence={sectionHeader:sectionHeaders[i],decorationId:decorations[i]};this.currentOccurrences[occurrence.decorationId]=occurrence}})}stop(){this.computeSectionHeaders.cancel(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop(),this.decorations.clear()}},__name(_ae,"SectionHeaderDetector"),_ae.ID="editor.sectionHeaderDetector",_ae);SectionHeaderDetector=__decorate$m([__param$m(1,ILanguageConfigurationService),__param$m(2,IEditorWorkerService)],SectionHeaderDetector);function decoration(sectionHeader){return{range:sectionHeader.range,options:ModelDecorationOptions.createDynamic({description:"section-header",stickiness:3,collapseOnReplaceEdit:!0,minimap:{color:void 0,position:1,sectionHeaderStyle:sectionHeader.hasSeparatorLine?2:1,sectionHeaderText:sectionHeader.text}})}}__name(decoration,"decoration"),registerEditorContribution(SectionHeaderDetector.ID,SectionHeaderDetector,1);function reverseEndianness(arr){for(let i=0,len=arr.length;i<len;i+=4){const b0=arr[i+0],b1=arr[i+1],b2=arr[i+2],b3=arr[i+3];arr[i+0]=b3,arr[i+1]=b2,arr[i+2]=b1,arr[i+3]=b0}}__name(reverseEndianness,"reverseEndianness");function toLittleEndianBuffer(arr){const uint8Arr=new Uint8Array(arr.buffer,arr.byteOffset,arr.length*4);return isLittleEndian()||reverseEndianness(uint8Arr),VSBuffer.wrap(uint8Arr)}__name(toLittleEndianBuffer,"toLittleEndianBuffer");function encodeSemanticTokensDto(semanticTokens){const dest=new Uint32Array(encodeSemanticTokensDtoSize(semanticTokens));let offset=0;if(dest[offset++]=semanticTokens.id,semanticTokens.type==="full")dest[offset++]=1,dest[offset++]=semanticTokens.data.length,dest.set(semanticTokens.data,offset),offset+=semanticTokens.data.length;else{dest[offset++]=2,dest[offset++]=semanticTokens.deltas.length;for(const delta of semanticTokens.deltas)dest[offset++]=delta.start,dest[offset++]=delta.deleteCount,delta.data?(dest[offset++]=delta.data.length,dest.set(delta.data,offset),offset+=delta.data.length):dest[offset++]=0}return toLittleEndianBuffer(dest)}__name(encodeSemanticTokensDto,"encodeSemanticTokensDto");function encodeSemanticTokensDtoSize(semanticTokens){let result=0;if(result+=2,semanticTokens.type==="full")result+=1+semanticTokens.data.length;else{result+=1,result+=3*semanticTokens.deltas.length;for(const delta of semanticTokens.deltas)delta.data&&(result+=delta.data.length)}return result}__name(encodeSemanticTokensDtoSize,"encodeSemanticTokensDtoSize");function isSemanticTokens(v){return v&&!!v.data}__name(isSemanticTokens,"isSemanticTokens");function isSemanticTokensEdits(v){return v&&Array.isArray(v.edits)}__name(isSemanticTokensEdits,"isSemanticTokensEdits");const _DocumentSemanticTokensResult=class _DocumentSemanticTokensResult{constructor(provider,tokens,error){this.provider=provider,this.tokens=tokens,this.error=error}};__name(_DocumentSemanticTokensResult,"DocumentSemanticTokensResult");let DocumentSemanticTokensResult=_DocumentSemanticTokensResult;function hasDocumentSemanticTokensProvider(registry,model){return registry.has(model)}__name(hasDocumentSemanticTokensProvider,"hasDocumentSemanticTokensProvider");function getDocumentSemanticTokensProviders(registry,model){const groups=registry.orderedGroups(model);return groups.length>0?groups[0]:[]}__name(getDocumentSemanticTokensProviders,"getDocumentSemanticTokensProviders");async function getDocumentSemanticTokens(registry,model,lastProvider,lastResultId,token){const providers=getDocumentSemanticTokensProviders(registry,model),results=await Promise.all(providers.map(async provider=>{let result,error=null;try{result=await provider.provideDocumentSemanticTokens(model,provider===lastProvider?lastResultId:null,token)}catch(err){error=err,result=null}return(!result||!isSemanticTokens(result)&&!isSemanticTokensEdits(result))&&(result=null),new DocumentSemanticTokensResult(provider,result,error)}));for(const result of results){if(result.error)throw result.error;if(result.tokens)return result}return results.length>0?results[0]:null}__name(getDocumentSemanticTokens,"getDocumentSemanticTokens");function _getDocumentSemanticTokensProviderHighestGroup(registry,model){const result=registry.orderedGroups(model);return result.length>0?result[0]:null}__name(_getDocumentSemanticTokensProviderHighestGroup,"_getDocumentSemanticTokensProviderHighestGroup");const _DocumentRangeSemanticTokensResult=class _DocumentRangeSemanticTokensResult{constructor(provider,tokens){this.provider=provider,this.tokens=tokens}};__name(_DocumentRangeSemanticTokensResult,"DocumentRangeSemanticTokensResult");let DocumentRangeSemanticTokensResult=_DocumentRangeSemanticTokensResult;function hasDocumentRangeSemanticTokensProvider(providers,model){return providers.has(model)}__name(hasDocumentRangeSemanticTokensProvider,"hasDocumentRangeSemanticTokensProvider");function getDocumentRangeSemanticTokensProviders(providers,model){const groups=providers.orderedGroups(model);return groups.length>0?groups[0]:[]}__name(getDocumentRangeSemanticTokensProviders,"getDocumentRangeSemanticTokensProviders");async function getDocumentRangeSemanticTokens(registry,model,range2,token){const providers=getDocumentRangeSemanticTokensProviders(registry,model),results=await Promise.all(providers.map(async provider=>{let result;try{result=await provider.provideDocumentRangeSemanticTokens(model,range2,token)}catch(err){onUnexpectedExternalError(err),result=null}return(!result||!isSemanticTokens(result))&&(result=null),new DocumentRangeSemanticTokensResult(provider,result)}));for(const result of results)if(result.tokens)return result;return results.length>0?results[0]:null}__name(getDocumentRangeSemanticTokens,"getDocumentRangeSemanticTokens"),CommandsRegistry.registerCommand("_provideDocumentSemanticTokensLegend",async(accessor,...args)=>{const[uri]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),providers=_getDocumentSemanticTokensProviderHighestGroup(documentSemanticTokensProvider,model);return providers?providers[0].getLegend():accessor.get(ICommandService).executeCommand("_provideDocumentRangeSemanticTokensLegend",uri)}),CommandsRegistry.registerCommand("_provideDocumentSemanticTokens",async(accessor,...args)=>{const[uri]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentSemanticTokensProvider}=accessor.get(ILanguageFeaturesService);if(!hasDocumentSemanticTokensProvider(documentSemanticTokensProvider,model))return accessor.get(ICommandService).executeCommand("_provideDocumentRangeSemanticTokens",uri,model.getFullModelRange());const r2=await getDocumentSemanticTokens(documentSemanticTokensProvider,model,null,null,CancellationToken.None);if(!r2)return;const{provider,tokens}=r2;if(!tokens||!isSemanticTokens(tokens))return;const buff=encodeSemanticTokensDto({id:0,type:"full",data:tokens.data});return tokens.resultId&&provider.releaseDocumentSemanticTokens(tokens.resultId),buff}),CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(accessor,...args)=>{const[uri,range2]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentRangeSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),providers=getDocumentRangeSemanticTokensProviders(documentRangeSemanticTokensProvider,model);if(providers.length===0)return;if(providers.length===1)return providers[0].getLegend();if(!range2||!Range$5.isIRange(range2))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),providers[0].getLegend();const result=await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider,model,Range$5.lift(range2),CancellationToken.None);if(result)return result.provider.getLegend()}),CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokens",async(accessor,...args)=>{const[uri,range2]=args;assertType(uri instanceof URI$3),assertType(Range$5.isIRange(range2));const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentRangeSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),result=await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider,model,Range$5.lift(range2),CancellationToken.None);if(!(!result||!result.tokens))return encodeSemanticTokensDto({id:0,type:"full",data:result.tokens.data})});const SEMANTIC_HIGHLIGHTING_SETTING_ID="editor.semanticHighlighting";function isSemanticColoringEnabled(model,themeService,configurationService){var _a3;const setting=(_a3=configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID,{overrideIdentifier:model.getLanguageId(),resource:model.uri}))==null?void 0:_a3.enabled;return typeof setting=="boolean"?setting:themeService.getColorTheme().semanticHighlighting}__name(isSemanticColoringEnabled,"isSemanticColoringEnabled");var __decorate$l=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$l=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ModelSemanticColoring_1;let DocumentSemanticTokensFeature=(_be=class extends Disposable{constructor(semanticTokensStylingService,modelService,themeService,configurationService,languageFeatureDebounceService,languageFeaturesService){super(),this._watchers=Object.create(null);const register2=__name(model=>{this._watchers[model.uri.toString()]=new ModelSemanticColoring(model,semanticTokensStylingService,themeService,languageFeatureDebounceService,languageFeaturesService)},"register"),deregister=__name((model,modelSemanticColoring)=>{modelSemanticColoring.dispose(),delete this._watchers[model.uri.toString()]},"deregister"),handleSettingOrThemeChange=__name(()=>{for(const model of modelService.getModels()){const curr=this._watchers[model.uri.toString()];isSemanticColoringEnabled(model,themeService,configurationService)?curr||register2(model):curr&&deregister(model,curr)}},"handleSettingOrThemeChange");modelService.getModels().forEach(model=>{isSemanticColoringEnabled(model,themeService,configurationService)&&register2(model)}),this._register(modelService.onModelAdded(model=>{isSemanticColoringEnabled(model,themeService,configurationService)&&register2(model)})),this._register(modelService.onModelRemoved(model=>{const curr=this._watchers[model.uri.toString()];curr&&deregister(model,curr)})),this._register(configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)&&handleSettingOrThemeChange()})),this._register(themeService.onDidColorThemeChange(handleSettingOrThemeChange))}dispose(){for(const watcher of Object.values(this._watchers))watcher.dispose();super.dispose()}},__name(_be,"DocumentSemanticTokensFeature"),_be);DocumentSemanticTokensFeature=__decorate$l([__param$l(0,ISemanticTokensStylingService),__param$l(1,IModelService),__param$l(2,IThemeService),__param$l(3,IConfigurationService),__param$l(4,ILanguageFeatureDebounceService),__param$l(5,ILanguageFeaturesService)],DocumentSemanticTokensFeature);let ModelSemanticColoring=(_ce=class extends Disposable{constructor(model,_semanticTokensStylingService,themeService,languageFeatureDebounceService,languageFeaturesService){super(),this._semanticTokensStylingService=_semanticTokensStylingService,this._isDisposed=!1,this._model=model,this._provider=languageFeaturesService.documentSemanticTokensProvider,this._debounceInformation=languageFeatureDebounceService.for(this._provider,"DocumentSemanticTokens",{min:ModelSemanticColoring_1.REQUEST_MIN_DELAY,max:ModelSemanticColoring_1.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new RunOnceScheduler(()=>this._fetchDocumentSemanticTokensNow(),ModelSemanticColoring_1.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const bindDocumentChangeListeners=__name(()=>{dispose(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const provider of this._provider.all(model))typeof provider.onDidChange=="function"&&this._documentProvidersChangeListeners.push(provider.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))},"bindDocumentChangeListeners");bindDocumentChangeListeners(),this._register(this._provider.onDidChange(()=>{bindDocumentChangeListeners(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(themeService.onDidColorThemeChange(_=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),dispose(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!hasDocumentSemanticTokensProvider(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const cancellationTokenSource=new CancellationTokenSource$1,lastProvider=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,lastResultId=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,request=getDocumentSemanticTokens(this._provider,this._model,lastProvider,lastResultId,cancellationTokenSource.token);this._currentDocumentRequestCancellationTokenSource=cancellationTokenSource,this._providersChangedDuringRequest=!1;const pendingChanges=[],contentChangeListener=this._model.onDidChangeContent(e=>{pendingChanges.push(e)}),sw=new StopWatch(!1);request.then(res=>{if(this._debounceInformation.update(this._model,sw.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,contentChangeListener.dispose(),!res)this._setDocumentSemanticTokens(null,null,null,pendingChanges);else{const{provider,tokens}=res,styling=this._semanticTokensStylingService.getStyling(provider);this._setDocumentSemanticTokens(provider,tokens||null,styling,pendingChanges)}},err=>{err&&(isCancellationError(err)||typeof err.message=="string"&&err.message.indexOf("busy")!==-1)||onUnexpectedError(err),this._currentDocumentRequestCancellationTokenSource=null,contentChangeListener.dispose(),(pendingChanges.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(src,srcOffset,dest,destOffset,length){length=Math.min(length,dest.length-destOffset,src.length-srcOffset);for(let i=0;i<length;i++)dest[destOffset+i]=src[srcOffset+i]}_setDocumentSemanticTokens(provider,tokens,styling,pendingChanges){const currentResponse=this._currentDocumentResponse,rescheduleIfNeeded=__name(()=>{(pendingChanges.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))},"rescheduleIfNeeded");if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){provider&&tokens&&provider.releaseDocumentSemanticTokens(tokens.resultId);return}if(!provider||!styling){this._model.tokenization.setSemanticTokens(null,!1);return}if(!tokens){this._model.tokenization.setSemanticTokens(null,!0),rescheduleIfNeeded();return}if(isSemanticTokensEdits(tokens)){if(!currentResponse){this._model.tokenization.setSemanticTokens(null,!0);return}if(tokens.edits.length===0)tokens={resultId:tokens.resultId,data:currentResponse.data};else{let deltaLength=0;for(const edit of tokens.edits)deltaLength+=(edit.data?edit.data.length:0)-edit.deleteCount;const srcData=currentResponse.data,destData=new Uint32Array(srcData.length+deltaLength);let srcLastStart=srcData.length,destLastStart=destData.length;for(let i=tokens.edits.length-1;i>=0;i--){const edit=tokens.edits[i];if(edit.start>srcData.length){styling.warnInvalidEditStart(currentResponse.resultId,tokens.resultId,i,edit.start,srcData.length),this._model.tokenization.setSemanticTokens(null,!0);return}const copyCount=srcLastStart-(edit.start+edit.deleteCount);copyCount>0&&(ModelSemanticColoring_1._copy(srcData,srcLastStart-copyCount,destData,destLastStart-copyCount,copyCount),destLastStart-=copyCount),edit.data&&(ModelSemanticColoring_1._copy(edit.data,0,destData,destLastStart-edit.data.length,edit.data.length),destLastStart-=edit.data.length),srcLastStart=edit.start}srcLastStart>0&&ModelSemanticColoring_1._copy(srcData,0,destData,0,srcLastStart),tokens={resultId:tokens.resultId,data:destData}}}if(isSemanticTokens(tokens)){this._currentDocumentResponse=new SemanticTokensResponse(provider,tokens.resultId,tokens.data);const result=toMultilineTokens2(tokens,styling,this._model.getLanguageId());if(pendingChanges.length>0)for(const change of pendingChanges)for(const area of result)for(const singleChange of change.changes)area.applyEdit(singleChange.range,singleChange.text);this._model.tokenization.setSemanticTokens(result,!0)}else this._model.tokenization.setSemanticTokens(null,!0);rescheduleIfNeeded()}},__name(_ce,"ModelSemanticColoring"),ModelSemanticColoring_1=_ce,_ce.REQUEST_MIN_DELAY=300,_ce.REQUEST_MAX_DELAY=2e3,_ce);ModelSemanticColoring=ModelSemanticColoring_1=__decorate$l([__param$l(1,ISemanticTokensStylingService),__param$l(2,IThemeService),__param$l(3,ILanguageFeatureDebounceService),__param$l(4,ILanguageFeaturesService)],ModelSemanticColoring);const _SemanticTokensResponse=class _SemanticTokensResponse{constructor(provider,resultId,data){this.provider=provider,this.resultId=resultId,this.data=data}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}};__name(_SemanticTokensResponse,"SemanticTokensResponse");let SemanticTokensResponse=_SemanticTokensResponse;registerEditorFeature(DocumentSemanticTokensFeature);var __decorate$k=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$k=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let ViewportSemanticTokensContribution=(_de=class extends Disposable{constructor(editor2,_semanticTokensStylingService,_themeService,_configurationService,languageFeatureDebounceService,languageFeaturesService){super(),this._semanticTokensStylingService=_semanticTokensStylingService,this._themeService=_themeService,this._configurationService=_configurationService,this._editor=editor2,this._provider=languageFeaturesService.documentRangeSemanticTokensProvider,this._debounceInformation=languageFeatureDebounceService.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new RunOnceScheduler(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const scheduleTokenizeViewport=__name(()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))},"scheduleTokenizeViewport");this._register(this._editor.onDidScrollChange(()=>{scheduleTokenizeViewport()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._editor.onDidChangeModelContent(e=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)&&(this._cancelAll(),scheduleTokenizeViewport())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),scheduleTokenizeViewport()})),scheduleTokenizeViewport()}_cancelAll(){for(const request of this._outstandingRequests)request.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(req){for(let i=0,len=this._outstandingRequests.length;i<len;i++)if(this._outstandingRequests[i]===req){this._outstandingRequests.splice(i,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const model=this._editor.getModel();if(model.tokenization.hasCompleteSemanticTokens())return;if(!isSemanticColoringEnabled(model,this._themeService,this._configurationService)){model.tokenization.hasSomeSemanticTokens()&&model.tokenization.setSemanticTokens(null,!1);return}if(!hasDocumentRangeSemanticTokensProvider(this._provider,model)){model.tokenization.hasSomeSemanticTokens()&&model.tokenization.setSemanticTokens(null,!1);return}const visibleRanges=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(visibleRanges.map(range2=>this._requestRange(model,range2)))}_requestRange(model,range2){const requestVersionId=model.getVersionId(),request=createCancelablePromise(token=>Promise.resolve(getDocumentRangeSemanticTokens(this._provider,model,range2,token))),sw=new StopWatch(!1);return request.then(r2=>{if(this._debounceInformation.update(model,sw.elapsed()),!r2||!r2.tokens||model.isDisposed()||model.getVersionId()!==requestVersionId)return;const{provider,tokens:result}=r2,styling=this._semanticTokensStylingService.getStyling(provider);model.tokenization.setPartialSemanticTokens(range2,toMultilineTokens2(result,styling,model.getLanguageId()))}).then(()=>this._removeOutstandingRequest(request),()=>this._removeOutstandingRequest(request)),request}},__name(_de,"ViewportSemanticTokensContribution"),_de.ID="editor.contrib.viewportSemanticTokens",_de);ViewportSemanticTokensContribution=__decorate$k([__param$k(1,ISemanticTokensStylingService),__param$k(2,IThemeService),__param$k(3,IConfigurationService),__param$k(4,ILanguageFeatureDebounceService),__param$k(5,ILanguageFeaturesService)],ViewportSemanticTokensContribution),registerEditorContribution(ViewportSemanticTokensContribution.ID,ViewportSemanticTokensContribution,1);const _WordSelectionRangeProvider=class _WordSelectionRangeProvider{constructor(selectSubwords=!0){this.selectSubwords=selectSubwords}provideSelectionRanges(model,positions){const result=[];for(const position of positions){const bucket=[];result.push(bucket),this.selectSubwords&&this._addInWordRanges(bucket,model,position),this._addWordRanges(bucket,model,position),this._addWhitespaceLine(bucket,model,position),bucket.push({range:model.getFullModelRange()})}return result}_addInWordRanges(bucket,model,pos){const obj=model.getWordAtPosition(pos);if(!obj)return;const{word,startColumn}=obj,offset=pos.column-startColumn;let start=offset,end=offset,lastCh=0;for(;start>=0;start--){const ch=word.charCodeAt(start);if(start!==offset&&(ch===95||ch===45))break;if(isLowerAsciiLetter(ch)&&isUpperAsciiLetter(lastCh))break;lastCh=ch}for(start+=1;end<word.length;end++){const ch=word.charCodeAt(end);if(isUpperAsciiLetter(ch)&&isLowerAsciiLetter(lastCh))break;if(ch===95||ch===45)break;lastCh=ch}start<end&&bucket.push({range:new Range$5(pos.lineNumber,startColumn+start,pos.lineNumber,startColumn+end)})}_addWordRanges(bucket,model,pos){const word=model.getWordAtPosition(pos);word&&bucket.push({range:new Range$5(pos.lineNumber,word.startColumn,pos.lineNumber,word.endColumn)})}_addWhitespaceLine(bucket,model,pos){model.getLineLength(pos.lineNumber)>0&&model.getLineFirstNonWhitespaceColumn(pos.lineNumber)===0&&model.getLineLastNonWhitespaceColumn(pos.lineNumber)===0&&bucket.push({range:new Range$5(pos.lineNumber,1,pos.lineNumber,model.getLineMaxColumn(pos.lineNumber))})}};__name(_WordSelectionRangeProvider,"WordSelectionRangeProvider");let WordSelectionRangeProvider=_WordSelectionRangeProvider;var __decorate$j=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$j=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},SmartSelectController_1;const _SelectionRanges=class _SelectionRanges{constructor(index,ranges){this.index=index,this.ranges=ranges}mov(fwd){const index=this.index+(fwd?1:-1);if(index<0||index>=this.ranges.length)return this;const res=new _SelectionRanges(index,this.ranges);return res.ranges[index].equalsRange(this.ranges[this.index])?res.mov(fwd):res}};__name(_SelectionRanges,"SelectionRanges");let SelectionRanges=_SelectionRanges,SmartSelectController=(_ee=class{static get(editor2){return editor2.getContribution(SmartSelectController_1.ID)}constructor(_editor,_languageFeaturesService){this._editor=_editor,this._languageFeaturesService=_languageFeaturesService,this._ignoreSelection=!1}dispose(){var _a3;(_a3=this._selectionListener)==null||_a3.dispose()}async run(forward){if(!this._editor.hasModel())return;const selections=this._editor.getSelections(),model=this._editor.getModel();if(this._state||await provideSelectionRanges(this._languageFeaturesService.selectionRangeProvider,model,selections.map(s=>s.getPosition()),this._editor.getOption(114),CancellationToken.None).then(ranges=>{var _a3;if(!(!isNonEmptyArray(ranges)||ranges.length!==selections.length)&&!(!this._editor.hasModel()||!equals$1(this._editor.getSelections(),selections,(a,b)=>a.equalsSelection(b)))){for(let i=0;i<ranges.length;i++)ranges[i]=ranges[i].filter(range2=>range2.containsPosition(selections[i].getStartPosition())&&range2.containsPosition(selections[i].getEndPosition())),ranges[i].unshift(selections[i]);this._state=ranges.map(ranges2=>new SelectionRanges(0,ranges2)),(_a3=this._selectionListener)==null||_a3.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var _a4;this._ignoreSelection||((_a4=this._selectionListener)==null||_a4.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(state=>state.mov(forward));const newSelections=this._state.map(state=>Selection$1.fromPositions(state.ranges[state.index].getStartPosition(),state.ranges[state.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(newSelections)}finally{this._ignoreSelection=!1}}},__name(_ee,"SmartSelectController"),SmartSelectController_1=_ee,_ee.ID="editor.contrib.smartSelectController",_ee);SmartSelectController=SmartSelectController_1=__decorate$j([__param$j(1,ILanguageFeaturesService)],SmartSelectController);const _AbstractSmartSelect=class _AbstractSmartSelect extends EditorAction{constructor(forward,opts){super(opts),this._forward=forward}async run(_accessor,editor2){const controller=SmartSelectController.get(editor2);controller&&await controller.run(this._forward)}};__name(_AbstractSmartSelect,"AbstractSmartSelect");let AbstractSmartSelect=_AbstractSmartSelect;const _GrowSelectionAction=class _GrowSelectionAction extends AbstractSmartSelect{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:localize("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:MenuId.MenubarSelectionMenu,group:"1_basic",title:localize({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}};__name(_GrowSelectionAction,"GrowSelectionAction");let GrowSelectionAction=_GrowSelectionAction;CommandsRegistry.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");const _ShrinkSelectionAction=class _ShrinkSelectionAction extends AbstractSmartSelect{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:localize("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:MenuId.MenubarSelectionMenu,group:"1_basic",title:localize({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}};__name(_ShrinkSelectionAction,"ShrinkSelectionAction");let ShrinkSelectionAction=_ShrinkSelectionAction;registerEditorContribution(SmartSelectController.ID,SmartSelectController,4),registerEditorAction(GrowSelectionAction),registerEditorAction(ShrinkSelectionAction);async function provideSelectionRanges(registry,model,positions,options,token){const providers=registry.all(model).concat(new WordSelectionRangeProvider(options.selectSubwords));providers.length===1&&providers.unshift(new BracketSelectionRangeProvider);const work=[],allRawRanges=[];for(const provider of providers)work.push(Promise.resolve(provider.provideSelectionRanges(model,positions,token)).then(allProviderRanges=>{if(isNonEmptyArray(allProviderRanges)&&allProviderRanges.length===positions.length)for(let i=0;i<positions.length;i++){allRawRanges[i]||(allRawRanges[i]=[]);for(const oneProviderRanges of allProviderRanges[i])Range$5.isIRange(oneProviderRanges.range)&&Range$5.containsPosition(oneProviderRanges.range,positions[i])&&allRawRanges[i].push(Range$5.lift(oneProviderRanges.range))}},onUnexpectedExternalError));return await Promise.all(work),allRawRanges.map(oneRawRanges=>{if(oneRawRanges.length===0)return[];oneRawRanges.sort((a,b)=>Position$4.isBefore(a.getStartPosition(),b.getStartPosition())?1:Position$4.isBefore(b.getStartPosition(),a.getStartPosition())||Position$4.isBefore(a.getEndPosition(),b.getEndPosition())?-1:Position$4.isBefore(b.getEndPosition(),a.getEndPosition())?1:0);const oneRanges=[];let last;for(const range2 of oneRawRanges)(!last||Range$5.containsRange(range2,last)&&!Range$5.equalsRange(range2,last))&&(oneRanges.push(range2),last=range2);if(!options.selectLeadingAndTrailingWhitespace)return oneRanges;const oneRangesWithTrivia=[oneRanges[0]];for(let i=1;i<oneRanges.length;i++){const prev=oneRanges[i-1],cur=oneRanges[i];if(cur.startLineNumber!==prev.startLineNumber||cur.endLineNumber!==prev.endLineNumber){const rangeNoWhitespace=new Range$5(prev.startLineNumber,model.getLineFirstNonWhitespaceColumn(prev.startLineNumber),prev.endLineNumber,model.getLineLastNonWhitespaceColumn(prev.endLineNumber));rangeNoWhitespace.containsRange(prev)&&!rangeNoWhitespace.equalsRange(prev)&&cur.containsRange(rangeNoWhitespace)&&!cur.equalsRange(rangeNoWhitespace)&&oneRangesWithTrivia.push(rangeNoWhitespace);const rangeFull=new Range$5(prev.startLineNumber,1,prev.endLineNumber,model.getLineMaxColumn(prev.endLineNumber));rangeFull.containsRange(prev)&&!rangeFull.equalsRange(rangeNoWhitespace)&&cur.containsRange(rangeFull)&&!cur.equalsRange(rangeFull)&&oneRangesWithTrivia.push(rangeFull)}oneRangesWithTrivia.push(cur)}return oneRangesWithTrivia})}__name(provideSelectionRanges,"provideSelectionRanges"),CommandsRegistry.registerCommand("_executeSelectionRangeProvider",async function(accessor,...args){const[resource,positions]=args;assertType(URI$3.isUri(resource));const registry=accessor.get(ILanguageFeaturesService).selectionRangeProvider,reference=await accessor.get(ITextModelService).createModelReference(resource);try{return provideSelectionRanges(registry,reference.object.textEditorModel,positions,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},CancellationToken.None)}finally{reference.dispose()}});const Categories=Object.freeze({View:localize2("view","View"),Help:localize2("help","Help"),Test:localize2("test","Test"),File:localize2("file","File"),Preferences:localize2("preferences","Preferences"),Developer:localize2({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer")}),_StickyScrollWidgetState=class _StickyScrollWidgetState{constructor(startLineNumbers,endLineNumbers,lastLineRelativePosition,showEndForLine=null){this.startLineNumbers=startLineNumbers,this.endLineNumbers=endLineNumbers,this.lastLineRelativePosition=lastLineRelativePosition,this.showEndForLine=showEndForLine}equals(other){return!!other&&this.lastLineRelativePosition===other.lastLineRelativePosition&&this.showEndForLine===other.showEndForLine&&equals$1(this.startLineNumbers,other.startLineNumbers)&&equals$1(this.endLineNumbers,other.endLineNumbers)}static get Empty(){return new _StickyScrollWidgetState([],[],0)}};__name(_StickyScrollWidgetState,"StickyScrollWidgetState");let StickyScrollWidgetState=_StickyScrollWidgetState;const _ttPolicy=createTrustedTypesPolicy("stickyScrollViewLayer",{createHTML:__name(value=>value,"createHTML")}),STICKY_INDEX_ATTR="data-sticky-line-index",STICKY_IS_LINE_ATTR="data-sticky-is-line",STICKY_IS_LINE_NUMBER_ATTR="data-sticky-is-line-number",STICKY_IS_FOLDING_ICON_ATTR="data-sticky-is-folding-icon",_StickyScrollWidget=class _StickyScrollWidget extends Disposable{constructor(_editor){super(),this._editor=_editor,this._foldingIconStore=new DisposableStore,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(67),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,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",_editor instanceof EmbeddedCodeEditorWidget),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const updateScrollLeftPosition=__name(()=>{this._linesDomNode.style.left=this._editor.getOption(116).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"},"updateScrollLeftPosition");this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(116)&&updateScrollLeftPosition(),e.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))})),this._register(this._editor.onDidScrollChange(e=>{e.scrollLeftChanged&&updateScrollLeftPosition(),e.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{updateScrollLeftPosition(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),updateScrollLeftPosition(),this._register(this._editor.onDidLayoutChange(e=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(lineNumber){return this._renderedStickyLines.find(stickyLine=>stickyLine.lineNumber===lineNumber)}getCurrentLines(){return this._lineNumbers}setState(_state,foldingModel,_rebuildFromLine){if(_rebuildFromLine===void 0&&(!this._previousState&&!_state||this._previousState&&this._previousState.equals(_state)))return;const isWidgetHeightZero=this._isWidgetHeightZero(_state),state=isWidgetHeightZero?void 0:_state,rebuildFromLine=isWidgetHeightZero?0:this._findLineToRebuildWidgetFrom(_state,_rebuildFromLine);this._renderRootNode(state,foldingModel,rebuildFromLine),this._previousState=_state}_isWidgetHeightZero(state){if(!state)return!0;const futureWidgetHeight=state.startLineNumbers.length*this._lineHeight+state.lastLineRelativePosition;if(futureWidgetHeight>0){this._lastLineRelativePosition=state.lastLineRelativePosition;const lineNumbers=[...state.startLineNumbers];state.showEndForLine!==null&&(lineNumbers[state.showEndForLine]=state.endLineNumbers[state.showEndForLine]),this._lineNumbers=lineNumbers}else this._lastLineRelativePosition=0,this._lineNumbers=[];return futureWidgetHeight===0}_findLineToRebuildWidgetFrom(state,_rebuildFromLine){if(!state||!this._previousState)return 0;if(_rebuildFromLine!==void 0)return _rebuildFromLine;const previousState=this._previousState,indexOfLinesAlreadyRendered=state.startLineNumbers.findIndex(startLineNumber=>!previousState.startLineNumbers.includes(startLineNumber));return indexOfLinesAlreadyRendered===-1?0:indexOfLinesAlreadyRendered}_updateWidgetWidth(){const layoutInfo=this._editor.getLayoutInfo(),lineNumbersWidth=layoutInfo.contentLeft;this._lineNumbersDomNode.style.width=`${lineNumbersWidth}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-layoutInfo.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${layoutInfo.width-layoutInfo.verticalScrollbarWidth}px`}_clearStickyLinesFromLine(clearFromLine){this._foldingIconStore.clear();for(let i=clearFromLine;i<this._renderedStickyLines.length;i++){const stickyLine=this._renderedStickyLines[i];stickyLine.lineNumberDomNode.remove(),stickyLine.lineDomNode.remove()}this._renderedStickyLines=this._renderedStickyLines.slice(0,clearFromLine),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(requireTransitions){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${requireTransitions?.5:0}s`)}_setFoldingIconsVisibility(allVisible){for(const line of this._renderedStickyLines){const foldingIcon=line.foldingIcon;foldingIcon&&foldingIcon.setVisible(allVisible?!0:foldingIcon.isCollapsed)}}async _renderRootNode(state,foldingModel,rebuildFromLine){if(this._clearStickyLinesFromLine(rebuildFromLine),!state)return;for(const stickyLine of this._renderedStickyLines)this._updateTopAndZIndexOfStickyLine(stickyLine);const layoutInfo=this._editor.getLayoutInfo(),linesToRender=this._lineNumbers.slice(rebuildFromLine);for(const[index,line]of linesToRender.entries()){const stickyLine=this._renderChildNode(index+rebuildFromLine,line,foldingModel,layoutInfo);stickyLine&&(this._linesDomNode.appendChild(stickyLine.lineDomNode),this._lineNumbersDomNode.appendChild(stickyLine.lineNumberDomNode),this._renderedStickyLines.push(stickyLine))}foldingModel&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const widgetHeight=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${widgetHeight}px`,this._linesDomNodeScrollable.style.height=`${widgetHeight}px`,this._rootDomNode.style.height=`${widgetHeight}px`,this._rootDomNode.style.marginLeft="0px",this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map(l2=>l2.scrollWidth))+layoutInfo.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(111)==="mouseover"&&(this._foldingIconStore.add(addDisposableListener(this._lineNumbersDomNode,EventType$1.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(addDisposableListener(this._lineNumbersDomNode,EventType$1.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(index,line,foldingModel,layoutInfo){const viewModel=this._editor._getViewModel();if(!viewModel)return;const viewLineNumber=viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position$4(line,1)).lineNumber,lineRenderingData=viewModel.getViewLineRenderingData(viewLineNumber),lineNumberOption=this._editor.getOption(68);let actualInlineDecorations;try{actualInlineDecorations=LineDecoration.filter(lineRenderingData.inlineDecorations,viewLineNumber,lineRenderingData.minColumn,lineRenderingData.maxColumn)}catch{actualInlineDecorations=[]}const renderLineInput=new RenderLineInput(!0,!0,lineRenderingData.content,lineRenderingData.continuesWithWrappedLine,lineRenderingData.isBasicASCII,lineRenderingData.containsRTL,0,lineRenderingData.tokens,actualInlineDecorations,lineRenderingData.tabSize,lineRenderingData.startVisibleColumn,1,1,1,500,"none",!0,!0,null),sb2=new StringBuilder(2e3),renderOutput=renderViewLine(renderLineInput,sb2);let newLine;_ttPolicy?newLine=_ttPolicy.createHTML(sb2.build()):newLine=sb2.build();const lineHTMLNode=document.createElement("span");lineHTMLNode.setAttribute(STICKY_INDEX_ATTR,String(index)),lineHTMLNode.setAttribute(STICKY_IS_LINE_ATTR,""),lineHTMLNode.setAttribute("role","listitem"),lineHTMLNode.tabIndex=0,lineHTMLNode.className="sticky-line-content",lineHTMLNode.classList.add(`stickyLine${line}`),lineHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineHTMLNode.innerHTML=newLine;const lineNumberHTMLNode=document.createElement("span");lineNumberHTMLNode.setAttribute(STICKY_INDEX_ATTR,String(index)),lineNumberHTMLNode.setAttribute(STICKY_IS_LINE_NUMBER_ATTR,""),lineNumberHTMLNode.className="sticky-line-number",lineNumberHTMLNode.style.lineHeight=`${this._lineHeight}px`;const lineNumbersWidth=layoutInfo.contentLeft;lineNumberHTMLNode.style.width=`${lineNumbersWidth}px`;const innerLineNumberHTML=document.createElement("span");lineNumberOption.renderType===1||lineNumberOption.renderType===3&&line%10===0?innerLineNumberHTML.innerText=line.toString():lineNumberOption.renderType===2&&(innerLineNumberHTML.innerText=Math.abs(line-this._editor.getPosition().lineNumber).toString()),innerLineNumberHTML.className="sticky-line-number-inner",innerLineNumberHTML.style.lineHeight=`${this._lineHeight}px`,innerLineNumberHTML.style.width=`${layoutInfo.lineNumbersWidth}px`,innerLineNumberHTML.style.paddingLeft=`${layoutInfo.lineNumbersLeft}px`,lineNumberHTMLNode.appendChild(innerLineNumberHTML);const foldingIcon=this._renderFoldingIconForLine(foldingModel,line);foldingIcon&&lineNumberHTMLNode.appendChild(foldingIcon.domNode),this._editor.applyFontInfo(lineHTMLNode),this._editor.applyFontInfo(innerLineNumberHTML),lineNumberHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineNumberHTMLNode.style.height=`${this._lineHeight}px`,lineHTMLNode.style.height=`${this._lineHeight}px`;const renderedLine=new RenderedStickyLine(index,line,lineHTMLNode,lineNumberHTMLNode,foldingIcon,renderOutput.characterMapping,lineHTMLNode.scrollWidth);return this._updateTopAndZIndexOfStickyLine(renderedLine)}_updateTopAndZIndexOfStickyLine(stickyLine){var _a3;const index=stickyLine.index,lineHTMLNode=stickyLine.lineDomNode,lineNumberHTMLNode=stickyLine.lineNumberDomNode,isLastLine=index===this._lineNumbers.length-1,lastLineZIndex="0",intermediateLineZIndex="1";lineHTMLNode.style.zIndex=isLastLine?lastLineZIndex:intermediateLineZIndex,lineNumberHTMLNode.style.zIndex=isLastLine?lastLineZIndex:intermediateLineZIndex;const lastLineTop=`${index*this._lineHeight+this._lastLineRelativePosition+((_a3=stickyLine.foldingIcon)!=null&&_a3.isCollapsed?1:0)}px`,intermediateLineTop=`${index*this._lineHeight}px`;return lineHTMLNode.style.top=isLastLine?lastLineTop:intermediateLineTop,lineNumberHTMLNode.style.top=isLastLine?lastLineTop:intermediateLineTop,stickyLine}_renderFoldingIconForLine(foldingModel,line){const showFoldingControls=this._editor.getOption(111);if(!foldingModel||showFoldingControls==="never")return;const foldingRegions=foldingModel.regions,indexOfFoldingRegion=foldingRegions.findRange(line),startLineNumber=foldingRegions.getStartLineNumber(indexOfFoldingRegion);if(!(line===startLineNumber))return;const isCollapsed=foldingRegions.isCollapsed(indexOfFoldingRegion),foldingIcon=new StickyFoldingIcon(isCollapsed,startLineNumber,foldingRegions.getEndLineNumber(indexOfFoldingRegion),this._lineHeight);return foldingIcon.setVisible(this._isOnGlyphMargin?!0:isCollapsed||showFoldingControls==="always"),foldingIcon.domNode.setAttribute(STICKY_IS_FOLDING_ICON_ATTR,""),foldingIcon}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(index){0<=index&&index<this._renderedStickyLines.length&&this._renderedStickyLines[index].lineDomNode.focus()}getEditorPositionFromNode(spanDomNode){if(!spanDomNode||spanDomNode.children.length>0)return null;const renderedStickyLine=this._getRenderedStickyLineFromChildDomNode(spanDomNode);if(!renderedStickyLine)return null;const column=getColumnOfNodeOffset(renderedStickyLine.characterMapping,spanDomNode,0);return new Position$4(renderedStickyLine.lineNumber,column)}getLineNumberFromChildDomNode(domNode){var _a3,_b3;return(_b3=(_a3=this._getRenderedStickyLineFromChildDomNode(domNode))==null?void 0:_a3.lineNumber)!=null?_b3:null}_getRenderedStickyLineFromChildDomNode(domNode){const index=this.getLineIndexFromChildDomNode(domNode);return index===null||index<0||index>=this._renderedStickyLines.length?null:this._renderedStickyLines[index]}getLineIndexFromChildDomNode(domNode){const lineIndex=this._getAttributeValue(domNode,STICKY_INDEX_ATTR);return lineIndex?parseInt(lineIndex,10):null}isInStickyLine(domNode){return this._getAttributeValue(domNode,STICKY_IS_LINE_ATTR)!==void 0}isInFoldingIconDomNode(domNode){return this._getAttributeValue(domNode,STICKY_IS_FOLDING_ICON_ATTR)!==void 0}_getAttributeValue(domNode,attribute){for(;domNode&&domNode!==this._rootDomNode;){const line=domNode.getAttribute(attribute);if(line!==null)return line;domNode=domNode.parentElement}}};__name(_StickyScrollWidget,"StickyScrollWidget");let StickyScrollWidget=_StickyScrollWidget;const _RenderedStickyLine=class _RenderedStickyLine{constructor(index,lineNumber,lineDomNode,lineNumberDomNode,foldingIcon,characterMapping,scrollWidth){this.index=index,this.lineNumber=lineNumber,this.lineDomNode=lineDomNode,this.lineNumberDomNode=lineNumberDomNode,this.foldingIcon=foldingIcon,this.characterMapping=characterMapping,this.scrollWidth=scrollWidth}};__name(_RenderedStickyLine,"RenderedStickyLine");let RenderedStickyLine=_RenderedStickyLine;const _StickyFoldingIcon=class _StickyFoldingIcon{constructor(isCollapsed,foldingStartLine,foldingEndLine,dimension){this.isCollapsed=isCollapsed,this.foldingStartLine=foldingStartLine,this.foldingEndLine=foldingEndLine,this.dimension=dimension,this.domNode=document.createElement("div"),this.domNode.style.width=`${dimension}px`,this.domNode.style.height=`${dimension}px`,this.domNode.className=ThemeIcon.asClassName(isCollapsed?foldingCollapsedIcon:foldingExpandedIcon)}setVisible(visible){this.domNode.style.cursor=visible?"pointer":"default",this.domNode.style.opacity=visible?"1":"0"}};__name(_StickyFoldingIcon,"StickyFoldingIcon");let StickyFoldingIcon=_StickyFoldingIcon;const _StickyRange=class _StickyRange{constructor(startLineNumber,endLineNumber){this.startLineNumber=startLineNumber,this.endLineNumber=endLineNumber}};__name(_StickyRange,"StickyRange");let StickyRange=_StickyRange;const _StickyElement=class _StickyElement{constructor(range2,children,parent){this.range=range2,this.children=children,this.parent=parent}};__name(_StickyElement,"StickyElement");let StickyElement=_StickyElement;const _StickyModel=class _StickyModel{constructor(uri,version,element,outlineProviderId){this.uri=uri,this.version=version,this.element=element,this.outlineProviderId=outlineProviderId}};__name(_StickyModel,"StickyModel");let StickyModel=_StickyModel;var __decorate$i=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$i=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ModelProvider;(function(ModelProvider2){ModelProvider2.OUTLINE_MODEL="outlineModel",ModelProvider2.FOLDING_PROVIDER_MODEL="foldingProviderModel",ModelProvider2.INDENTATION_MODEL="indentationModel"})(ModelProvider||(ModelProvider={}));var Status;(function(Status2){Status2[Status2.VALID=0]="VALID",Status2[Status2.INVALID=1]="INVALID",Status2[Status2.CANCELED=2]="CANCELED"})(Status||(Status={}));let StickyModelProvider=(_fe=class extends Disposable{constructor(_editor,onProviderUpdate,_languageConfigurationService,_languageFeaturesService){switch(super(),this._editor=_editor,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Delayer(300)),this._updateOperation=this._register(new DisposableStore),this._editor.getOption(116).defaultModel){case ModelProvider.OUTLINE_MODEL:this._modelProviders.push(new StickyModelFromCandidateOutlineProvider(this._editor,_languageFeaturesService));case ModelProvider.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new StickyModelFromCandidateSyntaxFoldingProvider(this._editor,onProviderUpdate,_languageFeaturesService));case ModelProvider.INDENTATION_MODEL:this._modelProviders.push(new StickyModelFromCandidateIndentationFoldingProvider(this._editor,_languageConfigurationService));break}}dispose(){this._modelProviders.forEach(provider=>provider.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(token){return this._updateOperation.clear(),this._updateOperation.add({dispose:__name(()=>{this._cancelModelPromise(),this._updateScheduler.cancel()},"dispose")}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const modelProvider of this._modelProviders){const{statusPromise,modelPromise}=modelProvider.computeStickyModel(token);this._modelPromise=modelPromise;const status2=await statusPromise;if(this._modelPromise!==modelPromise)return null;switch(status2){case Status.CANCELED:return this._updateOperation.clear(),null;case Status.VALID:return modelProvider.stickyModel}}return null}).catch(error=>(onUnexpectedError(error),null))}},__name(_fe,"StickyModelProvider"),_fe);StickyModelProvider=__decorate$i([__param$i(2,IInstantiationService),__param$i(3,ILanguageFeaturesService)],StickyModelProvider);const _StickyModelCandidateProvider=class _StickyModelCandidateProvider extends Disposable{constructor(_editor){super(),this._editor=_editor,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,Status.INVALID}computeStickyModel(token){if(token.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const providerModelPromise=createCancelablePromise(token2=>this.createModelFromProvider(token2));return{statusPromise:providerModelPromise.then(providerModel=>this.isModelValid(providerModel)?token.isCancellationRequested?Status.CANCELED:(this._stickyModel=this.createStickyModel(token,providerModel),Status.VALID):this._invalid()).then(void 0,err=>(onUnexpectedError(err),Status.CANCELED)),modelPromise:providerModelPromise}}isModelValid(model){return!0}isProviderValid(){return!0}};__name(_StickyModelCandidateProvider,"StickyModelCandidateProvider");let StickyModelCandidateProvider=_StickyModelCandidateProvider,StickyModelFromCandidateOutlineProvider=(_ge=class extends StickyModelCandidateProvider{constructor(_editor,_languageFeaturesService){super(_editor),this._languageFeaturesService=_languageFeaturesService}createModelFromProvider(token){return OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),token)}createStickyModel(token,model){var _a3;const{stickyOutlineElement,providerID}=this._stickyModelFromOutlineModel(model,(_a3=this._stickyModel)==null?void 0:_a3.outlineProviderId),textModel=this._editor.getModel();return new StickyModel(textModel.uri,textModel.getVersionId(),stickyOutlineElement,providerID)}isModelValid(model){return model&&model.children.size>0}_stickyModelFromOutlineModel(outlineModel,preferredProvider){let outlineElements;if(Iterable.first(outlineModel.children.values())instanceof OutlineGroup){const provider=Iterable.find(outlineModel.children.values(),outlineGroupOfModel=>outlineGroupOfModel.id===preferredProvider);if(provider)outlineElements=provider.children;else{let tempID="",maxTotalSumOfRanges=-1,optimalOutlineGroup;for(const[_key,outlineGroup]of outlineModel.children.entries()){const totalSumRanges=this._findSumOfRangesOfGroup(outlineGroup);totalSumRanges>maxTotalSumOfRanges&&(optimalOutlineGroup=outlineGroup,maxTotalSumOfRanges=totalSumRanges,tempID=outlineGroup.id)}preferredProvider=tempID,outlineElements=optimalOutlineGroup.children}}else outlineElements=outlineModel.children;const stickyChildren=[],outlineElementsArray=Array.from(outlineElements.values()).sort((element1,element2)=>{const range1=new StickyRange(element1.symbol.range.startLineNumber,element1.symbol.range.endLineNumber),range2=new StickyRange(element2.symbol.range.startLineNumber,element2.symbol.range.endLineNumber);return this._comparator(range1,range2)});for(const outlineElement of outlineElementsArray)stickyChildren.push(this._stickyModelFromOutlineElement(outlineElement,outlineElement.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new StickyElement(void 0,stickyChildren,void 0),providerID:preferredProvider}}_stickyModelFromOutlineElement(outlineElement,previousStartLine){const children=[];for(const child of outlineElement.children.values())if(child.symbol.selectionRange.startLineNumber!==child.symbol.range.endLineNumber)if(child.symbol.selectionRange.startLineNumber!==previousStartLine)children.push(this._stickyModelFromOutlineElement(child,child.symbol.selectionRange.startLineNumber));else for(const subchild of child.children.values())children.push(this._stickyModelFromOutlineElement(subchild,child.symbol.selectionRange.startLineNumber));children.sort((child1,child2)=>this._comparator(child1.range,child2.range));const range2=new StickyRange(outlineElement.symbol.selectionRange.startLineNumber,outlineElement.symbol.range.endLineNumber);return new StickyElement(range2,children,void 0)}_comparator(range1,range2){return range1.startLineNumber!==range2.startLineNumber?range1.startLineNumber-range2.startLineNumber:range2.endLineNumber-range1.endLineNumber}_findSumOfRangesOfGroup(outline){let res=0;for(const child of outline.children.values())res+=this._findSumOfRangesOfGroup(child);return outline instanceof OutlineElement?res+outline.symbol.range.endLineNumber-outline.symbol.selectionRange.startLineNumber:res}},__name(_ge,"StickyModelFromCandidateOutlineProvider"),_ge);StickyModelFromCandidateOutlineProvider=__decorate$i([__param$i(1,ILanguageFeaturesService)],StickyModelFromCandidateOutlineProvider);const _StickyModelFromCandidateFoldingProvider=class _StickyModelFromCandidateFoldingProvider extends StickyModelCandidateProvider{constructor(editor2){super(editor2),this._foldingLimitReporter=new RangesLimitReporter(editor2)}createStickyModel(token,model){const foldingElement=this._fromFoldingRegions(model),textModel=this._editor.getModel();return new StickyModel(textModel.uri,textModel.getVersionId(),foldingElement,void 0)}isModelValid(model){return model!==null}_fromFoldingRegions(foldingRegions){const length=foldingRegions.length,orderedStickyElements=[],stickyOutlineElement=new StickyElement(void 0,[],void 0);for(let i=0;i<length;i++){const parentIndex=foldingRegions.getParentIndex(i);let parentNode;parentIndex!==-1?parentNode=orderedStickyElements[parentIndex]:parentNode=stickyOutlineElement;const child=new StickyElement(new StickyRange(foldingRegions.getStartLineNumber(i),foldingRegions.getEndLineNumber(i)+1),[],parentNode);parentNode.children.push(child),orderedStickyElements.push(child)}return stickyOutlineElement}};__name(_StickyModelFromCandidateFoldingProvider,"StickyModelFromCandidateFoldingProvider");let StickyModelFromCandidateFoldingProvider=_StickyModelFromCandidateFoldingProvider,StickyModelFromCandidateIndentationFoldingProvider=(_he=class extends StickyModelFromCandidateFoldingProvider{constructor(editor2,_languageConfigurationService){super(editor2),this._languageConfigurationService=_languageConfigurationService,this.provider=this._register(new IndentRangeProvider(editor2.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(token){return this.provider.compute(token)}},__name(_he,"StickyModelFromCandidateIndentationFoldingProvider"),_he);StickyModelFromCandidateIndentationFoldingProvider=__decorate$i([__param$i(1,ILanguageConfigurationService)],StickyModelFromCandidateIndentationFoldingProvider);let StickyModelFromCandidateSyntaxFoldingProvider=(_ie=class extends StickyModelFromCandidateFoldingProvider{constructor(editor2,onProviderUpdate,_languageFeaturesService){super(editor2),this._languageFeaturesService=_languageFeaturesService;const selectedProviders=FoldingController.getFoldingRangeProviders(this._languageFeaturesService,editor2.getModel());selectedProviders.length>0&&(this.provider=this._register(new SyntaxRangeProvider(editor2.getModel(),selectedProviders,onProviderUpdate,this._foldingLimitReporter,void 0)))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(token){var _a3,_b3;return(_b3=(_a3=this.provider)==null?void 0:_a3.compute(token))!=null?_b3:null}},__name(_ie,"StickyModelFromCandidateSyntaxFoldingProvider"),_ie);StickyModelFromCandidateSyntaxFoldingProvider=__decorate$i([__param$i(2,ILanguageFeaturesService)],StickyModelFromCandidateSyntaxFoldingProvider);var __decorate$h=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$h=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _StickyLineCandidate=class _StickyLineCandidate{constructor(startLineNumber,endLineNumber,nestingDepth){this.startLineNumber=startLineNumber,this.endLineNumber=endLineNumber,this.nestingDepth=nestingDepth}};__name(_StickyLineCandidate,"StickyLineCandidate");let StickyLineCandidate=_StickyLineCandidate,StickyLineCandidateProvider=(_je=class extends Disposable{constructor(editor2,_languageFeaturesService,_languageConfigurationService){super(),this._languageFeaturesService=_languageFeaturesService,this._languageConfigurationService=_languageConfigurationService,this._onDidChangeStickyScroll=this._register(new Emitter$1),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=editor2,this._sessionStore=this._register(new DisposableStore),this._updateSoon=this._register(new RunOnceScheduler(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(116)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(116).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(toDisposable(()=>{var _a3;(_a3=this._stickyModelProvider)==null||_a3.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var _a3;return(_a3=this._model)==null?void 0:_a3.version}updateStickyModelProvider(){var _a3;(_a3=this._stickyModelProvider)==null||_a3.dispose(),this._stickyModelProvider=null;const editor2=this._editor;editor2.hasModel()&&(this._stickyModelProvider=new StickyModelProvider(editor2,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var _a3;(_a3=this._cts)==null||_a3.dispose(!0),this._cts=new CancellationTokenSource$1,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(token){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const model=await this._stickyModelProvider.update(token);token.isCancellationRequested||(this._model=model)}updateIndex(index){return index===-1?index=0:index<0&&(index=-index-2),index}getCandidateStickyLinesIntersectingFromStickyModel(range2,outlineModel,result,depth,lastStartLineNumber){if(outlineModel.children.length===0)return;let lastLine=lastStartLineNumber;const childrenStartLines=[];for(let i=0;i<outlineModel.children.length;i++){const child=outlineModel.children[i];child.range&&childrenStartLines.push(child.range.startLineNumber)}const lowerBound=this.updateIndex(binarySearch(childrenStartLines,range2.startLineNumber,(a,b)=>a-b)),upperBound=this.updateIndex(binarySearch(childrenStartLines,range2.startLineNumber+depth,(a,b)=>a-b));for(let i=lowerBound;i<=upperBound;i++){const child=outlineModel.children[i];if(!child)return;if(child.range){const childStartLine=child.range.startLineNumber,childEndLine=child.range.endLineNumber;range2.startLineNumber<=childEndLine+1&&childStartLine-1<=range2.endLineNumber&&childStartLine!==lastLine&&(lastLine=childStartLine,result.push(new StickyLineCandidate(childStartLine,childEndLine-1,depth+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(range2,child,result,depth+1,childStartLine))}else this.getCandidateStickyLinesIntersectingFromStickyModel(range2,child,result,depth,lastStartLineNumber)}}getCandidateStickyLinesIntersecting(range2){var _a3,_b3;if(!((_a3=this._model)!=null&&_a3.element))return[];let stickyLineCandidates=[];this.getCandidateStickyLinesIntersectingFromStickyModel(range2,this._model.element,stickyLineCandidates,0,-1);const hiddenRanges=(_b3=this._editor._getViewModel())==null?void 0:_b3.getHiddenAreas();if(hiddenRanges)for(const hiddenRange of hiddenRanges)stickyLineCandidates=stickyLineCandidates.filter(stickyLine=>!(stickyLine.startLineNumber>=hiddenRange.startLineNumber&&stickyLine.endLineNumber<=hiddenRange.endLineNumber+1));return stickyLineCandidates}},__name(_je,"StickyLineCandidateProvider"),_je);StickyLineCandidateProvider=__decorate$h([__param$h(1,ILanguageFeaturesService),__param$h(2,ILanguageConfigurationService)],StickyLineCandidateProvider);var __decorate$g=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$g=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},StickyScrollController_1;let StickyScrollController=(_ke=class extends Disposable{constructor(_editor,_contextMenuService,_languageFeaturesService,_instaService,_languageConfigurationService,_languageFeatureDebounceService,_contextKeyService){super(),this._editor=_editor,this._contextMenuService=_contextMenuService,this._languageFeaturesService=_languageFeaturesService,this._instaService=_instaService,this._contextKeyService=_contextKeyService,this._sessionStore=new DisposableStore,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._stickyScrollWidget=new StickyScrollWidget(this._editor),this._stickyLineCandidateProvider=new StickyLineCandidateProvider(this._editor,_languageFeaturesService,_languageConfigurationService),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=StickyScrollWidgetState.Empty,this._onDidResize(),this._readConfiguration();const stickyScrollDomNode=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(e=>{this._readConfigurationChange(e)})),this._register(addDisposableListener(stickyScrollDomNode,EventType$1.CONTEXT_MENU,async event=>{this._onContextMenu(getWindow(stickyScrollDomNode),event)})),this._stickyScrollFocusedContextKey=EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);const focusTracker=this._register(trackFocus(stickyScrollDomNode));this._register(focusTracker.onDidBlur(_=>{this._positionRevealed===!1&&stickyScrollDomNode.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(focusTracker.onDidFocus(_=>{this.focus()})),this._registerMouseListeners(),this._register(addDisposableListener(stickyScrollDomNode,EventType$1.MOUSE_DOWN,e=>{this._onMouseDown=!0}))}static get(editor2){return editor2.getContribution(StickyScrollController_1.ID)}_disposeFocusStickyScrollStore(){var _a3;this._stickyScrollFocusedContextKey.set(!1),(_a3=this._focusDisposableStore)==null||_a3.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new DisposableStore,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(direction){this._focusedStickyElementIndex=direction?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const lineNumbers=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:lineNumbers[this._focusedStickyElementIndex],column:1})}_revealPosition(position){this._reveaInEditor(position,()=>this._editor.revealPosition(position))}_revealLineInCenterIfOutsideViewport(position){this._reveaInEditor(position,()=>this._editor.revealLineInCenterIfOutsideViewport(position.lineNumber,0))}_reveaInEditor(position,revealFunction){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,revealFunction(),this._editor.setSelection(Range$5.fromPositions(position)),this._editor.focus()}_registerMouseListeners(){const sessionStore=this._register(new DisposableStore),gesture=this._register(new ClickLinkGesture(this._editor,{extractLineNumberFromMouseEvent:__name(e=>{const position=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);return position?position.lineNumber:0},"extractLineNumberFromMouseEvent")})),getMouseEventTarget=__name(mouseEvent=>{if(!this._editor.hasModel()||mouseEvent.target.type!==12||mouseEvent.target.detail!==this._stickyScrollWidget.getId())return null;const mouseTargetElement=mouseEvent.target.element;if(!mouseTargetElement||mouseTargetElement.innerText!==mouseTargetElement.innerHTML)return null;const position=this._stickyScrollWidget.getEditorPositionFromNode(mouseTargetElement);return position?{range:new Range$5(position.lineNumber,position.column,position.lineNumber,position.column+mouseTargetElement.innerText.length),textElement:mouseTargetElement}:null},"getMouseEventTarget"),stickyScrollWidgetDomNode=this._stickyScrollWidget.getDomNode();this._register(addStandardDisposableListener(stickyScrollWidgetDomNode,EventType$1.CLICK,mouseEvent=>{if(mouseEvent.ctrlKey||mouseEvent.altKey||mouseEvent.metaKey||!mouseEvent.leftButton)return;if(mouseEvent.shiftKey){const lineIndex=this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);if(lineIndex===null)return;const position2=new Position$4(this._endLineNumbers[lineIndex],1);this._revealLineInCenterIfOutsideViewport(position2);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(mouseEvent.target)){const lineNumber=this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);this._toggleFoldingRegionForLine(lineNumber);return}if(!this._stickyScrollWidget.isInStickyLine(mouseEvent.target))return;let position=this._stickyScrollWidget.getEditorPositionFromNode(mouseEvent.target);if(!position){const lineNumber=this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);if(lineNumber===null)return;position=new Position$4(lineNumber,1)}this._revealPosition(position)})),this._register(addStandardDisposableListener(stickyScrollWidgetDomNode,EventType$1.MOUSE_MOVE,mouseEvent=>{if(mouseEvent.shiftKey){const currentEndForLineIndex=this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);if(currentEndForLineIndex===null||this._showEndForLine!==null&&this._showEndForLine===currentEndForLineIndex)return;this._showEndForLine=currentEndForLineIndex,this._renderStickyScroll();return}this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(addDisposableListener(stickyScrollWidgetDomNode,EventType$1.MOUSE_LEAVE,e=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(gesture.onMouseMoveOrRelevantKeyDown(([mouseEvent,_keyboardEvent])=>{const mouseTarget=getMouseEventTarget(mouseEvent);if(!mouseTarget||!mouseEvent.hasTriggerModifier||!this._editor.hasModel()){sessionStore.clear();return}const{range:range2,textElement}=mouseTarget;if(!range2.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=range2,sessionStore.clear();else if(textElement.style.textDecoration==="underline")return;const cancellationToken=new CancellationTokenSource$1;sessionStore.add(toDisposable(()=>cancellationToken.dispose(!0)));let currentHTMLChild;getDefinitionsAtPosition(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new Position$4(range2.startLineNumber,range2.startColumn+1),!1,cancellationToken.token).then(candidateDefinitions=>{if(!cancellationToken.token.isCancellationRequested)if(candidateDefinitions.length!==0){this._candidateDefinitionsLength=candidateDefinitions.length;const childHTML=textElement;currentHTMLChild!==childHTML?(sessionStore.clear(),currentHTMLChild=childHTML,currentHTMLChild.style.textDecoration="underline",sessionStore.add(toDisposable(()=>{currentHTMLChild.style.textDecoration="none"}))):currentHTMLChild||(currentHTMLChild=childHTML,currentHTMLChild.style.textDecoration="underline",sessionStore.add(toDisposable(()=>{currentHTMLChild.style.textDecoration="none"})))}else sessionStore.clear()})})),this._register(gesture.onCancel(()=>{sessionStore.clear()})),this._register(gesture.onExecute(async e=>{if(e.target.type!==12||e.target.detail!==this._stickyScrollWidget.getId())return;const position=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);position&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:position.lineNumber,column:1})),this._instaService.invokeFunction(goToDefinitionWithLocation,e,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(targetWindow,e){const event=new StandardMouseEvent(targetWindow,e);this._contextMenuService.showContextMenu({menuId:MenuId.StickyScrollContext,getAnchor:__name(()=>event,"getAnchor")})}_toggleFoldingRegionForLine(line){if(!this._foldingModel||line===null)return;const stickyLine=this._stickyScrollWidget.getRenderedStickyLine(line),foldingIcon=stickyLine==null?void 0:stickyLine.foldingIcon;if(!foldingIcon)return;toggleCollapseState(this._foldingModel,Number.MAX_VALUE,[line]),foldingIcon.isCollapsed=!foldingIcon.isCollapsed;const scrollTop=(foldingIcon.isCollapsed?this._editor.getTopForLineNumber(foldingIcon.foldingEndLine):this._editor.getTopForLineNumber(foldingIcon.foldingStartLine))-this._editor.getOption(67)*stickyLine.index+1;this._editor.setScrollTop(scrollTop),this._renderStickyScroll(line)}_readConfiguration(){const options=this._editor.getOption(116);if(options.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else options.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(68).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(event){(event.hasChanged(116)||event.hasChanged(73)||event.hasChanged(67)||event.hasChanged(111)||event.hasChanged(68))&&this._readConfiguration(),event.hasChanged(68)&&this._renderStickyScroll(0)}_needsUpdate(event){const stickyLineNumbers=this._stickyScrollWidget.getCurrentLines();for(const stickyLineNumber of stickyLineNumbers)for(const range2 of event.ranges)if(stickyLineNumber>=range2.fromLineNumber&&stickyLineNumber<=range2.toLineNumber)return!0;return!1}_onTokensChange(event){this._needsUpdate(event)&&this._renderStickyScroll(0)}_onDidResize(){const theoreticalLines=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(theoreticalLines*.25)}async _renderStickyScroll(rebuildFromLine){const model=this._editor.getModel();if(!model||model.isTooLargeForTokenization()){this._resetState();return}const nextRebuildFromLine=this._updateAndGetMinRebuildFromLine(rebuildFromLine),stickyWidgetVersion=this._stickyLineCandidateProvider.getVersionId();if(stickyWidgetVersion===void 0||stickyWidgetVersion===model.getVersionId())if(!this._focused)await this._updateState(nextRebuildFromLine);else if(this._focusedStickyElementIndex===-1)await this._updateState(nextRebuildFromLine),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const focusedStickyElementLineNumber=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(nextRebuildFromLine),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(focusedStickyElementLineNumber)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(rebuildFromLine){if(rebuildFromLine!==void 0){const minRebuildFromLineOrInfinity=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(rebuildFromLine,minRebuildFromLineOrInfinity)}return this._minRebuildFromLine}async _updateState(rebuildFromLine){var _a3,_b3;this._minRebuildFromLine=void 0,this._foldingModel=(_b3=await((_a3=FoldingController.get(this._editor))==null?void 0:_a3.getFoldingModel()))!=null?_b3:void 0,this._widgetState=this.findScrollWidgetState();const stickyWidgetHasLines=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(stickyWidgetHasLines),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,rebuildFromLine)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=StickyScrollWidgetState.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const lineHeight=this._editor.getOption(67),maxNumberStickyLines=Math.min(this._maxStickyLines,this._editor.getOption(116).maxLineCount),scrollTop=this._editor.getScrollTop();let lastLineRelativePosition=0;const startLineNumbers=[],endLineNumbers=[],arrayVisibleRanges=this._editor.getVisibleRanges();if(arrayVisibleRanges.length!==0){const fullVisibleRange=new StickyRange(arrayVisibleRanges[0].startLineNumber,arrayVisibleRanges[arrayVisibleRanges.length-1].endLineNumber),candidateRanges=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(fullVisibleRange);for(const range2 of candidateRanges){const start=range2.startLineNumber,end=range2.endLineNumber,depth=range2.nestingDepth;if(end-start>0){const topOfElementAtDepth=(depth-1)*lineHeight,bottomOfElementAtDepth=depth*lineHeight,bottomOfBeginningLine=this._editor.getBottomForLineNumber(start)-scrollTop,topOfEndLine=this._editor.getTopForLineNumber(end)-scrollTop,bottomOfEndLine=this._editor.getBottomForLineNumber(end)-scrollTop;if(topOfElementAtDepth>topOfEndLine&&topOfElementAtDepth<=bottomOfEndLine){startLineNumbers.push(start),endLineNumbers.push(end+1),lastLineRelativePosition=bottomOfEndLine-bottomOfElementAtDepth;break}else bottomOfElementAtDepth>bottomOfBeginningLine&&bottomOfElementAtDepth<=bottomOfEndLine&&(startLineNumbers.push(start),endLineNumbers.push(end+1));if(startLineNumbers.length===maxNumberStickyLines)break}}}return this._endLineNumbers=endLineNumbers,new StickyScrollWidgetState(startLineNumbers,endLineNumbers,lastLineRelativePosition,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},__name(_ke,"StickyScrollController"),StickyScrollController_1=_ke,_ke.ID="store.contrib.stickyScrollController",_ke);StickyScrollController=StickyScrollController_1=__decorate$g([__param$g(1,IContextMenuService),__param$g(2,ILanguageFeaturesService),__param$g(3,IInstantiationService),__param$g(4,ILanguageConfigurationService),__param$g(5,ILanguageFeatureDebounceService),__param$g(6,IContextKeyService)],StickyScrollController);const _ToggleStickyScroll=class _ToggleStickyScroll extends Action2{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...localize2("toggleEditorStickyScroll","Toggle Editor Sticky Scroll"),mnemonicTitle:localize({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Editor Sticky Scroll")},metadata:{description:localize2("toggleEditorStickyScroll.description","Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:Categories.View,toggled:{condition:ContextKeyExpr.equals("config.editor.stickyScroll.enabled",!0),title:localize("stickyScroll","Sticky Scroll"),mnemonicTitle:localize({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:MenuId.CommandPalette},{id:MenuId.MenubarAppearanceMenu,group:"4_editor",order:3},{id:MenuId.StickyScrollContext}]})}async run(accessor){const configurationService=accessor.get(IConfigurationService),newValue=!configurationService.getValue("editor.stickyScroll.enabled");return configurationService.updateValue("editor.stickyScroll.enabled",newValue)}};__name(_ToggleStickyScroll,"ToggleStickyScroll");let ToggleStickyScroll=_ToggleStickyScroll;const weight=100,_FocusStickyScroll=class _FocusStickyScroll extends EditorAction2{constructor(){super({id:"editor.action.focusStickyScroll",title:{...localize2("focusStickyScroll","Focus on the editor sticky scroll"),mnemonicTitle:localize({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll")},precondition:ContextKeyExpr.and(ContextKeyExpr.has("config.editor.stickyScroll.enabled"),EditorContextKeys.stickyScrollVisible),menu:[{id:MenuId.CommandPalette}]})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focus()}};__name(_FocusStickyScroll,"FocusStickyScroll");let FocusStickyScroll=_FocusStickyScroll;const _SelectNextStickyScrollLine=class _SelectNextStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:localize2("selectNextStickyScrollLine.title","Select the next editor sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:18}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focusNext()}};__name(_SelectNextStickyScrollLine,"SelectNextStickyScrollLine");let SelectNextStickyScrollLine=_SelectNextStickyScrollLine;const _SelectPreviousStickyScrollLine=class _SelectPreviousStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:localize2("selectPreviousStickyScrollLine.title","Select the previous sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:16}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focusPrevious()}};__name(_SelectPreviousStickyScrollLine,"SelectPreviousStickyScrollLine");let SelectPreviousStickyScrollLine=_SelectPreviousStickyScrollLine;const _GoToStickyScrollLine=class _GoToStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:localize2("goToFocusedStickyScrollLine.title","Go to the focused sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:3}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.goToFocused()}};__name(_GoToStickyScrollLine,"GoToStickyScrollLine");let GoToStickyScrollLine=_GoToStickyScrollLine;const _SelectEditor=class _SelectEditor extends EditorAction2{constructor(){super({id:"editor.action.selectEditor",title:localize2("selectEditor.title","Select Editor"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:9}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.selectEditor()}};__name(_SelectEditor,"SelectEditor");let SelectEditor=_SelectEditor;registerEditorContribution(StickyScrollController.ID,StickyScrollController,1),registerAction2(ToggleStickyScroll),registerAction2(FocusStickyScroll),registerAction2(SelectPreviousStickyScrollLine),registerAction2(SelectNextStickyScrollLine),registerAction2(GoToStickyScrollLine),registerAction2(SelectEditor);var __decorate$f=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$f=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _SuggestInlineCompletion=class _SuggestInlineCompletion{constructor(range2,insertText,filterText,additionalTextEdits,command,completion){this.range=range2,this.insertText=insertText,this.filterText=filterText,this.additionalTextEdits=additionalTextEdits,this.command=command,this.completion=completion}};__name(_SuggestInlineCompletion,"SuggestInlineCompletion");let SuggestInlineCompletion=_SuggestInlineCompletion,InlineCompletionResults=(_le=class extends RefCountedDisposable{constructor(model,line,word,completionModel,completions,_suggestMemoryService){super(completions.disposable),this.model=model,this.line=line,this.word=word,this.completionModel=completionModel,this._suggestMemoryService=_suggestMemoryService}canBeReused(model,line,word){return this.model===model&&this.line===line&&this.word.word.length>0&&this.word.startColumn===word.startColumn&&this.word.endColumn<word.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){var _a3;const result=[],{items}=this.completionModel,selectedIndex=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},items),first2=Iterable.slice(items,selectedIndex),second=Iterable.slice(items,0,selectedIndex);let resolveCount=5;for(const item of Iterable.concat(first2,second)){if(item.score===FuzzyScore.Default)continue;const range2=new Range$5(item.editStart.lineNumber,item.editStart.column,item.editInsertEnd.lineNumber,item.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),insertText=item.completion.insertTextRules&&item.completion.insertTextRules&4?{snippet:item.completion.insertText}:item.completion.insertText;result.push(new SuggestInlineCompletion(range2,insertText,(_a3=item.filterTextLow)!=null?_a3:item.labelLow,item.completion.additionalTextEdits,item.completion.command,item)),resolveCount-->=0&&item.resolve(CancellationToken.None)}return result}},__name(_le,"InlineCompletionResults"),_le);InlineCompletionResults=__decorate$f([__param$f(5,ISuggestMemoryService)],InlineCompletionResults);let SuggestInlineCompletions=(_me=class extends Disposable{constructor(_languageFeatureService,_clipboardService,_suggestMemoryService,_editorService){super(),this._languageFeatureService=_languageFeatureService,this._clipboardService=_clipboardService,this._suggestMemoryService=_suggestMemoryService,this._editorService=_editorService,this._store.add(_languageFeatureService.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(model,position,context,token){var _a3;if(context.selectedSuggestionInfo)return;let editor2;for(const candidate of this._editorService.listCodeEditors())if(candidate.getModel()===model){editor2=candidate;break}if(!editor2)return;const config=editor2.getOption(90);if(QuickSuggestionsOptions.isAllOff(config))return;model.tokenization.tokenizeIfCheap(position.lineNumber);const lineTokens=model.tokenization.getLineTokens(position.lineNumber),tokenType=lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(position.column-1-1,0)));if(QuickSuggestionsOptions.valueFor(config,tokenType)!=="inline")return;let wordInfo=model.getWordAtPosition(position),triggerCharacterInfo;if(wordInfo!=null&&wordInfo.word||(triggerCharacterInfo=this._getTriggerCharacterInfo(model,position)),!(wordInfo!=null&&wordInfo.word)&&!triggerCharacterInfo||(wordInfo||(wordInfo=model.getWordUntilPosition(position)),wordInfo.endColumn!==position.column))return;let result;const leadingLineContents=model.getValueInRange(new Range$5(position.lineNumber,1,position.lineNumber,position.column));if(!triggerCharacterInfo&&((_a3=this._lastResult)!=null&&_a3.canBeReused(model,position.lineNumber,wordInfo))){const newLineContext=new LineContext$1(leadingLineContents,position.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=newLineContext,this._lastResult.acquire(),result=this._lastResult}else{const completions=await provideSuggestionItems(this._languageFeatureService.completionProvider,model,position,new CompletionOptions(void 0,SuggestModel.createSuggestFilter(editor2).itemKind,triggerCharacterInfo==null?void 0:triggerCharacterInfo.providers),triggerCharacterInfo&&{triggerKind:1,triggerCharacter:triggerCharacterInfo.ch},token);let clipboardText;completions.needsClipboard&&(clipboardText=await this._clipboardService.readText());const completionModel=new CompletionModel(completions.items,position.column,new LineContext$1(leadingLineContents,0),WordDistance.None,editor2.getOption(119),editor2.getOption(113),{boostFullMatch:!1,firstMatchCanBeWeak:!1},clipboardText);result=new InlineCompletionResults(model,position.lineNumber,wordInfo,completionModel,completions,this._suggestMemoryService)}return this._lastResult=result,result}handleItemDidShow(_completions,item){item.completion.resolve(CancellationToken.None)}freeInlineCompletions(result){result.release()}_getTriggerCharacterInfo(model,position){var _a3;const ch=model.getValueInRange(Range$5.fromPositions({lineNumber:position.lineNumber,column:position.column-1},position)),providers=new Set;for(const provider of this._languageFeatureService.completionProvider.all(model))(_a3=provider.triggerCharacters)!=null&&_a3.includes(ch)&&providers.add(provider);if(providers.size!==0)return{providers,ch}}},__name(_me,"SuggestInlineCompletions"),_me);SuggestInlineCompletions=__decorate$f([__param$f(0,ILanguageFeaturesService),__param$f(1,IClipboardService),__param$f(2,ISuggestMemoryService),__param$f(3,ICodeEditorService)],SuggestInlineCompletions),registerEditorFeature(SuggestInlineCompletions);const _ForceRetokenizeAction=class _ForceRetokenizeAction extends EditorAction{constructor(){super({id:"editor.action.forceRetokenize",label:localize("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(accessor,editor2){if(!editor2.hasModel())return;const model=editor2.getModel();model.tokenization.resetTokenization();const sw=new StopWatch;model.tokenization.forceTokenization(model.getLineCount()),sw.stop(),console.log(`tokenization took ${sw.elapsed()}`)}};__name(_ForceRetokenizeAction,"ForceRetokenizeAction");let ForceRetokenizeAction=_ForceRetokenizeAction;registerEditorAction(ForceRetokenizeAction);const _ToggleTabFocusModeAction=class _ToggleTabFocusModeAction extends Action2{constructor(){super({id:_ToggleTabFocusModeAction.ID,title:localize2({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:localize2("tabMovesFocusDescriptions","Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const newValue=!TabFocus.getTabFocusMode();TabFocus.setTabFocusMode(newValue),alert(newValue?localize("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element"):localize("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}};__name(_ToggleTabFocusModeAction,"ToggleTabFocusModeAction"),_ToggleTabFocusModeAction.ID="editor.action.toggleTabFocusMode";let ToggleTabFocusModeAction=_ToggleTabFocusModeAction;registerAction2(ToggleTabFocusModeAction);var __decorate$e=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$e=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let Link=(_ne=class extends Disposable{get enabled(){return this._enabled}set enabled(enabled){enabled?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=enabled}constructor(container,_link,options={},_hoverService,openerService){var _a3,_b3;super(),this._link=_link,this._hoverService=_hoverService,this._enabled=!0,this.el=append$1(container,$$e("a.monaco-link",{tabIndex:(_a3=_link.tabIndex)!=null?_a3:0,href:_link.href},_link.label)),this.hoverDelegate=(_b3=options.hoverDelegate)!=null?_b3:getDefaultHoverDelegate("mouse"),this.setTooltip(_link.title),this.el.setAttribute("role","button");const onClickEmitter=this._register(new DomEmitter(this.el,"click")),onKeyPress=this._register(new DomEmitter(this.el,"keypress")),onEnterPress=Event.chain(onKeyPress.event,$2=>$2.map(e=>new StandardKeyboardEvent(e)).filter(e=>e.keyCode===3)),onTap=this._register(new DomEmitter(this.el,EventType.Tap)).event;this._register(Gesture.addTarget(this.el));const onOpen=Event.any(onClickEmitter.event,onEnterPress,onTap);this._register(onOpen(e=>{this.enabled&&(EventHelper.stop(e,!0),options!=null&&options.opener?options.opener(this._link.href):openerService.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}setTooltip(title){this.hoverDelegate.showNativeHover?this.el.title=title!=null?title:"":!this.hover&&title?this.hover=this._register(this._hoverService.setupManagedHover(this.hoverDelegate,this.el,title)):this.hover&&this.hover.update(title)}},__name(_ne,"Link"),_ne);Link=__decorate$e([__param$e(3,IHoverService),__param$e(4,IOpenerService)],Link);var __decorate$d=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$d=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const BANNER_ELEMENT_HEIGHT=26;let BannerController=(_oe=class extends Disposable{constructor(_editor,instantiationService){super(),this._editor=_editor,this.instantiationService=instantiationService,this.banner=this._register(this.instantiationService.createInstance(Banner))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(item){this.banner.show({...item,onClose:__name(()=>{var _a3;this.hide(),(_a3=item.onClose)==null||_a3.call(item)},"onClose")}),this._editor.setBanner(this.banner.element,BANNER_ELEMENT_HEIGHT)}},__name(_oe,"BannerController"),_oe);BannerController=__decorate$d([__param$d(1,IInstantiationService)],BannerController);let Banner=(_pe=class extends Disposable{constructor(instantiationService){super(),this.instantiationService=instantiationService,this.markdownRenderer=this.instantiationService.createInstance(MarkdownRenderer,{}),this.element=$$e("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(item){if(item.ariaLabel)return item.ariaLabel;if(typeof item.message=="string")return item.message}getBannerMessage(message){if(typeof message=="string"){const element=$$e("span");return element.innerText=message,element}return this.markdownRenderer.render(message).element}clear(){clearNode(this.element)}show(item){clearNode(this.element);const ariaLabel=this.getAriaLabel(item);ariaLabel&&this.element.setAttribute("aria-label",ariaLabel);const iconContainer=append$1(this.element,$$e("div.icon-container"));iconContainer.setAttribute("aria-hidden","true"),item.icon&&iconContainer.appendChild($$e(`div${ThemeIcon.asCSSSelector(item.icon)}`));const messageContainer=append$1(this.element,$$e("div.message-container"));if(messageContainer.setAttribute("aria-hidden","true"),messageContainer.appendChild(this.getBannerMessage(item.message)),this.messageActionsContainer=append$1(this.element,$$e("div.message-actions-container")),item.actions)for(const action of item.actions)this._register(this.instantiationService.createInstance(Link,this.messageActionsContainer,{...action,tabIndex:-1},{}));const actionBarContainer=append$1(this.element,$$e("div.action-container"));this.actionBar=this._register(new ActionBar(actionBarContainer)),this.actionBar.push(this._register(new Action("banner.close","Close Banner",ThemeIcon.asClassName(widgetClose),!0,()=>{typeof item.onClose=="function"&&item.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}},__name(_pe,"Banner"),_pe);Banner=__decorate$d([__param$d(0,IInstantiationService)],Banner);var __decorate$c=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$c=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const warningIcon=registerIcon("extensions-warning-message",Codicon.warning,localize("warningIcon","Icon shown with a warning message in the extensions editor."));let UnicodeHighlighter=(_qe=class extends Disposable{constructor(_editor,_editorWorkerService,_workspaceTrustService,instantiationService){super(),this._editor=_editor,this._editorWorkerService=_editorWorkerService,this._workspaceTrustService=_workspaceTrustService,this._highlighter=null,this._bannerClosed=!1,this._updateState=state=>{if(state&&state.hasMore){if(this._bannerClosed)return;const max=Math.max(state.ambiguousCharacterCount,state.nonBasicAsciiCharacterCount,state.invisibleCharacterCount);let data;if(state.nonBasicAsciiCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new DisableHighlightingOfNonBasicAsciiCharactersAction};else if(state.ambiguousCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new DisableHighlightingOfAmbiguousCharactersAction};else if(state.invisibleCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new DisableHighlightingOfInvisibleCharactersAction};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:data.message,icon:warningIcon,actions:[{label:data.command.shortLabel,href:`command:${data.command.id}`}],onClose:__name(()=>{this._bannerClosed=!0},"onClose")})}else this._bannerController.hide()},this._bannerController=this._register(instantiationService.createInstance(BannerController,_editor)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=_editor.getOption(126),this._register(_workspaceTrustService.onDidChangeTrust(e=>{this._updateHighlighter()})),this._register(_editor.onDidChangeConfiguration(e=>{e.hasChanged(126)&&(this._options=_editor.getOption(126),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const options=resolveOptions(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([options.nonBasicASCII,options.ambiguousCharacters,options.invisibleCharacters].every(option=>option===!1))return;const highlightOptions={nonBasicASCII:options.nonBasicASCII,ambiguousCharacters:options.ambiguousCharacters,invisibleCharacters:options.invisibleCharacters,includeComments:options.includeComments,includeStrings:options.includeStrings,allowedCodePoints:Object.keys(options.allowedCharacters).map(c=>c.codePointAt(0)),allowedLocales:Object.keys(options.allowedLocales).map(locale=>locale==="_os"?new Intl.NumberFormat().resolvedOptions().locale:locale==="_vscode"?language$1g:locale)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new DocumentUnicodeHighlighter(this._editor,highlightOptions,this._updateState,this._editorWorkerService):this._highlighter=new ViewportUnicodeHighlighter(this._editor,highlightOptions,this._updateState)}getDecorationInfo(decoration2){return this._highlighter?this._highlighter.getDecorationInfo(decoration2):null}},__name(_qe,"UnicodeHighlighter"),_qe.ID="editor.contrib.unicodeHighlighter",_qe);UnicodeHighlighter=__decorate$c([__param$c(1,IEditorWorkerService),__param$c(2,IWorkspaceTrustManagementService),__param$c(3,IInstantiationService)],UnicodeHighlighter);function resolveOptions(trusted,options){return{nonBasicASCII:options.nonBasicASCII===inUntrustedWorkspace?!trusted:options.nonBasicASCII,ambiguousCharacters:options.ambiguousCharacters,invisibleCharacters:options.invisibleCharacters,includeComments:options.includeComments===inUntrustedWorkspace?!trusted:options.includeComments,includeStrings:options.includeStrings===inUntrustedWorkspace?!trusted:options.includeStrings,allowedCharacters:options.allowedCharacters,allowedLocales:options.allowedLocales}}__name(resolveOptions,"resolveOptions");let DocumentUnicodeHighlighter=(_re=class extends Disposable{constructor(_editor,_options,_updateState,_editorWorkerService){super(),this._editor=_editor,this._options=_options,this._updateState=_updateState,this._editorWorkerService=_editorWorkerService,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const modelVersionId=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(info=>{if(this._model.isDisposed()||this._model.getVersionId()!==modelVersionId)return;this._updateState(info);const decorations=[];if(!info.hasMore)for(const range2 of info.ranges)decorations.push({range:range2,options:Decorations.instance.getDecorationFromOptions(this._options)});this._decorations.set(decorations)})}getDecorationInfo(decoration2){if(!this._decorations.has(decoration2))return null;const model=this._editor.getModel();if(!isModelDecorationVisible(model,decoration2))return null;const text2=model.getValueInRange(decoration2.range);return{reason:computeReason(text2,this._options),inComment:isModelDecorationInComment(model,decoration2),inString:isModelDecorationInString(model,decoration2)}}},__name(_re,"DocumentUnicodeHighlighter"),_re);DocumentUnicodeHighlighter=__decorate$c([__param$c(3,IEditorWorkerService)],DocumentUnicodeHighlighter);const _ViewportUnicodeHighlighter=class _ViewportUnicodeHighlighter extends Disposable{constructor(_editor,_options,_updateState){super(),this._editor=_editor,this._options=_options,this._updateState=_updateState,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const ranges=this._editor.getVisibleRanges(),decorations=[],totalResult={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const range2 of ranges){const result=UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model,this._options,range2);for(const r2 of result.ranges)totalResult.ranges.push(r2);totalResult.ambiguousCharacterCount+=totalResult.ambiguousCharacterCount,totalResult.invisibleCharacterCount+=totalResult.invisibleCharacterCount,totalResult.nonBasicAsciiCharacterCount+=totalResult.nonBasicAsciiCharacterCount,totalResult.hasMore=totalResult.hasMore||result.hasMore}if(!totalResult.hasMore)for(const range2 of totalResult.ranges)decorations.push({range:range2,options:Decorations.instance.getDecorationFromOptions(this._options)});this._updateState(totalResult),this._decorations.set(decorations)}getDecorationInfo(decoration2){if(!this._decorations.has(decoration2))return null;const model=this._editor.getModel(),text2=model.getValueInRange(decoration2.range);return isModelDecorationVisible(model,decoration2)?{reason:computeReason(text2,this._options),inComment:isModelDecorationInComment(model,decoration2),inString:isModelDecorationInString(model,decoration2)}:null}};__name(_ViewportUnicodeHighlighter,"ViewportUnicodeHighlighter");let ViewportUnicodeHighlighter=_ViewportUnicodeHighlighter;const configureUnicodeHighlightOptionsStr=localize("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options");let UnicodeHighlighterHoverParticipant=(_se=class{constructor(_editor,_languageService,_openerService){this._editor=_editor,this._languageService=_languageService,this._openerService=_openerService,this.hoverOrdinal=5}computeSync(anchor,lineDecorations){if(!this._editor.hasModel()||anchor.type!==1)return[];const model=this._editor.getModel(),unicodeHighlighter=this._editor.getContribution(UnicodeHighlighter.ID);if(!unicodeHighlighter)return[];const result=[],existedReason=new Set;let index=300;for(const d of lineDecorations){const highlightInfo=unicodeHighlighter.getDecorationInfo(d);if(!highlightInfo)continue;const codePoint=model.getValueInRange(d.range).codePointAt(0),codePointStr=formatCodePointMarkdown(codePoint);let reason;switch(highlightInfo.reason.kind){case 0:{isBasicASCII(highlightInfo.reason.confusableWith)?reason=localize("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",codePointStr,formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0))):reason=localize("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",codePointStr,formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0)));break}case 1:reason=localize("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",codePointStr);break;case 2:reason=localize("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",codePointStr);break}if(existedReason.has(reason))continue;existedReason.add(reason);const adjustSettingsArgs={codePoint,reason:highlightInfo.reason,inComment:highlightInfo.inComment,inString:highlightInfo.inString},adjustSettings=localize("unicodeHighlight.adjustSettings","Adjust settings"),uri=`command:${ShowExcludeOptions.ID}?${encodeURIComponent(JSON.stringify(adjustSettingsArgs))}`,markdown2=new MarkdownString("",!0).appendMarkdown(reason).appendText(" ").appendLink(uri,adjustSettings,configureUnicodeHighlightOptionsStr);result.push(new MarkdownHover(this,d.range,[markdown2],!1,index++))}return result}renderHoverParts(context,hoverParts){return renderMarkdownHovers(context,hoverParts,this._editor,this._languageService,this._openerService)}},__name(_se,"UnicodeHighlighterHoverParticipant"),_se);UnicodeHighlighterHoverParticipant=__decorate$c([__param$c(1,ILanguageService),__param$c(2,IOpenerService)],UnicodeHighlighterHoverParticipant);function codePointToHex(codePoint){return`U+${codePoint.toString(16).padStart(4,"0")}`}__name(codePointToHex,"codePointToHex");function formatCodePointMarkdown(codePoint){let value=`\`${codePointToHex(codePoint)}\``;return InvisibleCharacters.isInvisibleCharacter(codePoint)||(value+=` "${`${renderCodePointAsInlineCode(codePoint)}`}"`),value}__name(formatCodePointMarkdown,"formatCodePointMarkdown");function renderCodePointAsInlineCode(codePoint){return codePoint===96?"`` ` ``":"`"+String.fromCodePoint(codePoint)+"`"}__name(renderCodePointAsInlineCode,"renderCodePointAsInlineCode");function computeReason(char,options){return UnicodeTextModelHighlighter.computeUnicodeHighlightReason(char,options)}__name(computeReason,"computeReason");const _Decorations=class _Decorations{constructor(){this.map=new Map}getDecorationFromOptions(options){return this.getDecoration(!options.includeComments,!options.includeStrings)}getDecoration(hideInComments,hideInStrings){const key=`${hideInComments}${hideInStrings}`;let options=this.map.get(key);return options||(options=ModelDecorationOptions.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:hideInComments,hideInStringTokens:hideInStrings}),this.map.set(key,options)),options}};__name(_Decorations,"Decorations"),_Decorations.instance=new _Decorations;let Decorations=_Decorations;const _DisableHighlightingInCommentsAction=class _DisableHighlightingInCommentsAction extends EditorAction{constructor(){super({id:DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.includeComments,!1,2)}};__name(_DisableHighlightingInCommentsAction,"DisableHighlightingInCommentsAction");let DisableHighlightingInCommentsAction=_DisableHighlightingInCommentsAction;const _DisableHighlightingInStringsAction=class _DisableHighlightingInStringsAction extends EditorAction{constructor(){super({id:DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.includeStrings,!1,2)}};__name(_DisableHighlightingInStringsAction,"DisableHighlightingInStringsAction");let DisableHighlightingInStringsAction=_DisableHighlightingInStringsAction;const _DisableHighlightingOfAmbiguousCharactersAction=class _DisableHighlightingOfAmbiguousCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.ambiguousCharacters,!1,2)}};__name(_DisableHighlightingOfAmbiguousCharactersAction,"DisableHighlightingOfAmbiguousCharactersAction"),_DisableHighlightingOfAmbiguousCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";let DisableHighlightingOfAmbiguousCharactersAction=_DisableHighlightingOfAmbiguousCharactersAction;const _DisableHighlightingOfInvisibleCharactersAction=class _DisableHighlightingOfInvisibleCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfInvisibleCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.invisibleCharacters,!1,2)}};__name(_DisableHighlightingOfInvisibleCharactersAction,"DisableHighlightingOfInvisibleCharactersAction"),_DisableHighlightingOfInvisibleCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";let DisableHighlightingOfInvisibleCharactersAction=_DisableHighlightingOfInvisibleCharactersAction;const _DisableHighlightingOfNonBasicAsciiCharactersAction=class _DisableHighlightingOfNonBasicAsciiCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfNonBasicAsciiCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.nonBasicASCII,!1,2)}};__name(_DisableHighlightingOfNonBasicAsciiCharactersAction,"DisableHighlightingOfNonBasicAsciiCharactersAction"),_DisableHighlightingOfNonBasicAsciiCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";let DisableHighlightingOfNonBasicAsciiCharactersAction=_DisableHighlightingOfNonBasicAsciiCharactersAction;const _ShowExcludeOptions=class _ShowExcludeOptions extends EditorAction{constructor(){super({id:_ShowExcludeOptions.ID,label:localize("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(accessor,editor2,args){const{codePoint,reason,inString,inComment}=args,char=String.fromCodePoint(codePoint),quickPickService=accessor.get(IQuickInputService),configurationService=accessor.get(IConfigurationService);function getExcludeCharFromBeingHighlightedLabel(codePoint2){return InvisibleCharacters.isInvisibleCharacter(codePoint2)?localize("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",codePointToHex(codePoint2)):localize("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${codePointToHex(codePoint2)} "${char}"`)}__name(getExcludeCharFromBeingHighlightedLabel,"getExcludeCharFromBeingHighlightedLabel");const options=[];if(reason.kind===0)for(const locale of reason.notAmbiguousInLocales)options.push({label:localize("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',locale),run:__name(async()=>{excludeLocaleFromBeingHighlighted(configurationService,[locale])},"run")});if(options.push({label:getExcludeCharFromBeingHighlightedLabel(codePoint),run:__name(()=>excludeCharFromBeingHighlighted(configurationService,[codePoint]),"run")}),inComment){const action=new DisableHighlightingInCommentsAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(inString){const action=new DisableHighlightingInStringsAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}if(reason.kind===0){const action=new DisableHighlightingOfAmbiguousCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(reason.kind===1){const action=new DisableHighlightingOfInvisibleCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(reason.kind===2){const action=new DisableHighlightingOfNonBasicAsciiCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else expectNever(reason);const result=await quickPickService.pick(options,{title:configureUnicodeHighlightOptionsStr});result&&await result.run()}};__name(_ShowExcludeOptions,"ShowExcludeOptions"),_ShowExcludeOptions.ID="editor.action.unicodeHighlight.showExcludeOptions";let ShowExcludeOptions=_ShowExcludeOptions;async function excludeCharFromBeingHighlighted(configurationService,charCodes){const existingValue=configurationService.getValue(unicodeHighlightConfigKeys.allowedCharacters);let value;typeof existingValue=="object"&&existingValue?value=existingValue:value={};for(const charCode of charCodes)value[String.fromCodePoint(charCode)]=!0;await configurationService.updateValue(unicodeHighlightConfigKeys.allowedCharacters,value,2)}__name(excludeCharFromBeingHighlighted,"excludeCharFromBeingHighlighted");async function excludeLocaleFromBeingHighlighted(configurationService,locales){var _a3;const existingValue=(_a3=configurationService.inspect(unicodeHighlightConfigKeys.allowedLocales).user)==null?void 0:_a3.value;let value;typeof existingValue=="object"&&existingValue?value=Object.assign({},existingValue):value={};for(const locale of locales)value[locale]=!0;await configurationService.updateValue(unicodeHighlightConfigKeys.allowedLocales,value,2)}__name(excludeLocaleFromBeingHighlighted,"excludeLocaleFromBeingHighlighted");function expectNever(value){throw new Error(`Unexpected value: ${value}`)}__name(expectNever,"expectNever"),registerEditorAction(DisableHighlightingOfAmbiguousCharactersAction),registerEditorAction(DisableHighlightingOfInvisibleCharactersAction),registerEditorAction(DisableHighlightingOfNonBasicAsciiCharactersAction),registerEditorAction(ShowExcludeOptions),registerEditorContribution(UnicodeHighlighter.ID,UnicodeHighlighter,1),HoverParticipantRegistry.register(UnicodeHighlighterHoverParticipant);var __decorate$b=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$b=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const ignoreUnusualLineTerminators="ignoreUnusualLineTerminators";function writeIgnoreState(codeEditorService,model,state){codeEditorService.setModelProperty(model.uri,ignoreUnusualLineTerminators,state)}__name(writeIgnoreState,"writeIgnoreState");function readIgnoreState(codeEditorService,model){return codeEditorService.getModelProperty(model.uri,ignoreUnusualLineTerminators)}__name(readIgnoreState,"readIgnoreState");let UnusualLineTerminatorsDetector=(_te=class extends Disposable{constructor(_editor,_dialogService,_codeEditorService){super(),this._editor=_editor,this._dialogService=_dialogService,this._codeEditorService=_codeEditorService,this._isPresentingDialog=!1,this._config=this._editor.getOption(127),this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(127)&&(this._config=this._editor.getOption(127),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(e=>{e.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const model=this._editor.getModel();if(!model.mightContainUnusualLineTerminators()||readIgnoreState(this._codeEditorService,model)===!0||this._editor.getOption(92))return;if(this._config==="auto"){model.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let result;try{this._isPresentingDialog=!0,result=await this._dialogService.confirm({title:localize("unusualLineTerminators.title","Unusual Line Terminators"),message:localize("unusualLineTerminators.message","Detected unusual line terminators"),detail:localize("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",basename(model.uri)),primaryButton:localize({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:localize("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}if(!result.confirmed){writeIgnoreState(this._codeEditorService,model,!0);return}model.removeUnusualLineTerminators(this._editor.getSelections())}},__name(_te,"UnusualLineTerminatorsDetector"),_te.ID="editor.contrib.unusualLineTerminatorsDetector",_te);UnusualLineTerminatorsDetector=__decorate$b([__param$b(1,IDialogService),__param$b(2,ICodeEditorService)],UnusualLineTerminatorsDetector),registerEditorContribution(UnusualLineTerminatorsDetector.ID,UnusualLineTerminatorsDetector,1);var __decorate$a=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$a=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _TextualDocumentHighlightProvider=class _TextualDocumentHighlightProvider{constructor(){this.selector={language:"*"}}provideDocumentHighlights(model,position,token){const result=[],word=model.getWordAtPosition({lineNumber:position.lineNumber,column:position.column});return word?model.isDisposed()?void 0:model.findMatches(word.word,!0,!1,!0,USUAL_WORD_SEPARATORS,!1).map(m2=>({range:m2.range,kind:DocumentHighlightKind$4.Text})):Promise.resolve(result)}provideMultiDocumentHighlights(primaryModel,position,otherModels,token){const result=new ResourceMap,word=primaryModel.getWordAtPosition({lineNumber:position.lineNumber,column:position.column});if(!word)return Promise.resolve(result);for(const model of[primaryModel,...otherModels]){if(model.isDisposed())continue;const highlights=model.findMatches(word.word,!0,!1,!0,USUAL_WORD_SEPARATORS,!1).map(m2=>({range:m2.range,kind:DocumentHighlightKind$4.Text}));highlights&&result.set(model.uri,highlights)}return result}};__name(_TextualDocumentHighlightProvider,"TextualDocumentHighlightProvider");let TextualDocumentHighlightProvider=_TextualDocumentHighlightProvider,TextualMultiDocumentHighlightFeature=(_ue=class extends Disposable{constructor(languageFeaturesService){super(),this._register(languageFeaturesService.documentHighlightProvider.register("*",new TextualDocumentHighlightProvider)),this._register(languageFeaturesService.multiDocumentHighlightProvider.register("*",new TextualDocumentHighlightProvider))}},__name(_ue,"TextualMultiDocumentHighlightFeature"),_ue);TextualMultiDocumentHighlightFeature=__decorate$a([__param$a(0,ILanguageFeaturesService)],TextualMultiDocumentHighlightFeature);var __decorate$9=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$9=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},WordHighlighter_1,WordHighlighterContribution_1;const ctxHasWordHighlights=new RawContextKey("hasWordHighlights",!1);function getOccurrencesAtPosition(registry,model,position,token){const orderedByScore=registry.ordered(model);return first(orderedByScore.map(provider=>()=>Promise.resolve(provider.provideDocumentHighlights(model,position,token)).then(void 0,onUnexpectedExternalError)),result=>result!=null).then(result=>{if(result){const map=new ResourceMap;return map.set(model.uri,result),map}return new ResourceMap})}__name(getOccurrencesAtPosition,"getOccurrencesAtPosition");function getOccurrencesAcrossMultipleModels(registry,model,position,wordSeparators2,token,otherModels){const orderedByScore=registry.ordered(model);return first(orderedByScore.map(provider=>()=>{const filteredModels=otherModels.filter(otherModel=>shouldSynchronizeModel(otherModel)).filter(otherModel=>score(provider.selector,otherModel.uri,otherModel.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(provider.provideMultiDocumentHighlights(model,position,filteredModels,token)).then(void 0,onUnexpectedExternalError)}),result=>result!=null)}__name(getOccurrencesAcrossMultipleModels,"getOccurrencesAcrossMultipleModels");const _OccurenceAtPositionRequest=class _OccurenceAtPositionRequest{constructor(_model,_selection,_wordSeparators){this._model=_model,this._selection=_selection,this._wordSeparators=_wordSeparators,this._wordRange=this._getCurrentWordRange(_model,_selection),this._result=null}get result(){return this._result||(this._result=createCancelablePromise(token=>this._compute(this._model,this._selection,this._wordSeparators,token))),this._result}_getCurrentWordRange(model,selection){const word=model.getWordAtPosition(selection.getPosition());return word?new Range$5(selection.startLineNumber,word.startColumn,selection.startLineNumber,word.endColumn):null}isValid(model,selection,decorations){const lineNumber=selection.startLineNumber,startColumn=selection.startColumn,endColumn=selection.endColumn,currentWordRange=this._getCurrentWordRange(model,selection);let requestIsValid=!!(this._wordRange&&this._wordRange.equalsRange(currentWordRange));for(let i=0,len=decorations.length;!requestIsValid&&i<len;i++){const range2=decorations.getRange(i);range2&&range2.startLineNumber===lineNumber&&range2.startColumn<=startColumn&&range2.endColumn>=endColumn&&(requestIsValid=!0)}return requestIsValid}cancel(){this.result.cancel()}};__name(_OccurenceAtPositionRequest,"OccurenceAtPositionRequest");let OccurenceAtPositionRequest=_OccurenceAtPositionRequest;const _SemanticOccurenceAtPositionRequest=class _SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest{constructor(model,selection,wordSeparators2,providers){super(model,selection,wordSeparators2),this._providers=providers}_compute(model,selection,wordSeparators2,token){return getOccurrencesAtPosition(this._providers,model,selection.getPosition(),token).then(value=>value||new ResourceMap)}};__name(_SemanticOccurenceAtPositionRequest,"SemanticOccurenceAtPositionRequest");let SemanticOccurenceAtPositionRequest=_SemanticOccurenceAtPositionRequest;const _MultiModelOccurenceRequest=class _MultiModelOccurenceRequest extends OccurenceAtPositionRequest{constructor(model,selection,wordSeparators2,providers,otherModels){super(model,selection,wordSeparators2),this._providers=providers,this._otherModels=otherModels}_compute(model,selection,wordSeparators2,token){return getOccurrencesAcrossMultipleModels(this._providers,model,selection.getPosition(),wordSeparators2,token,this._otherModels).then(value=>value||new ResourceMap)}};__name(_MultiModelOccurenceRequest,"MultiModelOccurenceRequest");let MultiModelOccurenceRequest=_MultiModelOccurenceRequest;function computeOccurencesAtPosition(registry,model,selection,word,wordSeparators2){return new SemanticOccurenceAtPositionRequest(model,selection,wordSeparators2,registry)}__name(computeOccurencesAtPosition,"computeOccurencesAtPosition");function computeOccurencesMultiModel(registry,model,selection,word,wordSeparators2,otherModels){return new MultiModelOccurenceRequest(model,selection,wordSeparators2,registry,otherModels)}__name(computeOccurencesMultiModel,"computeOccurencesMultiModel"),registerModelAndPositionCommand("_executeDocumentHighlights",async(accessor,model,position)=>{const languageFeaturesService=accessor.get(ILanguageFeaturesService),map=await getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider,model,position,CancellationToken.None);return map==null?void 0:map.get(model.uri)});let WordHighlighter=(_ve=class{constructor(editor2,providers,multiProviders,contextKeyService,codeEditorService){this.toUnhook=new DisposableStore,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new ResourceMap,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.runDelayer=this.toUnhook.add(new Delayer(50)),this.editor=editor2,this.providers=providers,this.multiDocumentProviders=multiProviders,this.codeEditorService=codeEditorService,this._hasWordHighlights=ctxHasWordHighlights.bindTo(contextKeyService),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(editor2.onDidChangeCursorPosition(e=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(e)})})),this.toUnhook.add(editor2.onDidFocusEditorText(e=>{this.occurrencesHighlight!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(editor2.onDidChangeModelContent(e=>{matchesScheme(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(editor2.onDidChangeModel(e=>{!e.newModelUrl&&e.oldModelUrl?this._stopSingular():WordHighlighter_1.query&&this._run()})),this.toUnhook.add(editor2.onDidChangeConfiguration(e=>{var _a3,_b3;const newValue=this.editor.getOption(81);if(this.occurrencesHighlight!==newValue)switch(this.occurrencesHighlight=newValue,newValue){case"off":this._stopAll();break;case"singleFile":this._stopAll((_b3=(_a3=WordHighlighter_1.query)==null?void 0:_a3.modelInfo)==null?void 0:_b3.model);break;case"multiFile":WordHighlighter_1.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",newValue);break}})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,WordHighlighter_1.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&(this.runDelayer.cancel(),this._run())}_getSortedHighlights(){return this.decorations.getRanges().sort(Range$5.compareRangesUsingStarts)}moveNext(){const highlights=this._getSortedHighlights(),newIndex=(highlights.findIndex(range2=>range2.containsPosition(this.editor.getPosition()))+1)%highlights.length,dest=highlights[newIndex];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(dest.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(dest);const word=this._getWord();if(word){const lineContent=this.editor.getModel().getLineContent(dest.startLineNumber);alert(`${lineContent}, ${newIndex+1} of ${highlights.length} for '${word.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const highlights=this._getSortedHighlights(),newIndex=(highlights.findIndex(range2=>range2.containsPosition(this.editor.getPosition()))-1+highlights.length)%highlights.length,dest=highlights[newIndex];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(dest.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(dest);const word=this._getWord();if(word){const lineContent=this.editor.getModel().getLineContent(dest.startLineNumber);alert(`${lineContent}, ${newIndex+1} of ${highlights.length} for '${word.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const currentDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(this.editor.getModel().uri);currentDecorationIDs&&(this.editor.removeDecorations(currentDecorationIDs),WordHighlighter_1.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(preservedModel){const currentEditors=this.codeEditorService.listCodeEditors(),deleteURI=[];for(const editor2 of currentEditors){if(!editor2.hasModel()||isEqual(editor2.getModel().uri,preservedModel==null?void 0:preservedModel.uri))continue;const currentDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(editor2.getModel().uri);if(!currentDecorationIDs)continue;editor2.removeDecorations(currentDecorationIDs),deleteURI.push(editor2.getModel().uri);const editorHighlighterContrib=WordHighlighterContribution.get(editor2);editorHighlighterContrib!=null&&editorHighlighterContrib.wordHighlighter&&editorHighlighterContrib.wordHighlighter.decorations.length>0&&(editorHighlighterContrib.wordHighlighter.decorations.clear(),editorHighlighterContrib.wordHighlighter.workerRequest=null,editorHighlighterContrib.wordHighlighter._hasWordHighlights.set(!1))}for(const uri of deleteURI)WordHighlighter_1.storedDecorationIDs.delete(uri)}_stopSingular(){var _a3,_b3,_c2,_d2;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((_a3=this.editor.getModel())==null?void 0:_a3.uri.scheme)!==Schemas.vscodeNotebookCell&&((_c2=(_b3=WordHighlighter_1.query)==null?void 0:_b3.modelInfo)==null?void 0:_c2.model.uri.scheme)!==Schemas.vscodeNotebookCell?(WordHighlighter_1.query=null,this._run()):(_d2=WordHighlighter_1.query)!=null&&_d2.modelInfo&&(WordHighlighter_1.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(preservedModel){this._removeAllDecorations(preservedModel),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var _a3;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(e.reason!==3&&((_a3=this.editor.getModel())==null?void 0:_a3.uri.scheme)!==Schemas.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const editorSelection=this.editor.getSelection(),lineNumber=editorSelection.startLineNumber,startColumn=editorSelection.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber,column:startColumn})}getOtherModelsToHighlight(model){if(!model)return[];if(model.uri.scheme===Schemas.vscodeNotebookCell){const currentModels2=[],currentEditors2=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors2){const tempModel=editor2.getModel();tempModel&&tempModel!==model&&tempModel.uri.scheme===Schemas.vscodeNotebookCell&&currentModels2.push(tempModel)}return currentModels2}const currentModels=[],currentEditors=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors){if(!isDiffEditor(editor2))continue;const diffModel=editor2.getModel();diffModel&&model===diffModel.modified&&currentModels.push(diffModel.modified)}if(currentModels.length)return currentModels;if(this.occurrencesHighlight==="singleFile")return[];for(const editor2 of currentEditors){const tempModel=editor2.getModel();tempModel&&tempModel!==model&&currentModels.push(tempModel)}return currentModels}_run(multiFileConfigChange){var _a3,_b3;let workerRequestIsValid;if(this.editor.hasTextFocus()){const editorSelection=this.editor.getSelection();if(!editorSelection||editorSelection.startLineNumber!==editorSelection.endLineNumber){WordHighlighter_1.query=null,this._stopAll();return}const startColumn=editorSelection.startColumn,endColumn=editorSelection.endColumn,word=this._getWord();if(!word||word.startColumn>startColumn||word.endColumn<endColumn){WordHighlighter_1.query=null,this._stopAll();return}workerRequestIsValid=this.workerRequest&&this.workerRequest.isValid(this.model,editorSelection,this.decorations),WordHighlighter_1.query={modelInfo:{model:this.model,selection:editorSelection},word}}else if(!WordHighlighter_1.query){this._stopAll();return}if(this.lastCursorPositionChangeTime=new Date().getTime(),workerRequestIsValid)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else if(isEqual(this.editor.getModel().uri,(_a3=WordHighlighter_1.query.modelInfo)==null?void 0:_a3.model.uri)){if(!multiFileConfigChange){const currentModelDecorationRanges=this.decorations.getRanges();for(const storedRange of currentModelDecorationRanges)if(storedRange.containsPosition(this.editor.getPosition()))return}this._stopAll(multiFileConfigChange?this.model:void 0);const myRequestId=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const otherModelsToHighlight=this.getOtherModelsToHighlight(this.editor.getModel());if(!WordHighlighter_1.query||!WordHighlighter_1.query.modelInfo||WordHighlighter_1.query.modelInfo.model.isDisposed())return;this.workerRequest=this.computeWithModel(WordHighlighter_1.query.modelInfo.model,WordHighlighter_1.query.modelInfo.selection,WordHighlighter_1.query.word,otherModelsToHighlight),(_b3=this.workerRequest)==null||_b3.result.then(data=>{myRequestId===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=data||[],this._beginRenderDecorations())},onUnexpectedError)}}computeWithModel(model,selection,word,otherModels){return otherModels.length?computeOccurencesMultiModel(this.multiDocumentProviders,model,selection,word,this.editor.getOption(132),otherModels):computeOccurencesAtPosition(this.providers,model,selection,word,this.editor.getOption(132))}_beginRenderDecorations(){const currentTime=new Date().getTime(),minimumRenderTime=this.lastCursorPositionChangeTime+250;currentTime>=minimumRenderTime?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},minimumRenderTime-currentTime)}renderDecorations(){var _a3,_b3,_c2;this.renderDecorationsTimer=-1;const currentEditors=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors){const editorHighlighterContrib=WordHighlighterContribution.get(editor2);if(!editorHighlighterContrib)continue;const newDecorations=[],uri=(_a3=editor2.getModel())==null?void 0:_a3.uri;if(uri&&this.workerRequestValue.has(uri)){const oldDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(uri),newDocumentHighlights=this.workerRequestValue.get(uri);if(newDocumentHighlights)for(const highlight of newDocumentHighlights)highlight.range&&newDecorations.push({range:highlight.range,options:getHighlightDecorationOptions(highlight.kind)});let newDecorationIDs=[];editor2.changeDecorations(changeAccessor=>{newDecorationIDs=changeAccessor.deltaDecorations(oldDecorationIDs!=null?oldDecorationIDs:[],newDecorations)}),WordHighlighter_1.storedDecorationIDs=WordHighlighter_1.storedDecorationIDs.set(uri,newDecorationIDs),newDecorations.length>0&&((_b3=editorHighlighterContrib.wordHighlighter)==null||_b3.decorations.set(newDecorations),(_c2=editorHighlighterContrib.wordHighlighter)==null||_c2._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}},__name(_ve,"WordHighlighter"),WordHighlighter_1=_ve,_ve.storedDecorationIDs=new ResourceMap,_ve.query=null,_ve);WordHighlighter=WordHighlighter_1=__decorate$9([__param$9(4,ICodeEditorService)],WordHighlighter);let WordHighlighterContribution=(_we=class extends Disposable{static get(editor2){return editor2.getContribution(WordHighlighterContribution_1.ID)}constructor(editor2,contextKeyService,languageFeaturesService,codeEditorService){super(),this._wordHighlighter=null;const createWordHighlighterIfPossible=__name(()=>{editor2.hasModel()&&!editor2.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new WordHighlighter(editor2,languageFeaturesService.documentHighlightProvider,languageFeaturesService.multiDocumentHighlightProvider,contextKeyService,codeEditorService))},"createWordHighlighterIfPossible");this._register(editor2.onDidChangeModel(e=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),createWordHighlighterIfPossible()})),createWordHighlighterIfPossible()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var _a3;(_a3=this._wordHighlighter)==null||_a3.moveNext()}moveBack(){var _a3;(_a3=this._wordHighlighter)==null||_a3.moveBack()}restoreViewState(state){this._wordHighlighter&&state&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},__name(_we,"WordHighlighterContribution"),WordHighlighterContribution_1=_we,_we.ID="editor.contrib.wordHighlighter",_we);WordHighlighterContribution=WordHighlighterContribution_1=__decorate$9([__param$9(1,IContextKeyService),__param$9(2,ILanguageFeaturesService),__param$9(3,ICodeEditorService)],WordHighlighterContribution);const _WordHighlightNavigationAction=class _WordHighlightNavigationAction extends EditorAction{constructor(next,opts){super(opts),this._isNext=next}run(accessor,editor2){const controller=WordHighlighterContribution.get(editor2);controller&&(this._isNext?controller.moveNext():controller.moveBack())}};__name(_WordHighlightNavigationAction,"WordHighlightNavigationAction");let WordHighlightNavigationAction=_WordHighlightNavigationAction;const _NextWordHighlightAction=class _NextWordHighlightAction extends WordHighlightNavigationAction{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:localize("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:ctxHasWordHighlights,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:65,weight:100}})}};__name(_NextWordHighlightAction,"NextWordHighlightAction");let NextWordHighlightAction=_NextWordHighlightAction;const _PrevWordHighlightAction=class _PrevWordHighlightAction extends WordHighlightNavigationAction{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:localize("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:ctxHasWordHighlights,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1089,weight:100}})}};__name(_PrevWordHighlightAction,"PrevWordHighlightAction");let PrevWordHighlightAction=_PrevWordHighlightAction;const _TriggerWordHighlightAction=class _TriggerWordHighlightAction extends EditorAction{constructor(){super({id:"editor.action.wordHighlight.trigger",label:localize("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:0,weight:100}})}run(accessor,editor2,args){const controller=WordHighlighterContribution.get(editor2);controller&&controller.restoreViewState(!0)}};__name(_TriggerWordHighlightAction,"TriggerWordHighlightAction");let TriggerWordHighlightAction=_TriggerWordHighlightAction;registerEditorContribution(WordHighlighterContribution.ID,WordHighlighterContribution,0),registerEditorAction(NextWordHighlightAction),registerEditorAction(PrevWordHighlightAction),registerEditorAction(TriggerWordHighlightAction),registerEditorFeature(TextualMultiDocumentHighlightFeature);const _MoveWordCommand=class _MoveWordCommand extends EditorCommand{constructor(opts){super(opts),this._inSelectionMode=opts.inSelectionMode,this._wordNavigationType=opts.wordNavigationType}runEditorCommand(accessor,editor2,args){if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),selections=editor2.getSelections(),hasMulticursor=selections.length>1,result=selections.map(sel=>{const inPosition=new Position$4(sel.positionLineNumber,sel.positionColumn),outPosition=this._move(wordSeparators2,model,inPosition,this._wordNavigationType,hasMulticursor);return this._moveTo(sel,outPosition,this._inSelectionMode)});if(model.pushStackElement(),editor2._getViewModel().setCursorStates("moveWordCommand",3,result.map(r2=>CursorState$1.fromModelSelection(r2))),result.length===1){const pos=new Position$4(result[0].positionLineNumber,result[0].positionColumn);editor2.revealPosition(pos,0)}}_moveTo(from,to,inSelectionMode){return inSelectionMode?new Selection$1(from.selectionStartLineNumber,from.selectionStartColumn,to.lineNumber,to.column):new Selection$1(to.lineNumber,to.column,to.lineNumber,to.column)}};__name(_MoveWordCommand,"MoveWordCommand");let MoveWordCommand=_MoveWordCommand;const _WordLeftCommand=class _WordLeftCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordOperations.moveWordLeft(wordSeparators2,model,position,wordNavigationType,hasMulticursor)}};__name(_WordLeftCommand,"WordLeftCommand");let WordLeftCommand=_WordLeftCommand;const _WordRightCommand=class _WordRightCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordOperations.moveWordRight(wordSeparators2,model,position,wordNavigationType)}};__name(_WordRightCommand,"WordRightCommand");let WordRightCommand=_WordRightCommand;const _CursorWordStartLeft=class _CursorWordStartLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}};__name(_CursorWordStartLeft,"CursorWordStartLeft");let CursorWordStartLeft=_CursorWordStartLeft;const _CursorWordEndLeft=class _CursorWordEndLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}};__name(_CursorWordEndLeft,"CursorWordEndLeft");let CursorWordEndLeft=_CursorWordEndLeft;const _CursorWordLeft=class _CursorWordLeft extends WordLeftCommand{constructor(){var _a3;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:2063,mac:{primary:527},weight:100}})}};__name(_CursorWordLeft,"CursorWordLeft");let CursorWordLeft=_CursorWordLeft;const _CursorWordStartLeftSelect=class _CursorWordStartLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}};__name(_CursorWordStartLeftSelect,"CursorWordStartLeftSelect");let CursorWordStartLeftSelect=_CursorWordStartLeftSelect;const _CursorWordEndLeftSelect=class _CursorWordEndLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}};__name(_CursorWordEndLeftSelect,"CursorWordEndLeftSelect");let CursorWordEndLeftSelect=_CursorWordEndLeftSelect;const _CursorWordLeftSelect=class _CursorWordLeftSelect extends WordLeftCommand{constructor(){var _a3;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:3087,mac:{primary:1551},weight:100}})}};__name(_CursorWordLeftSelect,"CursorWordLeftSelect");let CursorWordLeftSelect=_CursorWordLeftSelect;const _CursorWordAccessibilityLeft=class _CursorWordAccessibilityLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityLeft,"CursorWordAccessibilityLeft");let CursorWordAccessibilityLeft=_CursorWordAccessibilityLeft;const _CursorWordAccessibilityLeftSelect=class _CursorWordAccessibilityLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityLeftSelect,"CursorWordAccessibilityLeftSelect");let CursorWordAccessibilityLeftSelect=_CursorWordAccessibilityLeftSelect;const _CursorWordStartRight=class _CursorWordStartRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}};__name(_CursorWordStartRight,"CursorWordStartRight");let CursorWordStartRight=_CursorWordStartRight;const _CursorWordEndRight=class _CursorWordEndRight extends WordRightCommand{constructor(){var _a3;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:2065,mac:{primary:529},weight:100}})}};__name(_CursorWordEndRight,"CursorWordEndRight");let CursorWordEndRight=_CursorWordEndRight;const _CursorWordRight=class _CursorWordRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}};__name(_CursorWordRight,"CursorWordRight");let CursorWordRight=_CursorWordRight;const _CursorWordStartRightSelect=class _CursorWordStartRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}};__name(_CursorWordStartRightSelect,"CursorWordStartRightSelect");let CursorWordStartRightSelect=_CursorWordStartRightSelect;const _CursorWordEndRightSelect=class _CursorWordEndRightSelect extends WordRightCommand{constructor(){var _a3;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:3089,mac:{primary:1553},weight:100}})}};__name(_CursorWordEndRightSelect,"CursorWordEndRightSelect");let CursorWordEndRightSelect=_CursorWordEndRightSelect;const _CursorWordRightSelect=class _CursorWordRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}};__name(_CursorWordRightSelect,"CursorWordRightSelect");let CursorWordRightSelect=_CursorWordRightSelect;const _CursorWordAccessibilityRight=class _CursorWordAccessibilityRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityRight,"CursorWordAccessibilityRight");let CursorWordAccessibilityRight=_CursorWordAccessibilityRight;const _CursorWordAccessibilityRightSelect=class _CursorWordAccessibilityRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityRightSelect,"CursorWordAccessibilityRightSelect");let CursorWordAccessibilityRightSelect=_CursorWordAccessibilityRightSelect;const _DeleteWordCommand=class _DeleteWordCommand extends EditorCommand{constructor(opts){super(opts),this._whitespaceHeuristics=opts.whitespaceHeuristics,this._wordNavigationType=opts.wordNavigationType}runEditorCommand(accessor,editor2,args){const languageConfigurationService=accessor.get(ILanguageConfigurationService);if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),selections=editor2.getSelections(),autoClosingBrackets=editor2.getOption(6),autoClosingQuotes=editor2.getOption(11),autoClosingPairs=languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getAutoClosingPairs(),viewModel=editor2._getViewModel(),commands=selections.map(sel=>{const deleteRange=this._delete({wordSeparators:wordSeparators2,model,selection:sel,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:editor2.getOption(9),autoClosingBrackets,autoClosingQuotes,autoClosingPairs,autoClosedCharacters:viewModel.getCursorAutoClosedCharacters()},this._wordNavigationType);return new ReplaceCommand(deleteRange,"")});editor2.pushUndoStop(),editor2.executeCommands(this.id,commands),editor2.pushUndoStop()}};__name(_DeleteWordCommand,"DeleteWordCommand");let DeleteWordCommand=_DeleteWordCommand;const _DeleteWordLeftCommand=class _DeleteWordLeftCommand extends DeleteWordCommand{_delete(ctx,wordNavigationType){const r2=WordOperations.deleteWordLeft(ctx,wordNavigationType);return r2||new Range$5(1,1,1,1)}};__name(_DeleteWordLeftCommand,"DeleteWordLeftCommand");let DeleteWordLeftCommand=_DeleteWordLeftCommand;const _DeleteWordRightCommand=class _DeleteWordRightCommand extends DeleteWordCommand{_delete(ctx,wordNavigationType){const r2=WordOperations.deleteWordRight(ctx,wordNavigationType);if(r2)return r2;const lineCount=ctx.model.getLineCount(),maxColumn=ctx.model.getLineMaxColumn(lineCount);return new Range$5(lineCount,maxColumn,lineCount,maxColumn)}};__name(_DeleteWordRightCommand,"DeleteWordRightCommand");let DeleteWordRightCommand=_DeleteWordRightCommand;const _DeleteWordStartLeft=class _DeleteWordStartLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:EditorContextKeys.writable})}};__name(_DeleteWordStartLeft,"DeleteWordStartLeft");let DeleteWordStartLeft=_DeleteWordStartLeft;const _DeleteWordEndLeft=class _DeleteWordEndLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:EditorContextKeys.writable})}};__name(_DeleteWordEndLeft,"DeleteWordEndLeft");let DeleteWordEndLeft=_DeleteWordEndLeft;const _DeleteWordLeft=class _DeleteWordLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}};__name(_DeleteWordLeft,"DeleteWordLeft");let DeleteWordLeft=_DeleteWordLeft;const _DeleteWordStartRight=class _DeleteWordStartRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:EditorContextKeys.writable})}};__name(_DeleteWordStartRight,"DeleteWordStartRight");let DeleteWordStartRight=_DeleteWordStartRight;const _DeleteWordEndRight=class _DeleteWordEndRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:EditorContextKeys.writable})}};__name(_DeleteWordEndRight,"DeleteWordEndRight");let DeleteWordEndRight=_DeleteWordEndRight;const _DeleteWordRight=class _DeleteWordRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}};__name(_DeleteWordRight,"DeleteWordRight");let DeleteWordRight=_DeleteWordRight;const _DeleteInsideWord=class _DeleteInsideWord extends EditorAction{constructor(){super({id:"deleteInsideWord",precondition:EditorContextKeys.writable,label:localize("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(accessor,editor2,args){if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),commands=editor2.getSelections().map(sel=>{const deleteRange=WordOperations.deleteInsideWord(wordSeparators2,model,sel);return new ReplaceCommand(deleteRange,"")});editor2.pushUndoStop(),editor2.executeCommands(this.id,commands),editor2.pushUndoStop()}};__name(_DeleteInsideWord,"DeleteInsideWord");let DeleteInsideWord=_DeleteInsideWord;registerEditorCommand(new CursorWordStartLeft),registerEditorCommand(new CursorWordEndLeft),registerEditorCommand(new CursorWordLeft),registerEditorCommand(new CursorWordStartLeftSelect),registerEditorCommand(new CursorWordEndLeftSelect),registerEditorCommand(new CursorWordLeftSelect),registerEditorCommand(new CursorWordStartRight),registerEditorCommand(new CursorWordEndRight),registerEditorCommand(new CursorWordRight),registerEditorCommand(new CursorWordStartRightSelect),registerEditorCommand(new CursorWordEndRightSelect),registerEditorCommand(new CursorWordRightSelect),registerEditorCommand(new CursorWordAccessibilityLeft),registerEditorCommand(new CursorWordAccessibilityLeftSelect),registerEditorCommand(new CursorWordAccessibilityRight),registerEditorCommand(new CursorWordAccessibilityRightSelect),registerEditorCommand(new DeleteWordStartLeft),registerEditorCommand(new DeleteWordEndLeft),registerEditorCommand(new DeleteWordLeft),registerEditorCommand(new DeleteWordStartRight),registerEditorCommand(new DeleteWordEndRight),registerEditorCommand(new DeleteWordRight),registerEditorAction(DeleteInsideWord);const _DeleteWordPartLeft=class _DeleteWordPartLeft extends DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(ctx,wordNavigationType){const r2=WordPartOperations.deleteWordPartLeft(ctx);return r2||new Range$5(1,1,1,1)}};__name(_DeleteWordPartLeft,"DeleteWordPartLeft");let DeleteWordPartLeft=_DeleteWordPartLeft;const _DeleteWordPartRight=class _DeleteWordPartRight extends DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(ctx,wordNavigationType){const r2=WordPartOperations.deleteWordPartRight(ctx);if(r2)return r2;const lineCount=ctx.model.getLineCount(),maxColumn=ctx.model.getLineMaxColumn(lineCount);return new Range$5(lineCount,maxColumn,lineCount,maxColumn)}};__name(_DeleteWordPartRight,"DeleteWordPartRight");let DeleteWordPartRight=_DeleteWordPartRight;const _WordPartLeftCommand=class _WordPartLeftCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordPartOperations.moveWordPartLeft(wordSeparators2,model,position,hasMulticursor)}};__name(_WordPartLeftCommand,"WordPartLeftCommand");let WordPartLeftCommand=_WordPartLeftCommand;const _CursorWordPartLeft=class _CursorWordPartLeft extends WordPartLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:783},weight:100}})}};__name(_CursorWordPartLeft,"CursorWordPartLeft");let CursorWordPartLeft=_CursorWordPartLeft;CommandsRegistry.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");const _CursorWordPartLeftSelect=class _CursorWordPartLeftSelect extends WordPartLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}};__name(_CursorWordPartLeftSelect,"CursorWordPartLeftSelect");let CursorWordPartLeftSelect=_CursorWordPartLeftSelect;CommandsRegistry.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");const _WordPartRightCommand=class _WordPartRightCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordPartOperations.moveWordPartRight(wordSeparators2,model,position)}};__name(_WordPartRightCommand,"WordPartRightCommand");let WordPartRightCommand=_WordPartRightCommand;const _CursorWordPartRight=class _CursorWordPartRight extends WordPartRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:785},weight:100}})}};__name(_CursorWordPartRight,"CursorWordPartRight");let CursorWordPartRight=_CursorWordPartRight;const _CursorWordPartRightSelect=class _CursorWordPartRightSelect extends WordPartRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}};__name(_CursorWordPartRightSelect,"CursorWordPartRightSelect");let CursorWordPartRightSelect=_CursorWordPartRightSelect;registerEditorCommand(new DeleteWordPartLeft),registerEditorCommand(new DeleteWordPartRight),registerEditorCommand(new CursorWordPartLeft),registerEditorCommand(new CursorWordPartLeftSelect),registerEditorCommand(new CursorWordPartRight),registerEditorCommand(new CursorWordPartRightSelect);const _ReadOnlyMessageController=class _ReadOnlyMessageController extends Disposable{constructor(editor2){super(),this.editor=editor2,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const messageController=MessageController.get(this.editor);if(messageController&&this.editor.hasModel()){let message=this.editor.getOptions().get(93);message||(this.editor.isSimpleWidget?message=new MarkdownString(localize("editor.simple.readonly","Cannot edit in read-only input")):message=new MarkdownString(localize("editor.readonly","Cannot edit in read-only editor"))),messageController.showMessage(message,this.editor.getPosition())}}};__name(_ReadOnlyMessageController,"ReadOnlyMessageController"),_ReadOnlyMessageController.ID="editor.contrib.readOnlyMessageController";let ReadOnlyMessageController=_ReadOnlyMessageController;registerEditorContribution(ReadOnlyMessageController.ID,ReadOnlyMessageController,2);var __decorate$8=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$8=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let DiffEditorBreadcrumbsSource=(_xe=class extends Disposable{constructor(_textModel,_languageFeaturesService,_outlineModelService){super(),this._textModel=_textModel,this._languageFeaturesService=_languageFeaturesService,this._outlineModelService=_outlineModelService,this._currentModel=observableValue(this,void 0);const documentSymbolProviderChanged=observableSignalFromEvent("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),textModelChanged=observableSignalFromEvent("_textModel.onDidChangeContent",Event.debounce(e=>this._textModel.onDidChangeContent(e),()=>{},100));this._register(autorunWithStore(async(reader,store)=>{documentSymbolProviderChanged.read(reader),textModelChanged.read(reader);const src=store.add(new DisposableCancellationTokenSource),model=await this._outlineModelService.getOrCreate(this._textModel,src.token);store.isDisposed||this._currentModel.set(model,void 0)}))}getBreadcrumbItems(startRange,reader){const m2=this._currentModel.read(reader);if(!m2)return[];const symbols=m2.asListOfDocumentSymbols().filter(s=>startRange.contains(s.range.startLineNumber)&&!startRange.contains(s.range.endLineNumber));return symbols.sort(reverseOrder(compareBy(s=>s.range.endLineNumber-s.range.startLineNumber,numberComparator))),symbols.map(s=>({name:s.name,kind:s.kind,startLineNumber:s.range.startLineNumber}))}},__name(_xe,"DiffEditorBreadcrumbsSource"),_xe);DiffEditorBreadcrumbsSource=__decorate$8([__param$8(1,ILanguageFeaturesService),__param$8(2,IOutlineModelService)],DiffEditorBreadcrumbsSource),HideUnchangedRegionsFeature.setBreadcrumbsSourceFactory((textModel,instantiationService)=>instantiationService.createInstance(DiffEditorBreadcrumbsSource,textModel));const _IPadShowKeyboard=class _IPadShowKeyboard extends Disposable{constructor(editor2){super(),this.editor=editor2,this.widget=null,isIOS&&(this._register(editor2.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const shouldHaveWidget=!this.editor.getOption(92);!this.widget&&shouldHaveWidget?this.widget=new ShowKeyboardWidget(this.editor):this.widget&&!shouldHaveWidget&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};__name(_IPadShowKeyboard,"IPadShowKeyboard"),_IPadShowKeyboard.ID="editor.contrib.iPadShowKeyboard";let IPadShowKeyboard=_IPadShowKeyboard;const _ShowKeyboardWidget=class _ShowKeyboardWidget extends Disposable{constructor(editor2){super(),this.editor=editor2,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(addDisposableListener(this._domNode,"touchstart",e=>{this.editor.focus()})),this._register(addDisposableListener(this._domNode,"focus",e=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return _ShowKeyboardWidget.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};__name(_ShowKeyboardWidget,"ShowKeyboardWidget"),_ShowKeyboardWidget.ID="editor.contrib.ShowKeyboardWidget";let ShowKeyboardWidget=_ShowKeyboardWidget;registerEditorContribution(IPadShowKeyboard.ID,IPadShowKeyboard,3);var __decorate$7=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$7=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},InspectTokensController_1;let InspectTokensController=(_ye=class extends Disposable{static get(editor2){return editor2.getContribution(InspectTokensController_1.ID)}constructor(editor2,standaloneColorService,languageService){super(),this._editor=editor2,this._languageService=languageService,this._widget=null,this._register(this._editor.onDidChangeModel(e=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(e=>this.stop())),this._register(TokenizationRegistry.onDidChange(e=>this.stop())),this._register(this._editor.onKeyUp(e=>e.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new InspectTokensWidget(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},__name(_ye,"InspectTokensController"),InspectTokensController_1=_ye,_ye.ID="editor.contrib.inspectTokens",_ye);InspectTokensController=InspectTokensController_1=__decorate$7([__param$7(1,IStandaloneThemeService),__param$7(2,ILanguageService)],InspectTokensController);const _InspectTokens=class _InspectTokens extends EditorAction{constructor(){super({id:"editor.action.inspectTokens",label:InspectTokensNLS.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(accessor,editor2){const controller=InspectTokensController.get(editor2);controller==null||controller.launch()}};__name(_InspectTokens,"InspectTokens");let InspectTokens=_InspectTokens;function renderTokenText(tokenText){let result="";for(let charIndex=0,len=tokenText.length;charIndex<len;charIndex++){const charCode=tokenText.charCodeAt(charIndex);switch(charCode){case 9:result+="→";break;case 32:result+="·";break;default:result+=String.fromCharCode(charCode)}}return result}__name(renderTokenText,"renderTokenText");function getSafeTokenizationSupport(languageIdCodec,languageId){const tokenizationSupport=TokenizationRegistry.get(languageId);if(tokenizationSupport)return tokenizationSupport;const encodedLanguageId=languageIdCodec.encodeLanguageId(languageId);return{getInitialState:__name(()=>NullState,"getInitialState"),tokenize:__name((line,hasEOL,state)=>nullTokenize(languageId,state),"tokenize"),tokenizeEncoded:__name((line,hasEOL,state)=>nullTokenizeEncoded(encodedLanguageId,state),"tokenizeEncoded")}}__name(getSafeTokenizationSupport,"getSafeTokenizationSupport");const _InspectTokensWidget=class _InspectTokensWidget extends Disposable{constructor(editor2,languageService){super(),this.allowEditorOverflow=!0,this._editor=editor2,this._languageService=languageService,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=getSafeTokenizationSupport(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(e=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return _InspectTokensWidget._ID}_compute(position){const data=this._getTokensAtLine(position.lineNumber);let token1Index=0;for(let i=data.tokens1.length-1;i>=0;i--){const t=data.tokens1[i];if(position.column-1>=t.offset){token1Index=i;break}}let token2Index=0;for(let i=data.tokens2.length>>>1;i>=0;i--)if(position.column-1>=data.tokens2[i<<1]){token2Index=i;break}const lineContent=this._model.getLineContent(position.lineNumber);let tokenText="";if(token1Index<data.tokens1.length){const tokenStartIndex=data.tokens1[token1Index].offset,tokenEndIndex=token1Index+1<data.tokens1.length?data.tokens1[token1Index+1].offset:lineContent.length;tokenText=lineContent.substring(tokenStartIndex,tokenEndIndex)}reset(this._domNode,$$e("h2.tm-token",void 0,renderTokenText(tokenText),$$e("span.tm-token-length",void 0,`${tokenText.length} ${tokenText.length===1?"char":"chars"}`))),append$1(this._domNode,$$e("hr.tokens-inspect-separator",{style:"clear:both"}));const metadata=(token2Index<<1)+1<data.tokens2.length?this._decodeMetadata(data.tokens2[(token2Index<<1)+1]):null;append$1(this._domNode,$$e("table.tm-metadata-table",void 0,$$e("tbody",void 0,$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"language"),$$e("td.tm-metadata-value",void 0,`${metadata?metadata.languageId:"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"token type"),$$e("td.tm-metadata-value",void 0,`${metadata?this._tokenTypeToString(metadata.tokenType):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"font style"),$$e("td.tm-metadata-value",void 0,`${metadata?this._fontStyleToString(metadata.fontStyle):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"foreground"),$$e("td.tm-metadata-value",void 0,`${metadata?Color$3.Format.CSS.formatHex(metadata.foreground):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"background"),$$e("td.tm-metadata-value",void 0,`${metadata?Color$3.Format.CSS.formatHex(metadata.background):"-?-"}`))))),append$1(this._domNode,$$e("hr.tokens-inspect-separator")),token1Index<data.tokens1.length&&append$1(this._domNode,$$e("span.tm-token-type",void 0,data.tokens1[token1Index].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(metadata){const colorMap=TokenizationRegistry.getColorMap(),languageId=TokenMetadata.getLanguageId(metadata),tokenType=TokenMetadata.getTokenType(metadata),fontStyle=TokenMetadata.getFontStyle(metadata),foreground2=TokenMetadata.getForeground(metadata),background=TokenMetadata.getBackground(metadata);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(languageId),tokenType,fontStyle,foreground:colorMap[foreground2],background:colorMap[background]}}_tokenTypeToString(tokenType){switch(tokenType){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(fontStyle){let r2="";return fontStyle&1&&(r2+="italic "),fontStyle&2&&(r2+="bold "),fontStyle&4&&(r2+="underline "),fontStyle&8&&(r2+="strikethrough "),r2.length===0&&(r2="---"),r2}_getTokensAtLine(lineNumber){const stateBeforeLine=this._getStateBeforeLine(lineNumber),tokenizationResult1=this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber),!0,stateBeforeLine),tokenizationResult2=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(lineNumber),!0,stateBeforeLine);return{startState:stateBeforeLine,tokens1:tokenizationResult1.tokens,tokens2:tokenizationResult2.tokens,endState:tokenizationResult1.endState}}_getStateBeforeLine(lineNumber){let state=this._tokenizationSupport.getInitialState();for(let i=1;i<lineNumber;i++)state=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,state).endState;return state}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}};__name(_InspectTokensWidget,"InspectTokensWidget"),_InspectTokensWidget._ID="editor.contrib.inspectTokensWidget";let InspectTokensWidget=_InspectTokensWidget;registerEditorContribution(InspectTokensController.ID,InspectTokensController,4),registerEditorAction(InspectTokens);var __decorate$6=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$6=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},HelpQuickAccessProvider_1;let HelpQuickAccessProvider=(_ze=class{constructor(quickInputService,keybindingService){this.quickInputService=quickInputService,this.keybindingService=keybindingService,this.registry=Registry.as(Extensions$2.Quickaccess)}provide(picker){const disposables=new DisposableStore;return disposables.add(picker.onDidAccept(()=>{const[item]=picker.selectedItems;item&&this.quickInputService.quickAccess.show(item.prefix,{preserveValue:!0})})),disposables.add(picker.onDidChangeValue(value=>{const providerDescriptor=this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider_1.PREFIX.length));providerDescriptor&&providerDescriptor.prefix&&providerDescriptor.prefix!==HelpQuickAccessProvider_1.PREFIX&&this.quickInputService.quickAccess.show(providerDescriptor.prefix,{preserveValue:!0})})),picker.items=this.getQuickAccessProviders().filter(p2=>p2.prefix!==HelpQuickAccessProvider_1.PREFIX),disposables}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((providerA,providerB)=>providerA.prefix.localeCompare(providerB.prefix)).flatMap(provider=>this.createPicks(provider))}createPicks(provider){return provider.helpEntries.map(helpEntry=>{const prefix=helpEntry.prefix||provider.prefix,label=prefix||"…";return{prefix,label,keybinding:helpEntry.commandId?this.keybindingService.lookupKeybinding(helpEntry.commandId):void 0,ariaLabel:localize("helpPickAriaLabel","{0}, {1}",label,helpEntry.description),description:helpEntry.description}})}},__name(_ze,"HelpQuickAccessProvider"),HelpQuickAccessProvider_1=_ze,_ze.PREFIX="?",_ze);HelpQuickAccessProvider=HelpQuickAccessProvider_1=__decorate$6([__param$6(0,IQuickInputService),__param$6(1,IKeybindingService)],HelpQuickAccessProvider),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:HelpQuickAccessProvider,prefix:"",helpEntries:[{description:QuickHelpNLS.helpQuickAccessActionLabel}]});const _AbstractEditorNavigationQuickAccessProvider=class _AbstractEditorNavigationQuickAccessProvider{constructor(options){this.options=options,this.rangeHighlightDecorationId=void 0}provide(picker,token,runOptions){var _a3;const disposables=new DisposableStore;picker.canAcceptInBackground=!!((_a3=this.options)!=null&&_a3.canAcceptInBackground),picker.matchOnLabel=picker.matchOnDescription=picker.matchOnDetail=picker.sortByLabel=!1;const pickerDisposable=disposables.add(new MutableDisposable);return pickerDisposable.value=this.doProvide(picker,token,runOptions),disposables.add(this.onDidActiveTextEditorControlChange(()=>{pickerDisposable.value=void 0,pickerDisposable.value=this.doProvide(picker,token)})),disposables}doProvide(picker,token,runOptions){var _a3;const disposables=new DisposableStore,editor2=this.activeTextEditorControl;if(editor2&&this.canProvideWithTextEditor(editor2)){const context={editor:editor2},codeEditor=getCodeEditor(editor2);if(codeEditor){let lastKnownEditorViewState=(_a3=editor2.saveViewState())!=null?_a3:void 0;disposables.add(codeEditor.onDidChangeCursorPosition(()=>{var _a4;lastKnownEditorViewState=(_a4=editor2.saveViewState())!=null?_a4:void 0})),context.restoreViewState=()=>{lastKnownEditorViewState&&editor2===this.activeTextEditorControl&&editor2.restoreViewState(lastKnownEditorViewState)},disposables.add(createSingleCallFunction(token.onCancellationRequested)(()=>{var _a4;return(_a4=context.restoreViewState)==null?void 0:_a4.call(context)}))}disposables.add(toDisposable(()=>this.clearDecorations(editor2))),disposables.add(this.provideWithTextEditor(context,picker,token,runOptions))}else disposables.add(this.provideWithoutTextEditor(picker,token));return disposables}canProvideWithTextEditor(editor2){return!0}gotoLocation({editor:editor2},options){editor2.setSelection(options.range,"code.jump"),editor2.revealRangeInCenter(options.range,0),options.preserveFocus||editor2.focus();const model=editor2.getModel();model&&"getLineContent"in model&&status(`${model.getLineContent(options.range.startLineNumber)}`)}getModel(editor2){var _a3;return isDiffEditor(editor2)?(_a3=editor2.getModel())==null?void 0:_a3.modified:editor2.getModel()}addDecorations(editor2,range2){editor2.changeDecorations(changeAccessor=>{const deleteDecorations=[];this.rangeHighlightDecorationId&&(deleteDecorations.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),deleteDecorations.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const newDecorations=[{range:range2,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:range2,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:themeColorFromId(overviewRulerRangeHighlight),position:OverviewRulerLane.Full}}}],[rangeHighlightId,overviewRulerDecorationId]=changeAccessor.deltaDecorations(deleteDecorations,newDecorations);this.rangeHighlightDecorationId={rangeHighlightId,overviewRulerDecorationId}})}clearDecorations(editor2){const rangeHighlightDecorationId=this.rangeHighlightDecorationId;rangeHighlightDecorationId&&(editor2.changeDecorations(changeAccessor=>{changeAccessor.deltaDecorations([rangeHighlightDecorationId.overviewRulerDecorationId,rangeHighlightDecorationId.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}};__name(_AbstractEditorNavigationQuickAccessProvider,"AbstractEditorNavigationQuickAccessProvider");let AbstractEditorNavigationQuickAccessProvider=_AbstractEditorNavigationQuickAccessProvider;const _AbstractGotoLineQuickAccessProvider=class _AbstractGotoLineQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(picker){const label=localize("cannotRunGotoLine","Open a text editor first to go to a line.");return picker.items=[{label}],picker.ariaLabel=label,Disposable.None}provideWithTextEditor(context,picker,token){const editor2=context.editor,disposables=new DisposableStore;disposables.add(picker.onDidAccept(event=>{const[item]=picker.selectedItems;if(item){if(!this.isValidLineNumber(editor2,item.lineNumber))return;this.gotoLocation(context,{range:this.toRange(item.lineNumber,item.column),keyMods:picker.keyMods,preserveFocus:event.inBackground}),event.inBackground||picker.hide()}}));const updatePickerAndEditor=__name(()=>{const position=this.parsePosition(editor2,picker.value.trim().substr(_AbstractGotoLineQuickAccessProvider.PREFIX.length)),label=this.getPickLabel(editor2,position.lineNumber,position.column);if(picker.items=[{lineNumber:position.lineNumber,column:position.column,label}],picker.ariaLabel=label,!this.isValidLineNumber(editor2,position.lineNumber)){this.clearDecorations(editor2);return}const range2=this.toRange(position.lineNumber,position.column);editor2.revealRangeInCenter(range2,0),this.addDecorations(editor2,range2)},"updatePickerAndEditor");updatePickerAndEditor(),disposables.add(picker.onDidChangeValue(()=>updatePickerAndEditor()));const codeEditor=getCodeEditor(editor2);return codeEditor&&codeEditor.getOptions().get(68).renderType===2&&(codeEditor.updateOptions({lineNumbers:"on"}),disposables.add(toDisposable(()=>codeEditor.updateOptions({lineNumbers:"relative"})))),disposables}toRange(lineNumber=1,column=1){return{startLineNumber:lineNumber,startColumn:column,endLineNumber:lineNumber,endColumn:column}}parsePosition(editor2,value){const numbers=value.split(/,|:|#/).map(part=>parseInt(part,10)).filter(part=>!isNaN(part)),endLine=this.lineCount(editor2)+1;return{lineNumber:numbers[0]>0?numbers[0]:endLine+numbers[0],column:numbers[1]}}getPickLabel(editor2,lineNumber,column){if(this.isValidLineNumber(editor2,lineNumber))return this.isValidColumn(editor2,lineNumber,column)?localize("gotoLineColumnLabel","Go to line {0} and character {1}.",lineNumber,column):localize("gotoLineLabel","Go to line {0}.",lineNumber);const position=editor2.getPosition()||{lineNumber:1,column:1},lineCount=this.lineCount(editor2);return lineCount>1?localize("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",position.lineNumber,position.column,lineCount):localize("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",position.lineNumber,position.column)}isValidLineNumber(editor2,lineNumber){return!lineNumber||typeof lineNumber!="number"?!1:lineNumber>0&&lineNumber<=this.lineCount(editor2)}isValidColumn(editor2,lineNumber,column){if(!column||typeof column!="number")return!1;const model=this.getModel(editor2);if(!model)return!1;const positionCandidate={lineNumber,column};return model.validatePosition(positionCandidate).equals(positionCandidate)}lineCount(editor2){var _a3,_b3;return(_b3=(_a3=this.getModel(editor2))==null?void 0:_a3.getLineCount())!=null?_b3:0}};__name(_AbstractGotoLineQuickAccessProvider,"AbstractGotoLineQuickAccessProvider"),_AbstractGotoLineQuickAccessProvider.PREFIX=":";let AbstractGotoLineQuickAccessProvider=_AbstractGotoLineQuickAccessProvider;var __decorate$5=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$5=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneGotoLineQuickAccessProvider=(_Ae=class extends AbstractGotoLineQuickAccessProvider{constructor(editorService){super(),this.editorService=editorService,this.onDidActiveTextEditorControlChange=Event.None}get activeTextEditorControl(){var _a3;return(_a3=this.editorService.getFocusedCodeEditor())!=null?_a3:void 0}},__name(_Ae,"StandaloneGotoLineQuickAccessProvider"),_Ae);StandaloneGotoLineQuickAccessProvider=__decorate$5([__param$5(0,ICodeEditorService)],StandaloneGotoLineQuickAccessProvider);let GotoLineAction$1=(_Be=class extends EditorAction{constructor(){super({id:_Be.ID,label:GoToLineNLS.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(StandaloneGotoLineQuickAccessProvider.PREFIX)}},__name(_Be,"GotoLineAction"),_Be.ID="editor.action.gotoLine",_Be);registerEditorAction(GotoLineAction$1),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneGotoLineQuickAccessProvider,prefix:StandaloneGotoLineQuickAccessProvider.PREFIX,helpEntries:[{description:GoToLineNLS.gotoLineActionLabel,commandId:GotoLineAction$1.ID}]});const NO_SCORE2=[void 0,[]];function scoreFuzzy2(target,query,patternStart=0,wordStart=0){const preparedQuery=query;return preparedQuery.values&&preparedQuery.values.length>1?doScoreFuzzy2Multiple(target,preparedQuery.values,patternStart,wordStart):doScoreFuzzy2Single(target,query,patternStart,wordStart)}__name(scoreFuzzy2,"scoreFuzzy2");function doScoreFuzzy2Multiple(target,query,patternStart,wordStart){let totalScore=0;const totalMatches=[];for(const queryPiece of query){const[score2,matches]=doScoreFuzzy2Single(target,queryPiece,patternStart,wordStart);if(typeof score2!="number")return NO_SCORE2;totalScore+=score2,totalMatches.push(...matches)}return[totalScore,normalizeMatches(totalMatches)]}__name(doScoreFuzzy2Multiple,"doScoreFuzzy2Multiple");function doScoreFuzzy2Single(target,query,patternStart,wordStart){const score2=fuzzyScore(query.original,query.originalLowercase,patternStart,target,target.toLowerCase(),wordStart,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return score2?[score2[0],createMatches(score2)]:NO_SCORE2}__name(doScoreFuzzy2Single,"doScoreFuzzy2Single");function normalizeMatches(matches){const sortedMatches=matches.sort((matchA,matchB)=>matchA.start-matchB.start),normalizedMatches=[];let currentMatch;for(const match2 of sortedMatches)!currentMatch||!matchOverlaps(currentMatch,match2)?(currentMatch=match2,normalizedMatches.push(match2)):(currentMatch.start=Math.min(currentMatch.start,match2.start),currentMatch.end=Math.max(currentMatch.end,match2.end));return normalizedMatches}__name(normalizeMatches,"normalizeMatches");function matchOverlaps(matchA,matchB){return!(matchA.end<matchB.start||matchB.end<matchA.start)}__name(matchOverlaps,"matchOverlaps");function queryExpectsExactMatch(query){return query.startsWith('"')&&query.endsWith('"')}__name(queryExpectsExactMatch,"queryExpectsExactMatch");const MULTIPLE_QUERY_VALUES_SEPARATOR=" ";function prepareQuery(original){typeof original!="string"&&(original="");const originalLowercase=original.toLowerCase(),{pathNormalized,normalized,normalizedLowercase}=normalizeQuery(original),containsPathSeparator=pathNormalized.indexOf(sep)>=0,expectExactMatch=queryExpectsExactMatch(original);let values;const originalSplit=original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);if(originalSplit.length>1)for(const originalPiece of originalSplit){const expectExactMatchPiece=queryExpectsExactMatch(originalPiece),{pathNormalized:pathNormalizedPiece,normalized:normalizedPiece,normalizedLowercase:normalizedLowercasePiece}=normalizeQuery(originalPiece);normalizedPiece&&(values||(values=[]),values.push({original:originalPiece,originalLowercase:originalPiece.toLowerCase(),pathNormalized:pathNormalizedPiece,normalized:normalizedPiece,normalizedLowercase:normalizedLowercasePiece,expectContiguousMatch:expectExactMatchPiece}))}return{original,originalLowercase,pathNormalized,normalized,normalizedLowercase,values,containsPathSeparator,expectContiguousMatch:expectExactMatch}}__name(prepareQuery,"prepareQuery");function normalizeQuery(original){let pathNormalized;isWindows?pathNormalized=original.replace(/\//g,sep):pathNormalized=original.replace(/\\/g,sep);const normalized=stripWildcards(pathNormalized).replace(/\s|"/g,"");return{pathNormalized,normalized,normalizedLowercase:normalized.toLowerCase()}}__name(normalizeQuery,"normalizeQuery");function pieceToQuery(arg1){return Array.isArray(arg1)?prepareQuery(arg1.map(piece=>piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR)):prepareQuery(arg1.original)}__name(pieceToQuery,"pieceToQuery");var __decorate$4=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$4=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},AbstractGotoSymbolQuickAccessProvider_1;let AbstractGotoSymbolQuickAccessProvider=(_Ce=class extends AbstractEditorNavigationQuickAccessProvider{constructor(_languageFeaturesService,_outlineModelService,options=Object.create(null)){super(options),this._languageFeaturesService=_languageFeaturesService,this._outlineModelService=_outlineModelService,this.options=options,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(picker){return this.provideLabelPick(picker,localize("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),Disposable.None}provideWithTextEditor(context,picker,token,runOptions){const editor2=context.editor,model=this.getModel(editor2);return model?this._languageFeaturesService.documentSymbolProvider.has(model)?this.doProvideWithEditorSymbols(context,model,picker,token,runOptions):this.doProvideWithoutEditorSymbols(context,model,picker,token):Disposable.None}doProvideWithoutEditorSymbols(context,model,picker,token){const disposables=new DisposableStore;return this.provideLabelPick(picker,localize("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(model,disposables)||token.isCancellationRequested||disposables.add(this.doProvideWithEditorSymbols(context,model,picker,token)))(),disposables}provideLabelPick(picker,label){picker.items=[{label,index:0,kind:14}],picker.ariaLabel=label}async waitForLanguageSymbolRegistry(model,disposables){if(this._languageFeaturesService.documentSymbolProvider.has(model))return!0;const symbolProviderRegistryPromise=new DeferredPromise,symbolProviderListener=disposables.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(model)&&(symbolProviderListener.dispose(),symbolProviderRegistryPromise.complete(!0))}));return disposables.add(toDisposable(()=>symbolProviderRegistryPromise.complete(!1))),symbolProviderRegistryPromise.p}doProvideWithEditorSymbols(context,model,picker,token,runOptions){var _a3;const editor2=context.editor,disposables=new DisposableStore;disposables.add(picker.onDidAccept(event=>{var _a4;const[item]=picker.selectedItems;item&&item.range&&(this.gotoLocation(context,{range:item.range.selection,keyMods:picker.keyMods,preserveFocus:event.inBackground}),(_a4=runOptions==null?void 0:runOptions.handleAccept)==null||_a4.call(runOptions,item),event.inBackground||picker.hide())})),disposables.add(picker.onDidTriggerItemButton(({item})=>{item&&item.range&&(this.gotoLocation(context,{range:item.range.selection,keyMods:picker.keyMods,forceSideBySide:!0}),picker.hide())}));const symbolsPromise=this.getDocumentSymbols(model,token);let picksCts;const updatePickerItems=__name(async positionToEnclose=>{picksCts==null||picksCts.dispose(!0),picker.busy=!1,picksCts=new CancellationTokenSource$1(token),picker.busy=!0;try{const query=prepareQuery(picker.value.substr(AbstractGotoSymbolQuickAccessProvider_1.PREFIX.length).trim()),items=await this.doGetSymbolPicks(symbolsPromise,query,void 0,picksCts.token,model);if(token.isCancellationRequested)return;if(items.length>0){if(picker.items=items,positionToEnclose&&query.original.length===0){const candidate=findLast(items,item=>!!(item.type!=="separator"&&item.range&&Range$5.containsPosition(item.range.decoration,positionToEnclose)));candidate&&(picker.activeItems=[candidate])}}else query.original.length>0?this.provideLabelPick(picker,localize("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(picker,localize("noSymbolResults","No editor symbols"))}finally{token.isCancellationRequested||(picker.busy=!1)}},"updatePickerItems");return disposables.add(picker.onDidChangeValue(()=>updatePickerItems(void 0))),updatePickerItems((_a3=editor2.getSelection())==null?void 0:_a3.getPosition()),disposables.add(picker.onDidChangeActive(()=>{const[item]=picker.activeItems;item&&item.range&&(editor2.revealRangeInCenter(item.range.selection,0),this.addDecorations(editor2,item.range.decoration))})),disposables}async doGetSymbolPicks(symbolsPromise,query,options,token,model){var _a3,_b3;const symbols=await symbolsPromise;if(token.isCancellationRequested)return[];const filterBySymbolKind=query.original.indexOf(AbstractGotoSymbolQuickAccessProvider_1.SCOPE_PREFIX)===0,filterPos=filterBySymbolKind?1:0;let symbolQuery,containerQuery;query.values&&query.values.length>1?(symbolQuery=pieceToQuery(query.values[0]),containerQuery=pieceToQuery(query.values.slice(1))):symbolQuery=query;let buttons;const openSideBySideDirection=(_b3=(_a3=this.options)==null?void 0:_a3.openSideBySideDirection)==null?void 0:_b3.call(_a3);openSideBySideDirection&&(buttons=[{iconClass:openSideBySideDirection==="right"?ThemeIcon.asClassName(Codicon.splitHorizontal):ThemeIcon.asClassName(Codicon.splitVertical),tooltip:openSideBySideDirection==="right"?localize("openToSide","Open to the Side"):localize("openToBottom","Open to the Bottom")}]);const filteredSymbolPicks=[];for(let index=0;index<symbols.length;index++){const symbol=symbols[index],symbolLabel=trim(symbol.name),symbolLabelWithIcon=`$(${SymbolKinds.toIcon(symbol.kind).id}) ${symbolLabel}`,symbolLabelIconOffset=symbolLabelWithIcon.length-symbolLabel.length;let containerLabel=symbol.containerName;options!=null&&options.extraContainerLabel&&(containerLabel?containerLabel=`${options.extraContainerLabel} • ${containerLabel}`:containerLabel=options.extraContainerLabel);let symbolScore,symbolMatches,containerScore,containerMatches;if(query.original.length>filterPos){let skipContainerQuery=!1;if(symbolQuery!==query&&([symbolScore,symbolMatches]=scoreFuzzy2(symbolLabelWithIcon,{...query,values:void 0},filterPos,symbolLabelIconOffset),typeof symbolScore=="number"&&(skipContainerQuery=!0)),typeof symbolScore!="number"&&([symbolScore,symbolMatches]=scoreFuzzy2(symbolLabelWithIcon,symbolQuery,filterPos,symbolLabelIconOffset),typeof symbolScore!="number"))continue;if(!skipContainerQuery&&containerQuery){if(containerLabel&&containerQuery.original.length>0&&([containerScore,containerMatches]=scoreFuzzy2(containerLabel,containerQuery)),typeof containerScore!="number")continue;typeof symbolScore=="number"&&(symbolScore+=containerScore)}}const deprecated=symbol.tags&&symbol.tags.indexOf(1)>=0;filteredSymbolPicks.push({index,kind:symbol.kind,score:symbolScore,label:symbolLabelWithIcon,ariaLabel:getAriaLabelForSymbol(symbol.name,symbol.kind),description:containerLabel,highlights:deprecated?void 0:{label:symbolMatches,description:containerMatches},range:{selection:Range$5.collapseToStart(symbol.selectionRange),decoration:symbol.range},uri:model.uri,symbolName:symbolLabel,strikethrough:deprecated,buttons})}const sortedFilteredSymbolPicks=filteredSymbolPicks.sort((symbolA,symbolB)=>filterBySymbolKind?this.compareByKindAndScore(symbolA,symbolB):this.compareByScore(symbolA,symbolB));let symbolPicks=[];if(filterBySymbolKind){let updateLastSeparatorLabel=function(){lastSeparator&&typeof lastSymbolKind=="number"&&lastSymbolKindCounter>0&&(lastSeparator.label=format(NLS_SYMBOL_KIND_CACHE[lastSymbolKind]||FALLBACK_NLS_SYMBOL_KIND,lastSymbolKindCounter))};__name(updateLastSeparatorLabel,"updateLastSeparatorLabel");let lastSymbolKind,lastSeparator,lastSymbolKindCounter=0;for(const symbolPick of sortedFilteredSymbolPicks)lastSymbolKind!==symbolPick.kind?(updateLastSeparatorLabel(),lastSymbolKind=symbolPick.kind,lastSymbolKindCounter=1,lastSeparator={type:"separator"},symbolPicks.push(lastSeparator)):lastSymbolKindCounter++,symbolPicks.push(symbolPick);updateLastSeparatorLabel()}else sortedFilteredSymbolPicks.length>0&&(symbolPicks=[{label:localize("symbols","symbols ({0})",filteredSymbolPicks.length),type:"separator"},...sortedFilteredSymbolPicks]);return symbolPicks}compareByScore(symbolA,symbolB){if(typeof symbolA.score!="number"&&typeof symbolB.score=="number")return 1;if(typeof symbolA.score=="number"&&typeof symbolB.score!="number")return-1;if(typeof symbolA.score=="number"&&typeof symbolB.score=="number"){if(symbolA.score>symbolB.score)return-1;if(symbolA.score<symbolB.score)return 1}return symbolA.index<symbolB.index?-1:symbolA.index>symbolB.index?1:0}compareByKindAndScore(symbolA,symbolB){const kindA=NLS_SYMBOL_KIND_CACHE[symbolA.kind]||FALLBACK_NLS_SYMBOL_KIND,kindB=NLS_SYMBOL_KIND_CACHE[symbolB.kind]||FALLBACK_NLS_SYMBOL_KIND,result=kindA.localeCompare(kindB);return result===0?this.compareByScore(symbolA,symbolB):result}async getDocumentSymbols(document2,token){const model=await this._outlineModelService.getOrCreate(document2,token);return token.isCancellationRequested?[]:model.asListOfDocumentSymbols()}},__name(_Ce,"AbstractGotoSymbolQuickAccessProvider"),AbstractGotoSymbolQuickAccessProvider_1=_Ce,_Ce.PREFIX="@",_Ce.SCOPE_PREFIX=":",_Ce.PREFIX_BY_CATEGORY=`${_Ce.PREFIX}${_Ce.SCOPE_PREFIX}`,_Ce);AbstractGotoSymbolQuickAccessProvider=AbstractGotoSymbolQuickAccessProvider_1=__decorate$4([__param$4(0,ILanguageFeaturesService),__param$4(1,IOutlineModelService)],AbstractGotoSymbolQuickAccessProvider);const FALLBACK_NLS_SYMBOL_KIND=localize("property","properties ({0})"),NLS_SYMBOL_KIND_CACHE={5:localize("method","methods ({0})"),11:localize("function","functions ({0})"),8:localize("_constructor","constructors ({0})"),12:localize("variable","variables ({0})"),4:localize("class","classes ({0})"),22:localize("struct","structs ({0})"),23:localize("event","events ({0})"),24:localize("operator","operators ({0})"),10:localize("interface","interfaces ({0})"),2:localize("namespace","namespaces ({0})"),3:localize("package","packages ({0})"),25:localize("typeParameter","type parameters ({0})"),1:localize("modules","modules ({0})"),6:localize("property","properties ({0})"),9:localize("enum","enumerations ({0})"),21:localize("enumMember","enumeration members ({0})"),14:localize("string","strings ({0})"),0:localize("file","files ({0})"),17:localize("array","arrays ({0})"),15:localize("number","numbers ({0})"),16:localize("boolean","booleans ({0})"),18:localize("object","objects ({0})"),19:localize("key","keys ({0})"),7:localize("field","fields ({0})"),13:localize("constant","constants ({0})")};var __decorate$3=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$3=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneGotoSymbolQuickAccessProvider=(_De=class extends AbstractGotoSymbolQuickAccessProvider{constructor(editorService,languageFeaturesService,outlineModelService){super(languageFeaturesService,outlineModelService),this.editorService=editorService,this.onDidActiveTextEditorControlChange=Event.None}get activeTextEditorControl(){var _a3;return(_a3=this.editorService.getFocusedCodeEditor())!=null?_a3:void 0}},__name(_De,"StandaloneGotoSymbolQuickAccessProvider"),_De);StandaloneGotoSymbolQuickAccessProvider=__decorate$3([__param$3(0,ICodeEditorService),__param$3(1,ILanguageFeaturesService),__param$3(2,IOutlineModelService)],StandaloneGotoSymbolQuickAccessProvider);const _GotoSymbolAction=class _GotoSymbolAction extends EditorAction{constructor(){super({id:_GotoSymbolAction.ID,label:QuickOutlineNLS.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:EditorContextKeys.hasDocumentSymbolProvider,kbOpts:{kbExpr:EditorContextKeys.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX,{itemActivation:ItemActivation.NONE})}};__name(_GotoSymbolAction,"GotoSymbolAction"),_GotoSymbolAction.ID="editor.action.quickOutline";let GotoSymbolAction=_GotoSymbolAction;registerEditorAction(GotoSymbolAction),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneGotoSymbolQuickAccessProvider,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX,helpEntries:[{description:QuickOutlineNLS.quickOutlineActionLabel,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX,commandId:GotoSymbolAction.ID},{description:QuickOutlineNLS.quickOutlineByCategoryActionLabel,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY}]});function countMapFrom(values){var _a3;const map=new Map;for(const value of values)map.set(value,((_a3=map.get(value))!=null?_a3:0)+1);return map}__name(countMapFrom,"countMapFrom");const _TfIdfCalculator=class _TfIdfCalculator{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(query,token){const embedding=this.computeEmbedding(query),idfCache=new Map,scores=[];for(const[key,doc]of this.documents){if(token.isCancellationRequested)return[];for(const chunk of doc.chunks){const score2=this.computeSimilarityScore(chunk,embedding,idfCache);score2>0&&scores.push({key,score:score2})}}return scores}static termFrequencies(input){return countMapFrom(_TfIdfCalculator.splitTerms(input))}static*splitTerms(input){const normalize2=__name(word=>word.toLowerCase(),"normalize");for(const[word]of input.matchAll(new RegExp("\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b","gu"))){yield normalize2(word);const camelParts=word.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(camelParts.length>1)for(const part of camelParts)part.length>2&&new RegExp("\\p{Letter}{3,}","gu").test(part)&&(yield normalize2(part))}}updateDocuments(documents){var _a3;for(const{key}of documents)this.deleteDocument(key);for(const doc of documents){const chunks=[];for(const text2 of doc.textChunks){const tf=_TfIdfCalculator.termFrequencies(text2);for(const term of tf.keys())this.chunkOccurrences.set(term,((_a3=this.chunkOccurrences.get(term))!=null?_a3:0)+1);chunks.push({text:text2,tf})}this.chunkCount+=chunks.length,this.documents.set(doc.key,{chunks})}return this}deleteDocument(key){const doc=this.documents.get(key);if(doc){this.documents.delete(key),this.chunkCount-=doc.chunks.length;for(const chunk of doc.chunks)for(const term of chunk.tf.keys()){const currentOccurrences=this.chunkOccurrences.get(term);if(typeof currentOccurrences=="number"){const newOccurrences=currentOccurrences-1;newOccurrences<=0?this.chunkOccurrences.delete(term):this.chunkOccurrences.set(term,newOccurrences)}}}}computeSimilarityScore(chunk,queryEmbedding,idfCache){let sum=0;for(const[term,termTfidf]of Object.entries(queryEmbedding)){const chunkTf=chunk.tf.get(term);if(!chunkTf)continue;let chunkIdf=idfCache.get(term);typeof chunkIdf!="number"&&(chunkIdf=this.computeIdf(term),idfCache.set(term,chunkIdf));const chunkTfidf=chunkTf*chunkIdf;sum+=chunkTfidf*termTfidf}return sum}computeEmbedding(input){const tf=_TfIdfCalculator.termFrequencies(input);return this.computeTfidf(tf)}computeIdf(term){var _a3;const chunkOccurrences=(_a3=this.chunkOccurrences.get(term))!=null?_a3:0;return chunkOccurrences>0?Math.log((this.chunkCount+1)/chunkOccurrences):0}computeTfidf(termFrequencies){const embedding=Object.create(null);for(const[word,occurrences]of termFrequencies){const idf=this.computeIdf(word);idf>0&&(embedding[word]=occurrences*idf)}return embedding}};__name(_TfIdfCalculator,"TfIdfCalculator");let TfIdfCalculator=_TfIdfCalculator;function normalizeTfIdfScores(scores){var _a3,_b3;const result=scores.slice(0);result.sort((a,b)=>b.score-a.score);const max=(_b3=(_a3=result[0])==null?void 0:_a3.score)!=null?_b3:0;if(max>0)for(const score2 of result)score2.score/=max;return result}__name(normalizeTfIdfScores,"normalizeTfIdfScores");var TriggerAction;(function(TriggerAction2){TriggerAction2[TriggerAction2.NO_ACTION=0]="NO_ACTION",TriggerAction2[TriggerAction2.CLOSE_PICKER=1]="CLOSE_PICKER",TriggerAction2[TriggerAction2.REFRESH_PICKER=2]="REFRESH_PICKER",TriggerAction2[TriggerAction2.REMOVE_ITEM=3]="REMOVE_ITEM"})(TriggerAction||(TriggerAction={}));function isPicksWithActive(obj){const candidate=obj;return Array.isArray(candidate.items)}__name(isPicksWithActive,"isPicksWithActive");function isFastAndSlowPicks(obj){const candidate=obj;return!!candidate.picks&&candidate.additionalPicks instanceof Promise}__name(isFastAndSlowPicks,"isFastAndSlowPicks");const _PickerQuickAccessProvider=class _PickerQuickAccessProvider extends Disposable{constructor(prefix,options){super(),this.prefix=prefix,this.options=options}provide(picker,token,runOptions){var _a3;const disposables=new DisposableStore;picker.canAcceptInBackground=!!((_a3=this.options)!=null&&_a3.canAcceptInBackground),picker.matchOnLabel=picker.matchOnDescription=picker.matchOnDetail=picker.sortByLabel=!1;let picksCts;const picksDisposable=disposables.add(new MutableDisposable),updatePickerItems=__name(async()=>{var _a4;const picksDisposables=picksDisposable.value=new DisposableStore;picksCts==null||picksCts.dispose(!0),picker.busy=!1,picksCts=new CancellationTokenSource$1(token);const picksToken=picksCts.token;let picksFilter=picker.value.substring(this.prefix.length);(_a4=this.options)!=null&&_a4.shouldSkipTrimPickFilter||(picksFilter=picksFilter.trim());const providedPicks=this._getPicks(picksFilter,picksDisposables,picksToken,runOptions),applyPicks=__name((picks,skipEmpty)=>{var _a5;let items,activeItem;if(isPicksWithActive(picks)?(items=picks.items,activeItem=picks.active):items=picks,items.length===0){if(skipEmpty)return!1;(picksFilter.length>0||picker.hideInput)&&((_a5=this.options)!=null&&_a5.noResultsPick)&&(isFunction(this.options.noResultsPick)?items=[this.options.noResultsPick(picksFilter)]:items=[this.options.noResultsPick])}return picker.items=items,activeItem&&(picker.activeItems=[activeItem]),!0},"applyPicks"),applyFastAndSlowPicks=__name(async fastAndSlowPicks=>{let fastPicksApplied=!1,slowPicksApplied=!1;await Promise.all([(async()=>{typeof fastAndSlowPicks.mergeDelay=="number"&&(await timeout(fastAndSlowPicks.mergeDelay),picksToken.isCancellationRequested)||slowPicksApplied||(fastPicksApplied=applyPicks(fastAndSlowPicks.picks,!0))})(),(async()=>{picker.busy=!0;try{const awaitedAdditionalPicks=await fastAndSlowPicks.additionalPicks;if(picksToken.isCancellationRequested)return;let picks,activePick;isPicksWithActive(fastAndSlowPicks.picks)?(picks=fastAndSlowPicks.picks.items,activePick=fastAndSlowPicks.picks.active):picks=fastAndSlowPicks.picks;let additionalPicks,additionalActivePick;if(isPicksWithActive(awaitedAdditionalPicks)?(additionalPicks=awaitedAdditionalPicks.items,additionalActivePick=awaitedAdditionalPicks.active):additionalPicks=awaitedAdditionalPicks,additionalPicks.length>0||!fastPicksApplied){let fallbackActivePick;if(!activePick&&!additionalActivePick){const fallbackActivePickCandidate=picker.activeItems[0];fallbackActivePickCandidate&&picks.indexOf(fallbackActivePickCandidate)!==-1&&(fallbackActivePick=fallbackActivePickCandidate)}applyPicks({items:[...picks,...additionalPicks],active:activePick||additionalActivePick||fallbackActivePick})}}finally{picksToken.isCancellationRequested||(picker.busy=!1),slowPicksApplied=!0}})()])},"applyFastAndSlowPicks");if(providedPicks!==null)if(isFastAndSlowPicks(providedPicks))await applyFastAndSlowPicks(providedPicks);else if(!(providedPicks instanceof Promise))applyPicks(providedPicks);else{picker.busy=!0;try{const awaitedPicks=await providedPicks;if(picksToken.isCancellationRequested)return;isFastAndSlowPicks(awaitedPicks)?await applyFastAndSlowPicks(awaitedPicks):applyPicks(awaitedPicks)}finally{picksToken.isCancellationRequested||(picker.busy=!1)}}},"updatePickerItems");disposables.add(picker.onDidChangeValue(()=>updatePickerItems())),updatePickerItems(),disposables.add(picker.onDidAccept(event=>{var _a4;if(runOptions!=null&&runOptions.handleAccept){event.inBackground||picker.hide(),(_a4=runOptions.handleAccept)==null||_a4.call(runOptions,picker.activeItems[0]);return}const[item]=picker.selectedItems;typeof(item==null?void 0:item.accept)=="function"&&(event.inBackground||picker.hide(),item.accept(picker.keyMods,event))}));const buttonTrigger=__name(async(button,item)=>{var _a4,_b3;if(typeof item.trigger!="function")return;const buttonIndex=(_b3=(_a4=item.buttons)==null?void 0:_a4.indexOf(button))!=null?_b3:-1;if(buttonIndex>=0){const result=item.trigger(buttonIndex,picker.keyMods),action=typeof result=="number"?result:await result;if(token.isCancellationRequested)return;switch(action){case TriggerAction.NO_ACTION:break;case TriggerAction.CLOSE_PICKER:picker.hide();break;case TriggerAction.REFRESH_PICKER:updatePickerItems();break;case TriggerAction.REMOVE_ITEM:{const index=picker.items.indexOf(item);if(index!==-1){const items=picker.items.slice(),removed=items.splice(index,1),activeItems=picker.activeItems.filter(activeItem=>activeItem!==removed[0]),keepScrollPositionBefore=picker.keepScrollPosition;picker.keepScrollPosition=!0,picker.items=items,activeItems&&(picker.activeItems=activeItems),picker.keepScrollPosition=keepScrollPositionBefore}break}}}},"buttonTrigger");return disposables.add(picker.onDidTriggerItemButton(({button,item})=>buttonTrigger(button,item))),disposables.add(picker.onDidTriggerSeparatorButton(({button,separator})=>buttonTrigger(button,separator))),disposables}};__name(_PickerQuickAccessProvider,"PickerQuickAccessProvider");let PickerQuickAccessProvider=_PickerQuickAccessProvider;var __decorate$2=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$2=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},AbstractCommandsQuickAccessProvider_1,CommandsHistory_1;let AbstractCommandsQuickAccessProvider=(_Ee=class extends PickerQuickAccessProvider{constructor(options,instantiationService,keybindingService,commandService,telemetryService,dialogService){super(AbstractCommandsQuickAccessProvider_1.PREFIX,options),this.instantiationService=instantiationService,this.keybindingService=keybindingService,this.commandService=commandService,this.telemetryService=telemetryService,this.dialogService=dialogService,this.commandsHistory=this._register(this.instantiationService.createInstance(CommandsHistory)),this.options=options}async _getPicks(filter,_disposables,token,runOptions){var _a3,_b3,_c2,_d2;const allCommandPicks=await this.getCommandPicks(token);if(token.isCancellationRequested)return[];const runTfidf=createSingleCallFunction(()=>{const tfidf=new TfIdfCalculator;tfidf.updateDocuments(allCommandPicks.map(commandPick=>({key:commandPick.commandId,textChunks:[this.getTfIdfChunk(commandPick)]})));const result=tfidf.calculateScores(filter,token);return normalizeTfIdfScores(result).filter(score2=>score2.score>AbstractCommandsQuickAccessProvider_1.TFIDF_THRESHOLD).slice(0,AbstractCommandsQuickAccessProvider_1.TFIDF_MAX_RESULTS)}),filteredCommandPicks=[];for(const commandPick of allCommandPicks){const labelHighlights=(_a3=AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter,commandPick.label))!=null?_a3:void 0,aliasHighlights=commandPick.commandAlias&&(_b3=AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter,commandPick.commandAlias))!=null?_b3:void 0;if(labelHighlights||aliasHighlights)commandPick.highlights={label:labelHighlights,detail:this.options.showAlias?aliasHighlights:void 0},filteredCommandPicks.push(commandPick);else if(filter===commandPick.commandId)filteredCommandPicks.push(commandPick);else if(filter.length>=3){const tfidf=runTfidf();if(token.isCancellationRequested)return[];const tfidfScore=tfidf.find(score2=>score2.key===commandPick.commandId);tfidfScore&&(commandPick.tfIdfScore=tfidfScore.score,filteredCommandPicks.push(commandPick))}}const mapLabelToCommand=new Map;for(const commandPick of filteredCommandPicks){const existingCommandForLabel=mapLabelToCommand.get(commandPick.label);existingCommandForLabel?(commandPick.description=commandPick.commandId,existingCommandForLabel.description=existingCommandForLabel.commandId):mapLabelToCommand.set(commandPick.label,commandPick)}filteredCommandPicks.sort((commandPickA,commandPickB)=>{if(commandPickA.tfIdfScore&&commandPickB.tfIdfScore)return commandPickA.tfIdfScore===commandPickB.tfIdfScore?commandPickA.label.localeCompare(commandPickB.label):commandPickB.tfIdfScore-commandPickA.tfIdfScore;if(commandPickA.tfIdfScore)return 1;if(commandPickB.tfIdfScore)return-1;const commandACounter=this.commandsHistory.peek(commandPickA.commandId),commandBCounter=this.commandsHistory.peek(commandPickB.commandId);if(commandACounter&&commandBCounter)return commandACounter>commandBCounter?-1:1;if(commandACounter)return-1;if(commandBCounter)return 1;if(this.options.suggestedCommandIds){const commandASuggestion=this.options.suggestedCommandIds.has(commandPickA.commandId),commandBSuggestion=this.options.suggestedCommandIds.has(commandPickB.commandId);if(commandASuggestion&&commandBSuggestion)return 0;if(commandASuggestion)return-1;if(commandBSuggestion)return 1}return commandPickA.label.localeCompare(commandPickB.label)});const commandPicks=[];let addOtherSeparator=!1,addSuggestedSeparator=!0,addCommonlyUsedSeparator=!!this.options.suggestedCommandIds;for(let i=0;i<filteredCommandPicks.length;i++){const commandPick=filteredCommandPicks[i];i===0&&this.commandsHistory.peek(commandPick.commandId)&&(commandPicks.push({type:"separator",label:localize("recentlyUsed","recently used")}),addOtherSeparator=!0),addSuggestedSeparator&&commandPick.tfIdfScore!==void 0&&(commandPicks.push({type:"separator",label:localize("suggested","similar commands")}),addSuggestedSeparator=!1),addCommonlyUsedSeparator&&commandPick.tfIdfScore===void 0&&!this.commandsHistory.peek(commandPick.commandId)&&((_c2=this.options.suggestedCommandIds)!=null&&_c2.has(commandPick.commandId))&&(commandPicks.push({type:"separator",label:localize("commonlyUsed","commonly used")}),addOtherSeparator=!0,addCommonlyUsedSeparator=!1),addOtherSeparator&&commandPick.tfIdfScore===void 0&&!this.commandsHistory.peek(commandPick.commandId)&&!((_d2=this.options.suggestedCommandIds)!=null&&_d2.has(commandPick.commandId))&&(commandPicks.push({type:"separator",label:localize("morecCommands","other commands")}),addOtherSeparator=!1),commandPicks.push(this.toCommandPick(commandPick,runOptions))}return this.hasAdditionalCommandPicks(filter,token)?{picks:commandPicks,additionalPicks:(async()=>{var _a4;const additionalCommandPicks=await this.getAdditionalCommandPicks(allCommandPicks,filteredCommandPicks,filter,token);if(token.isCancellationRequested)return[];const commandPicks2=additionalCommandPicks.map(commandPick=>this.toCommandPick(commandPick,runOptions));return addSuggestedSeparator&&((_a4=commandPicks2[0])==null?void 0:_a4.type)!=="separator"&&commandPicks2.unshift({type:"separator",label:localize("suggested","similar commands")}),commandPicks2})()}:commandPicks}toCommandPick(commandPick,runOptions){if(commandPick.type==="separator")return commandPick;const keybinding=this.keybindingService.lookupKeybinding(commandPick.commandId),ariaLabel=keybinding?localize("commandPickAriaLabelWithKeybinding","{0}, {1}",commandPick.label,keybinding.getAriaLabel()):commandPick.label;return{...commandPick,ariaLabel,detail:this.options.showAlias&&commandPick.commandAlias!==commandPick.label?commandPick.commandAlias:void 0,keybinding,accept:__name(async()=>{var _a3,_b3;this.commandsHistory.push(commandPick.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:commandPick.commandId,from:(_a3=runOptions==null?void 0:runOptions.from)!=null?_a3:"quick open"});try{(_b3=commandPick.args)!=null&&_b3.length?await this.commandService.executeCommand(commandPick.commandId,...commandPick.args):await this.commandService.executeCommand(commandPick.commandId)}catch(error){isCancellationError(error)||this.dialogService.error(localize("canNotRun","Command '{0}' resulted in an error",commandPick.label),toErrorMessage(error))}},"accept")}}getTfIdfChunk({label,commandAlias,commandDescription}){let chunk=label;return commandAlias&&commandAlias!==label&&(chunk+=` - ${commandAlias}`),commandDescription&&commandDescription.value!==label&&(chunk+=` - ${commandDescription.value===commandDescription.original?commandDescription.value:`${commandDescription.value} (${commandDescription.original})`}`),chunk}},__name(_Ee,"AbstractCommandsQuickAccessProvider"),AbstractCommandsQuickAccessProvider_1=_Ee,_Ee.PREFIX=">",_Ee.TFIDF_THRESHOLD=.5,_Ee.TFIDF_MAX_RESULTS=5,_Ee.WORD_FILTER=or(matchesPrefix,matchesWords,matchesContiguousSubString),_Ee);AbstractCommandsQuickAccessProvider=AbstractCommandsQuickAccessProvider_1=__decorate$2([__param$2(1,IInstantiationService),__param$2(2,IKeybindingService),__param$2(3,ICommandService),__param$2(4,ITelemetryService),__param$2(5,IDialogService)],AbstractCommandsQuickAccessProvider);let CommandsHistory=(_Fe=class extends Disposable{constructor(storageService,configurationService,logService){super(),this.storageService=storageService,this.configurationService=configurationService,this.logService=logService,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>this.updateConfiguration(e))),this._register(this.storageService.onWillSaveState(e=>{e.reason===WillSaveStateReason.SHUTDOWN&&this.saveState()}))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=CommandsHistory_1.getConfiguredCommandHistoryLength(this.configurationService),CommandsHistory_1.cache&&CommandsHistory_1.cache.limit!==this.configuredCommandsHistoryLength&&(CommandsHistory_1.cache.limit=this.configuredCommandsHistoryLength,CommandsHistory_1.hasChanges=!0))}load(){const raw=this.storageService.get(CommandsHistory_1.PREF_KEY_CACHE,0);let serializedCache;if(raw)try{serializedCache=JSON.parse(raw)}catch(error){this.logService.error(`[CommandsHistory] invalid data: ${error}`)}const cache=CommandsHistory_1.cache=new LRUCache(this.configuredCommandsHistoryLength,1);if(serializedCache){let entries2;serializedCache.usesLRU?entries2=serializedCache.entries:entries2=serializedCache.entries.sort((a,b)=>a.value-b.value),entries2.forEach(entry=>cache.set(entry.key,entry.value))}CommandsHistory_1.counter=this.storageService.getNumber(CommandsHistory_1.PREF_KEY_COUNTER,0,CommandsHistory_1.counter)}push(commandId){CommandsHistory_1.cache&&(CommandsHistory_1.cache.set(commandId,CommandsHistory_1.counter++),CommandsHistory_1.hasChanges=!0)}peek(commandId){var _a3;return(_a3=CommandsHistory_1.cache)==null?void 0:_a3.peek(commandId)}saveState(){if(!CommandsHistory_1.cache||!CommandsHistory_1.hasChanges)return;const serializedCache={usesLRU:!0,entries:[]};CommandsHistory_1.cache.forEach((value,key)=>serializedCache.entries.push({key,value})),this.storageService.store(CommandsHistory_1.PREF_KEY_CACHE,JSON.stringify(serializedCache),0,0),this.storageService.store(CommandsHistory_1.PREF_KEY_COUNTER,CommandsHistory_1.counter,0,0),CommandsHistory_1.hasChanges=!1}static getConfiguredCommandHistoryLength(configurationService){var _a3,_b3;const configuredCommandHistoryLength=(_b3=(_a3=configurationService.getValue().workbench)==null?void 0:_a3.commandPalette)==null?void 0:_b3.history;return typeof configuredCommandHistoryLength=="number"?configuredCommandHistoryLength:CommandsHistory_1.DEFAULT_COMMANDS_HISTORY_LENGTH}},__name(_Fe,"CommandsHistory"),CommandsHistory_1=_Fe,_Fe.DEFAULT_COMMANDS_HISTORY_LENGTH=50,_Fe.PREF_KEY_CACHE="commandPalette.mru.cache",_Fe.PREF_KEY_COUNTER="commandPalette.mru.counter",_Fe.counter=1,_Fe.hasChanges=!1,_Fe);CommandsHistory=CommandsHistory_1=__decorate$2([__param$2(0,IStorageService),__param$2(1,IConfigurationService),__param$2(2,ILogService)],CommandsHistory);const _AbstractEditorCommandsQuickAccessProvider=class _AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider{constructor(options,instantiationService,keybindingService,commandService,telemetryService,dialogService){super(options,instantiationService,keybindingService,commandService,telemetryService,dialogService)}getCodeEditorCommandPicks(){var _a3;const activeTextEditorControl=this.activeTextEditorControl;if(!activeTextEditorControl)return[];const editorCommandPicks=[];for(const editorAction of activeTextEditorControl.getSupportedActions()){let commandDescription;(_a3=editorAction.metadata)!=null&&_a3.description&&(isLocalizedString(editorAction.metadata.description)?commandDescription=editorAction.metadata.description:commandDescription={original:editorAction.metadata.description,value:editorAction.metadata.description}),editorCommandPicks.push({commandId:editorAction.id,commandAlias:editorAction.alias,commandDescription,label:stripIcons(editorAction.label)||editorAction.id})}return editorCommandPicks}};__name(_AbstractEditorCommandsQuickAccessProvider,"AbstractEditorCommandsQuickAccessProvider");let AbstractEditorCommandsQuickAccessProvider=_AbstractEditorCommandsQuickAccessProvider;var __decorate$1=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$1=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneCommandsQuickAccessProvider=(_Ge=class extends AbstractEditorCommandsQuickAccessProvider{get activeTextEditorControl(){var _a3;return(_a3=this.codeEditorService.getFocusedCodeEditor())!=null?_a3:void 0}constructor(instantiationService,codeEditorService,keybindingService,commandService,telemetryService,dialogService){super({showAlias:!1},instantiationService,keybindingService,commandService,telemetryService,dialogService),this.codeEditorService=codeEditorService}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}},__name(_Ge,"StandaloneCommandsQuickAccessProvider"),_Ge);StandaloneCommandsQuickAccessProvider=__decorate$1([__param$1(0,IInstantiationService),__param$1(1,ICodeEditorService),__param$1(2,IKeybindingService),__param$1(3,ICommandService),__param$1(4,ITelemetryService),__param$1(5,IDialogService)],StandaloneCommandsQuickAccessProvider);const _GotoLineAction=class _GotoLineAction extends EditorAction{constructor(){super({id:_GotoLineAction.ID,label:QuickCommandNLS.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(StandaloneCommandsQuickAccessProvider.PREFIX)}};__name(_GotoLineAction,"GotoLineAction"),_GotoLineAction.ID="editor.action.quickCommand";let GotoLineAction=_GotoLineAction;registerEditorAction(GotoLineAction),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneCommandsQuickAccessProvider,prefix:StandaloneCommandsQuickAccessProvider.PREFIX,helpEntries:[{description:QuickCommandNLS.quickCommandHelp,commandId:GotoLineAction.ID}]});var __decorate=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneReferencesController=(_He=class extends ReferencesController{constructor(editor2,contextKeyService,editorService,notificationService,instantiationService,storageService,configurationService){super(!0,editor2,contextKeyService,editorService,notificationService,instantiationService,storageService,configurationService)}},__name(_He,"StandaloneReferencesController"),_He);StandaloneReferencesController=__decorate([__param(1,IContextKeyService),__param(2,ICodeEditorService),__param(3,INotificationService),__param(4,IInstantiationService),__param(5,IStorageService),__param(6,IConfigurationService)],StandaloneReferencesController),registerEditorContribution(ReferencesController.ID,StandaloneReferencesController,4);const _ToggleHighContrast=class _ToggleHighContrast extends EditorAction{constructor(){super({id:"editor.action.toggleHighContrast",label:ToggleHighContrastNLS.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(accessor,editor2){const standaloneThemeService=accessor.get(IStandaloneThemeService),currentTheme=standaloneThemeService.getColorTheme();isHighContrast(currentTheme.type)?(standaloneThemeService.setTheme(this._originalThemeName||(isDark(currentTheme.type)?VS_DARK_THEME_NAME:VS_LIGHT_THEME_NAME)),this._originalThemeName=null):(standaloneThemeService.setTheme(isDark(currentTheme.type)?HC_BLACK_THEME_NAME:HC_LIGHT_THEME_NAME),this._originalThemeName=currentTheme.themeName)}};__name(_ToggleHighContrast,"ToggleHighContrast");let ToggleHighContrast=_ToggleHighContrast;registerEditorAction(ToggleHighContrast);var __defProp$h=Object.defineProperty,__getOwnPropDesc$h=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$h(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$h(target,key,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$3");exports2.ScriptEditorService=(_Ie=class extends core.Disposable{constructor(_configService){super();__publicField(this,"_editorInstance",null);this._configService=_configService}setEditorInstance(editor2){return this._editorInstance=editor2,core.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){if(!window.MonacoEnvironment){const config=this._configService.getConfig(PLUGIN_CONFIG_KEY);window.MonacoEnvironment={getWorkerUrl:config==null?void 0:config.getWorkerUrl}}}},__name(_Ie,"ScriptEditorService"),_Ie),exports2.ScriptEditorService=__decorateClass$3([__decorateParam$3(0,core.IConfigService)],exports2.ScriptEditorService);var __defProp$g=Object.defineProperty,__getOwnPropDesc$g=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$g(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$g(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2");const IUniscriptExecutionService=core.createIdentifier("univer.uniscript.execution-service");let UniscriptExecutionService=(_Je=class extends core.Disposable{constructor(_logService,_injector){super(),this._logService=_logService,this._injector=_injector}async execute(code){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const apiInstance=core.FUniver.newAPI(this._injector),scriptFunction=new Function("univerAPI",`(() => {${code}})()`);try{return scriptFunction(apiInstance),!0}catch(e){return this._logService.error(e),!1}}},__name(_Je,"UniscriptExecutionService"),_Je);UniscriptExecutionService=__decorateClass$2([__decorateParam$2(0,core.ILogService),__decorateParam$2(1,core.Inject(core.Injector))],UniscriptExecutionService);const styles={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function ScriptEditorPanel(){const editorContentRef=require$$0.useRef(null),editorContainerRef=require$$0.useRef(null),monacoEditorRef=require$$0.useRef(null),localeService=core.useDependency(core.LocaleService),shortcutService=core.useDependency(ui.IShortcutService),editorService=core.useDependency(exports2.ScriptEditorService);require$$0.useEffect(()=>{const containerElement=editorContainerRef.current,contentElement=editorContentRef.current;let disposableCollection=null,resizeObserver=null;if(containerElement&&contentElement){editorService.requireVscodeEditor();const monacoEditor=monacoEditorRef.current=editor.create(containerElement,{value:"",language:"javascript"});resizeObserver=new ResizeObserver(()=>{let timer=requestIdleCallback(()=>{if(!timer)return;const{height,width:width2}=contentElement.getBoundingClientRect();monacoEditor.layout({width:width2,height}),timer=void 0})}),resizeObserver.observe(contentElement);let terminateEscaping;disposableCollection=new core.DisposableCollection,disposableCollection.add(editorService.setEditorInstance(monacoEditor)),disposableCollection.add(monacoEditor.onDidFocusEditorWidget(()=>{terminateEscaping=shortcutService.forceEscape()})),disposableCollection.add(monacoEditor.onDidBlurEditorWidget(()=>{terminateEscaping==null||terminateEscaping.dispose(),terminateEscaping=void 0})),disposableCollection.add(core.toDisposable(()=>terminateEscaping==null?void 0:terminateEscaping.dispose()))}return()=>{resizeObserver&&contentElement&&resizeObserver.unobserve(contentElement),disposableCollection==null||disposableCollection.dispose()}},[editorService,shortcutService]);const startExecution=useExecution(monacoEditorRef);return jsxRuntimeExports.jsxs("div",{className:styles.scriptEditorPanel,children:[jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContent,ref:editorContentRef,children:jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContainer,ref:editorContainerRef})}),jsxRuntimeExports.jsx("div",{className:styles.scriptEditorActions,children:jsxRuntimeExports.jsx(design.Button,{type:"primary",size:"small",onClick:startExecution,children:localeService.t("script-panel.panel.execute")})})]})}__name(ScriptEditorPanel,"ScriptEditorPanel");function useExecution(monacoEditorRef){const scriptService=core.useDependency(IUniscriptExecutionService),messageService=core.useDependency(ui.IMessageService),localeService=core.useDependency(core.LocaleService);return require$$0.useCallback(()=>{var _a3;const model=(_a3=monacoEditorRef.current)==null?void 0:_a3.getModel();model&&scriptService.execute(model.getValue()).then(()=>{messageService.show({content:localeService.t("uniscript.message.success"),type:design.MessageType.Success})}).catch(()=>{messageService.show({content:localeService.t("uniscript.message.failed"),type:design.MessageType.Error})})},[localeService,messageService,monacoEditorRef,scriptService])}__name(useExecution,"useExecution");function UniscriptMenuItemFactory(accessor){return{id:ToggleScriptPanelOperation.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission,sheets.WorksheetSetCellValuePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}}__name(UniscriptMenuItemFactory,"UniscriptMenuItemFactory");const menuSchema={[ui.RibbonStartGroup.OTHERS]:{[ToggleScriptPanelOperation.id]:{order:5,menuItemFactory:UniscriptMenuItemFactory}}};var __defProp$f=Object.defineProperty,__getOwnPropDesc$f=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$f(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$f(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");let UniscriptController=(_Ke=class extends core.Disposable{constructor(_menuManagerService,commandService,componentManager){super(),this._menuManagerService=_menuManagerService,this._menuManagerService.mergeMenu(menuSchema),this.disposeWithMe(componentManager.register(ScriptPanelComponentName,ScriptEditorPanel)),this.disposeWithMe(commandService.registerCommand(ToggleScriptPanelOperation))}},__name(_Ke,"UniscriptController"),_Ke);UniscriptController=__decorateClass$1([__decorateParam$1(0,ui.IMenuManagerService),__decorateParam$1(1,core.ICommandService),__decorateParam$1(2,core.Inject(ui.ComponentManager))],UniscriptController);var __defProp$e=Object.defineProperty,__getOwnPropDesc$e=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$e(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$e(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam");const PLUGIN_NAME="UNIVER_UNISCRIPT_PLUGIN";exports2.UniverUniscriptPlugin=(_Le=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_configService){super(),this._config=_config,this._injector=_injector,this._configService=_configService;const{menu,...rest}=this._config;menu&&this._configService.setConfig("menu",menu,{merge:!0}),this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){const injector=this._injector;[[UniscriptController],[exports2.ScriptEditorService],[ScriptPanelService]].forEach(d=>injector.add(d)),this.registerExecution()}onSteady(){this._injector.get(UniscriptController)}registerExecution(){this._injector.add([IUniscriptExecutionService,{useClass:UniscriptExecutionService}])}},__name(_Le,"UniverUniscriptPlugin"),__publicField(_Le,"pluginName",PLUGIN_NAME),_Le),exports2.UniverUniscriptPlugin=__decorateClass([__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.IConfigService)],exports2.UniverUniscriptPlugin);/*!-----------------------------------------------------------------------------
1163
+ `)};const result=await provider.provideRenameEdits(this.model,this.position,newName,token);if(result){if(result.rejectReason)return this._provideRenameEdits(newName,i+1,rejects.concat(result.rejectReason),token)}else return this._provideRenameEdits(newName,i+1,rejects.concat(localize("no result","No result.")),token);return result}};__name(_RenameSkeleton,"RenameSkeleton");let RenameSkeleton=_RenameSkeleton;async function rename(registry,model,position,newName){const skeleton=new RenameSkeleton(model,position,registry),loc=await skeleton.resolveRenameLocation(CancellationToken.None);return loc!=null&&loc.rejectReason?{edits:[],rejectReason:loc.rejectReason}:skeleton.provideRenameEdits(newName,CancellationToken.None)}__name(rename,"rename");let RenameController=(_Zd=class{static get(editor2){return editor2.getContribution(RenameController_1.ID)}constructor(editor2,_instaService,_notificationService,_bulkEditService,_progressService,_logService,_configService,_languageFeaturesService,_telemetryService){this.editor=editor2,this._instaService=_instaService,this._notificationService=_notificationService,this._bulkEditService=_bulkEditService,this._progressService=_progressService,this._logService=_logService,this._configService=_configService,this._languageFeaturesService=_languageFeaturesService,this._telemetryService=_telemetryService,this._disposableStore=new DisposableStore,this._cts=new CancellationTokenSource$1,this._renameWidget=this._disposableStore.add(this._instaService.createInstance(RenameWidget,this.editor,["acceptRenameInput","acceptRenameInputWithPreview"]))}dispose(){this._disposableStore.dispose(),this._cts.dispose(!0)}async run(){var _a3,_b3;const trace=this._logService.trace.bind(this._logService,"[rename]");if(this._cts.dispose(!0),this._cts=new CancellationTokenSource$1,!this.editor.hasModel()){trace("editor has no model");return}const position=this.editor.getPosition(),skeleton=new RenameSkeleton(this.editor.getModel(),position,this._languageFeaturesService.renameProvider);if(!skeleton.hasProvider()){trace("skeleton has no provider");return}const cts1=new EditorStateCancellationTokenSource(this.editor,5,void 0,this._cts.token);let loc;try{trace("resolving rename location");const resolveLocationOperation=skeleton.resolveRenameLocation(cts1.token);this._progressService.showWhile(resolveLocationOperation,250),loc=await resolveLocationOperation,trace("resolved rename location")}catch(e){e instanceof CancellationError?trace("resolve rename location cancelled",JSON.stringify(e,null," ")):(trace("resolve rename location failed",e instanceof Error?e:JSON.stringify(e,null," ")),(typeof e=="string"||isMarkdownString(e))&&((_a3=MessageController.get(this.editor))==null||_a3.showMessage(e||localize("resolveRenameLocationFailed","An unknown error occurred while resolving rename location"),position)));return}finally{cts1.dispose()}if(!loc){trace("returning early - no loc");return}if(loc.rejectReason){trace(`returning early - rejected with reason: ${loc.rejectReason}`,loc.rejectReason),(_b3=MessageController.get(this.editor))==null||_b3.showMessage(loc.rejectReason,position);return}if(cts1.token.isCancellationRequested){trace("returning early - cts1 cancelled");return}const cts2=new EditorStateCancellationTokenSource(this.editor,5,loc.range,this._cts.token),model=this.editor.getModel(),newSymbolNamesProviders=this._languageFeaturesService.newSymbolNamesProvider.all(model),resolvedNewSymbolnamesProviders=await Promise.all(newSymbolNamesProviders.map(async p2=>{var _a4;return[p2,(_a4=await p2.supportsAutomaticNewSymbolNamesTriggerKind)!=null?_a4:!1]})),requestRenameSuggestions=__name((triggerKind,cts)=>{let providers=resolvedNewSymbolnamesProviders.slice();return triggerKind===NewSymbolNameTriggerKind$1.Automatic&&(providers=providers.filter(([_,supportsAutomatic])=>supportsAutomatic)),providers.map(([p2])=>p2.provideNewSymbolNames(model,loc.range,triggerKind,cts))},"requestRenameSuggestions");trace("creating rename input field and awaiting its result");const supportPreview=this._bulkEditService.hasPreviewHandler()&&this._configService.getValue(this.editor.getModel().uri,"editor.rename.enablePreview"),inputFieldResult=await this._renameWidget.getInput(loc.range,loc.text,supportPreview,newSymbolNamesProviders.length>0?requestRenameSuggestions:void 0,cts2);if(trace("received response from rename input field"),newSymbolNamesProviders.length>0&&this._reportTelemetry(newSymbolNamesProviders.length,model.getLanguageId(),inputFieldResult),typeof inputFieldResult=="boolean"){trace(`returning early - rename input field response - ${inputFieldResult}`),inputFieldResult&&this.editor.focus(),cts2.dispose();return}this.editor.focus(),trace("requesting rename edits");const renameOperation=raceCancellation(skeleton.provideRenameEdits(inputFieldResult.newName,cts2.token),cts2.token).then(async renameResult=>{if(!renameResult){trace("returning early - no rename edits result");return}if(!this.editor.hasModel()){trace("returning early - no model after rename edits are provided");return}if(renameResult.rejectReason){trace(`returning early - rejected with reason: ${renameResult.rejectReason}`),this._notificationService.info(renameResult.rejectReason);return}this.editor.setSelection(Range$5.fromPositions(this.editor.getSelection().getPosition())),trace("applying edits"),this._bulkEditService.apply(renameResult,{editor:this.editor,showPreview:inputFieldResult.wantsPreview,label:localize("label","Renaming '{0}' to '{1}'",loc==null?void 0:loc.text,inputFieldResult.newName),code:"undoredo.rename",quotableLabel:localize("quotableLabel","Renaming {0} to {1}",loc==null?void 0:loc.text,inputFieldResult.newName),respectAutoSaveConfig:!0}).then(result=>{trace("edits applied"),result.ariaSummary&&alert(localize("aria","Successfully renamed '{0}' to '{1}'. Summary: {2}",loc.text,inputFieldResult.newName,result.ariaSummary))}).catch(err=>{trace(`error when applying edits ${JSON.stringify(err,null," ")}`),this._notificationService.error(localize("rename.failedApply","Rename failed to apply edits")),this._logService.error(err)})},err=>{trace("error when providing rename edits",JSON.stringify(err,null," ")),this._notificationService.error(localize("rename.failed","Rename failed to compute edits")),this._logService.error(err)}).finally(()=>{cts2.dispose()});return trace("returning rename operation"),this._progressService.showWhile(renameOperation,250),renameOperation}acceptRenameInput(wantsPreview){this._renameWidget.acceptInput(wantsPreview)}cancelRenameInput(){this._renameWidget.cancelInput(!0,"cancelRenameInput command")}focusNextRenameSuggestion(){this._renameWidget.focusNextRenameSuggestion()}focusPreviousRenameSuggestion(){this._renameWidget.focusPreviousRenameSuggestion()}_reportTelemetry(nRenameSuggestionProviders,languageId,inputFieldResult){const value=typeof inputFieldResult=="boolean"?{kind:"cancelled",languageId,nRenameSuggestionProviders}:{kind:"accepted",languageId,nRenameSuggestionProviders,source:inputFieldResult.stats.source.k,nRenameSuggestions:inputFieldResult.stats.nRenameSuggestions,timeBeforeFirstInputFieldEdit:inputFieldResult.stats.timeBeforeFirstInputFieldEdit,wantsPreview:inputFieldResult.wantsPreview,nRenameSuggestionsInvocations:inputFieldResult.stats.nRenameSuggestionsInvocations,hadAutomaticRenameSuggestionsInvocation:inputFieldResult.stats.hadAutomaticRenameSuggestionsInvocation};this._telemetryService.publicLog2("renameInvokedEvent",value)}},__name(_Zd,"RenameController"),RenameController_1=_Zd,_Zd.ID="editor.contrib.renameController",_Zd);RenameController=RenameController_1=__decorate$n([__param$n(1,IInstantiationService),__param$n(2,INotificationService),__param$n(3,IBulkEditService),__param$n(4,IEditorProgressService),__param$n(5,ILogService),__param$n(6,ITextResourceConfigurationService),__param$n(7,ILanguageFeaturesService),__param$n(8,ITelemetryService)],RenameController);const _RenameAction=class _RenameAction extends EditorAction{constructor(){super({id:"editor.action.rename",label:localize("rename.label","Rename Symbol"),alias:"Rename Symbol",precondition:ContextKeyExpr.and(EditorContextKeys.writable,EditorContextKeys.hasRenameProvider),kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:60,weight:100},contextMenuOpts:{group:"1_modification",order:1.1}})}runCommand(accessor,args){const editorService=accessor.get(ICodeEditorService),[uri,pos]=Array.isArray(args)&&args||[void 0,void 0];return URI$3.isUri(uri)&&Position$4.isIPosition(pos)?editorService.openCodeEditor({resource:uri},editorService.getActiveCodeEditor()).then(editor2=>{editor2&&(editor2.setPosition(pos),editor2.invokeWithinContext(accessor2=>(this.reportTelemetry(accessor2,editor2),this.run(accessor2,editor2))))},onUnexpectedError):super.runCommand(accessor,args)}run(accessor,editor2){const logService=accessor.get(ILogService),controller=RenameController.get(editor2);return controller?(logService.trace("[RenameAction] got controller, running..."),controller.run()):(logService.trace("[RenameAction] returning early - controller missing"),Promise.resolve())}};__name(_RenameAction,"RenameAction");let RenameAction=_RenameAction;registerEditorContribution(RenameController.ID,RenameController,4),registerEditorAction(RenameAction);const RenameCommand=EditorCommand.bindToContribution(RenameController.get);registerEditorCommand(new RenameCommand({id:"acceptRenameInput",precondition:CONTEXT_RENAME_INPUT_VISIBLE,handler:__name(x=>x.acceptRenameInput(!1),"handler"),kbOpts:{weight:199,kbExpr:ContextKeyExpr.and(EditorContextKeys.focus,ContextKeyExpr.not("isComposing")),primary:3}})),registerEditorCommand(new RenameCommand({id:"acceptRenameInputWithPreview",precondition:ContextKeyExpr.and(CONTEXT_RENAME_INPUT_VISIBLE,ContextKeyExpr.has("config.editor.rename.enablePreview")),handler:__name(x=>x.acceptRenameInput(!0),"handler"),kbOpts:{weight:199,kbExpr:ContextKeyExpr.and(EditorContextKeys.focus,ContextKeyExpr.not("isComposing")),primary:2051}})),registerEditorCommand(new RenameCommand({id:"cancelRenameInput",precondition:CONTEXT_RENAME_INPUT_VISIBLE,handler:__name(x=>x.cancelRenameInput(),"handler"),kbOpts:{weight:199,kbExpr:EditorContextKeys.focus,primary:9,secondary:[1033]}})),registerAction2((__d=class extends Action2{constructor(){super({id:"focusNextRenameSuggestion",title:{...localize2("focusNextRenameSuggestion","Focus Next Rename Suggestion")},precondition:CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{primary:18,weight:199}]})}run(accessor){const currentEditor=accessor.get(ICodeEditorService).getFocusedCodeEditor();if(!currentEditor)return;const controller=RenameController.get(currentEditor);controller&&controller.focusNextRenameSuggestion()}},__name(__d,"FocusNextRenameSuggestion"),__d)),registerAction2((_$d=class extends Action2{constructor(){super({id:"focusPreviousRenameSuggestion",title:{...localize2("focusPreviousRenameSuggestion","Focus Previous Rename Suggestion")},precondition:CONTEXT_RENAME_INPUT_VISIBLE,keybinding:[{primary:16,weight:199}]})}run(accessor){const currentEditor=accessor.get(ICodeEditorService).getFocusedCodeEditor();if(!currentEditor)return;const controller=RenameController.get(currentEditor);controller&&controller.focusPreviousRenameSuggestion()}},__name(_$d,"FocusPreviousRenameSuggestion"),_$d)),registerModelAndPositionCommand("_executeDocumentRenameProvider",function(accessor,model,position,...args){const[newName]=args;assertType(typeof newName=="string");const{renameProvider}=accessor.get(ILanguageFeaturesService);return rename(renameProvider,model,position,newName)}),registerModelAndPositionCommand("_executePrepareRename",async function(accessor,model,position){const{renameProvider}=accessor.get(ILanguageFeaturesService),loc=await new RenameSkeleton(model,position,renameProvider).resolveRenameLocation(CancellationToken.None);if(loc!=null&&loc.rejectReason)throw new Error(loc.rejectReason);return loc}),Registry.as(Extensions$6.Configuration).registerConfiguration({id:"editor",properties:{"editor.rename.enablePreview":{scope:5,description:localize("enablePreview","Enable/disable the ability to preview changes before renaming"),default:!0,type:"boolean"}}});var __decorate$m=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$m=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let SectionHeaderDetector=(_ae=class extends Disposable{constructor(editor2,languageConfigurationService,editorWorkerService){super(),this.editor=editor2,this.languageConfigurationService=languageConfigurationService,this.editorWorkerService=editorWorkerService,this.decorations=this.editor.createDecorationsCollection(),this.options=this.createOptions(editor2.getOption(73)),this.computePromise=null,this.currentOccurrences={},this._register(editor2.onDidChangeModel(e=>{this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(editor2.onDidChangeModelLanguage(e=>{this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0)})),this._register(languageConfigurationService.onDidChange(e=>{var _a3;const editorLanguageId=(_a3=this.editor.getModel())==null?void 0:_a3.getLanguageId();editorLanguageId&&e.affects(editorLanguageId)&&(this.currentOccurrences={},this.options=this.createOptions(editor2.getOption(73)),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(editor2.onDidChangeConfiguration(e=>{this.options&&!e.hasChanged(73)||(this.options=this.createOptions(editor2.getOption(73)),this.updateDecorations([]),this.stop(),this.computeSectionHeaders.schedule(0))})),this._register(this.editor.onDidChangeModelContent(e=>{this.computeSectionHeaders.schedule()})),this._register(editor2.onDidChangeModelTokens(e=>{this.computeSectionHeaders.isScheduled()||this.computeSectionHeaders.schedule(1e3)})),this.computeSectionHeaders=this._register(new RunOnceScheduler(()=>{this.findSectionHeaders()},250)),this.computeSectionHeaders.schedule(0)}createOptions(minimap){if(!minimap||!this.editor.hasModel())return;const languageId=this.editor.getModel().getLanguageId();if(!languageId)return;const commentsConfiguration=this.languageConfigurationService.getLanguageConfiguration(languageId).comments,foldingRules=this.languageConfigurationService.getLanguageConfiguration(languageId).foldingRules;if(!(!commentsConfiguration&&!(foldingRules!=null&&foldingRules.markers)))return{foldingRules,findMarkSectionHeaders:minimap.showMarkSectionHeaders,findRegionSectionHeaders:minimap.showRegionSectionHeaders}}findSectionHeaders(){var _a3,_b3;if(!this.editor.hasModel()||!((_a3=this.options)!=null&&_a3.findMarkSectionHeaders)&&!((_b3=this.options)!=null&&_b3.findRegionSectionHeaders))return;const model=this.editor.getModel();if(model.isDisposed()||model.isTooLargeForSyncing())return;const modelVersionId=model.getVersionId();this.editorWorkerService.findSectionHeaders(model.uri,this.options).then(sectionHeaders=>{model.isDisposed()||model.getVersionId()!==modelVersionId||this.updateDecorations(sectionHeaders)})}updateDecorations(sectionHeaders){const model=this.editor.getModel();model&&(sectionHeaders=sectionHeaders.filter(sectionHeader=>{if(!sectionHeader.shouldBeInComments)return!0;const validRange=model.validateRange(sectionHeader.range),tokens=model.tokenization.getLineTokens(validRange.startLineNumber),idx=tokens.findTokenIndexAtOffset(validRange.startColumn-1),tokenType=tokens.getStandardTokenType(idx);return tokens.getLanguageId(idx)===model.getLanguageId()&&tokenType===1}));const oldDecorations=Object.values(this.currentOccurrences).map(occurrence=>occurrence.decorationId),newDecorations=sectionHeaders.map(sectionHeader=>decoration(sectionHeader));this.editor.changeDecorations(changeAccessor=>{const decorations=changeAccessor.deltaDecorations(oldDecorations,newDecorations);this.currentOccurrences={};for(let i=0,len=decorations.length;i<len;i++){const occurrence={sectionHeader:sectionHeaders[i],decorationId:decorations[i]};this.currentOccurrences[occurrence.decorationId]=occurrence}})}stop(){this.computeSectionHeaders.cancel(),this.computePromise&&(this.computePromise.cancel(),this.computePromise=null)}dispose(){super.dispose(),this.stop(),this.decorations.clear()}},__name(_ae,"SectionHeaderDetector"),_ae.ID="editor.sectionHeaderDetector",_ae);SectionHeaderDetector=__decorate$m([__param$m(1,ILanguageConfigurationService),__param$m(2,IEditorWorkerService)],SectionHeaderDetector);function decoration(sectionHeader){return{range:sectionHeader.range,options:ModelDecorationOptions.createDynamic({description:"section-header",stickiness:3,collapseOnReplaceEdit:!0,minimap:{color:void 0,position:1,sectionHeaderStyle:sectionHeader.hasSeparatorLine?2:1,sectionHeaderText:sectionHeader.text}})}}__name(decoration,"decoration"),registerEditorContribution(SectionHeaderDetector.ID,SectionHeaderDetector,1);function reverseEndianness(arr){for(let i=0,len=arr.length;i<len;i+=4){const b0=arr[i+0],b1=arr[i+1],b2=arr[i+2],b3=arr[i+3];arr[i+0]=b3,arr[i+1]=b2,arr[i+2]=b1,arr[i+3]=b0}}__name(reverseEndianness,"reverseEndianness");function toLittleEndianBuffer(arr){const uint8Arr=new Uint8Array(arr.buffer,arr.byteOffset,arr.length*4);return isLittleEndian()||reverseEndianness(uint8Arr),VSBuffer.wrap(uint8Arr)}__name(toLittleEndianBuffer,"toLittleEndianBuffer");function encodeSemanticTokensDto(semanticTokens){const dest=new Uint32Array(encodeSemanticTokensDtoSize(semanticTokens));let offset=0;if(dest[offset++]=semanticTokens.id,semanticTokens.type==="full")dest[offset++]=1,dest[offset++]=semanticTokens.data.length,dest.set(semanticTokens.data,offset),offset+=semanticTokens.data.length;else{dest[offset++]=2,dest[offset++]=semanticTokens.deltas.length;for(const delta of semanticTokens.deltas)dest[offset++]=delta.start,dest[offset++]=delta.deleteCount,delta.data?(dest[offset++]=delta.data.length,dest.set(delta.data,offset),offset+=delta.data.length):dest[offset++]=0}return toLittleEndianBuffer(dest)}__name(encodeSemanticTokensDto,"encodeSemanticTokensDto");function encodeSemanticTokensDtoSize(semanticTokens){let result=0;if(result+=2,semanticTokens.type==="full")result+=1+semanticTokens.data.length;else{result+=1,result+=3*semanticTokens.deltas.length;for(const delta of semanticTokens.deltas)delta.data&&(result+=delta.data.length)}return result}__name(encodeSemanticTokensDtoSize,"encodeSemanticTokensDtoSize");function isSemanticTokens(v){return v&&!!v.data}__name(isSemanticTokens,"isSemanticTokens");function isSemanticTokensEdits(v){return v&&Array.isArray(v.edits)}__name(isSemanticTokensEdits,"isSemanticTokensEdits");const _DocumentSemanticTokensResult=class _DocumentSemanticTokensResult{constructor(provider,tokens,error){this.provider=provider,this.tokens=tokens,this.error=error}};__name(_DocumentSemanticTokensResult,"DocumentSemanticTokensResult");let DocumentSemanticTokensResult=_DocumentSemanticTokensResult;function hasDocumentSemanticTokensProvider(registry,model){return registry.has(model)}__name(hasDocumentSemanticTokensProvider,"hasDocumentSemanticTokensProvider");function getDocumentSemanticTokensProviders(registry,model){const groups=registry.orderedGroups(model);return groups.length>0?groups[0]:[]}__name(getDocumentSemanticTokensProviders,"getDocumentSemanticTokensProviders");async function getDocumentSemanticTokens(registry,model,lastProvider,lastResultId,token){const providers=getDocumentSemanticTokensProviders(registry,model),results=await Promise.all(providers.map(async provider=>{let result,error=null;try{result=await provider.provideDocumentSemanticTokens(model,provider===lastProvider?lastResultId:null,token)}catch(err){error=err,result=null}return(!result||!isSemanticTokens(result)&&!isSemanticTokensEdits(result))&&(result=null),new DocumentSemanticTokensResult(provider,result,error)}));for(const result of results){if(result.error)throw result.error;if(result.tokens)return result}return results.length>0?results[0]:null}__name(getDocumentSemanticTokens,"getDocumentSemanticTokens");function _getDocumentSemanticTokensProviderHighestGroup(registry,model){const result=registry.orderedGroups(model);return result.length>0?result[0]:null}__name(_getDocumentSemanticTokensProviderHighestGroup,"_getDocumentSemanticTokensProviderHighestGroup");const _DocumentRangeSemanticTokensResult=class _DocumentRangeSemanticTokensResult{constructor(provider,tokens){this.provider=provider,this.tokens=tokens}};__name(_DocumentRangeSemanticTokensResult,"DocumentRangeSemanticTokensResult");let DocumentRangeSemanticTokensResult=_DocumentRangeSemanticTokensResult;function hasDocumentRangeSemanticTokensProvider(providers,model){return providers.has(model)}__name(hasDocumentRangeSemanticTokensProvider,"hasDocumentRangeSemanticTokensProvider");function getDocumentRangeSemanticTokensProviders(providers,model){const groups=providers.orderedGroups(model);return groups.length>0?groups[0]:[]}__name(getDocumentRangeSemanticTokensProviders,"getDocumentRangeSemanticTokensProviders");async function getDocumentRangeSemanticTokens(registry,model,range2,token){const providers=getDocumentRangeSemanticTokensProviders(registry,model),results=await Promise.all(providers.map(async provider=>{let result;try{result=await provider.provideDocumentRangeSemanticTokens(model,range2,token)}catch(err){onUnexpectedExternalError(err),result=null}return(!result||!isSemanticTokens(result))&&(result=null),new DocumentRangeSemanticTokensResult(provider,result)}));for(const result of results)if(result.tokens)return result;return results.length>0?results[0]:null}__name(getDocumentRangeSemanticTokens,"getDocumentRangeSemanticTokens"),CommandsRegistry.registerCommand("_provideDocumentSemanticTokensLegend",async(accessor,...args)=>{const[uri]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),providers=_getDocumentSemanticTokensProviderHighestGroup(documentSemanticTokensProvider,model);return providers?providers[0].getLegend():accessor.get(ICommandService).executeCommand("_provideDocumentRangeSemanticTokensLegend",uri)}),CommandsRegistry.registerCommand("_provideDocumentSemanticTokens",async(accessor,...args)=>{const[uri]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentSemanticTokensProvider}=accessor.get(ILanguageFeaturesService);if(!hasDocumentSemanticTokensProvider(documentSemanticTokensProvider,model))return accessor.get(ICommandService).executeCommand("_provideDocumentRangeSemanticTokens",uri,model.getFullModelRange());const r2=await getDocumentSemanticTokens(documentSemanticTokensProvider,model,null,null,CancellationToken.None);if(!r2)return;const{provider,tokens}=r2;if(!tokens||!isSemanticTokens(tokens))return;const buff=encodeSemanticTokensDto({id:0,type:"full",data:tokens.data});return tokens.resultId&&provider.releaseDocumentSemanticTokens(tokens.resultId),buff}),CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokensLegend",async(accessor,...args)=>{const[uri,range2]=args;assertType(uri instanceof URI$3);const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentRangeSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),providers=getDocumentRangeSemanticTokensProviders(documentRangeSemanticTokensProvider,model);if(providers.length===0)return;if(providers.length===1)return providers[0].getLegend();if(!range2||!Range$5.isIRange(range2))return console.warn("provideDocumentRangeSemanticTokensLegend might be out-of-sync with provideDocumentRangeSemanticTokens unless a range argument is passed in"),providers[0].getLegend();const result=await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider,model,Range$5.lift(range2),CancellationToken.None);if(result)return result.provider.getLegend()}),CommandsRegistry.registerCommand("_provideDocumentRangeSemanticTokens",async(accessor,...args)=>{const[uri,range2]=args;assertType(uri instanceof URI$3),assertType(Range$5.isIRange(range2));const model=accessor.get(IModelService).getModel(uri);if(!model)return;const{documentRangeSemanticTokensProvider}=accessor.get(ILanguageFeaturesService),result=await getDocumentRangeSemanticTokens(documentRangeSemanticTokensProvider,model,Range$5.lift(range2),CancellationToken.None);if(!(!result||!result.tokens))return encodeSemanticTokensDto({id:0,type:"full",data:result.tokens.data})});const SEMANTIC_HIGHLIGHTING_SETTING_ID="editor.semanticHighlighting";function isSemanticColoringEnabled(model,themeService,configurationService){var _a3;const setting=(_a3=configurationService.getValue(SEMANTIC_HIGHLIGHTING_SETTING_ID,{overrideIdentifier:model.getLanguageId(),resource:model.uri}))==null?void 0:_a3.enabled;return typeof setting=="boolean"?setting:themeService.getColorTheme().semanticHighlighting}__name(isSemanticColoringEnabled,"isSemanticColoringEnabled");var __decorate$l=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$l=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ModelSemanticColoring_1;let DocumentSemanticTokensFeature=(_be=class extends Disposable{constructor(semanticTokensStylingService,modelService,themeService,configurationService,languageFeatureDebounceService,languageFeaturesService){super(),this._watchers=Object.create(null);const register2=__name(model=>{this._watchers[model.uri.toString()]=new ModelSemanticColoring(model,semanticTokensStylingService,themeService,languageFeatureDebounceService,languageFeaturesService)},"register"),deregister=__name((model,modelSemanticColoring)=>{modelSemanticColoring.dispose(),delete this._watchers[model.uri.toString()]},"deregister"),handleSettingOrThemeChange=__name(()=>{for(const model of modelService.getModels()){const curr=this._watchers[model.uri.toString()];isSemanticColoringEnabled(model,themeService,configurationService)?curr||register2(model):curr&&deregister(model,curr)}},"handleSettingOrThemeChange");modelService.getModels().forEach(model=>{isSemanticColoringEnabled(model,themeService,configurationService)&&register2(model)}),this._register(modelService.onModelAdded(model=>{isSemanticColoringEnabled(model,themeService,configurationService)&&register2(model)})),this._register(modelService.onModelRemoved(model=>{const curr=this._watchers[model.uri.toString()];curr&&deregister(model,curr)})),this._register(configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)&&handleSettingOrThemeChange()})),this._register(themeService.onDidColorThemeChange(handleSettingOrThemeChange))}dispose(){for(const watcher of Object.values(this._watchers))watcher.dispose();super.dispose()}},__name(_be,"DocumentSemanticTokensFeature"),_be);DocumentSemanticTokensFeature=__decorate$l([__param$l(0,ISemanticTokensStylingService),__param$l(1,IModelService),__param$l(2,IThemeService),__param$l(3,IConfigurationService),__param$l(4,ILanguageFeatureDebounceService),__param$l(5,ILanguageFeaturesService)],DocumentSemanticTokensFeature);let ModelSemanticColoring=(_ce=class extends Disposable{constructor(model,_semanticTokensStylingService,themeService,languageFeatureDebounceService,languageFeaturesService){super(),this._semanticTokensStylingService=_semanticTokensStylingService,this._isDisposed=!1,this._model=model,this._provider=languageFeaturesService.documentSemanticTokensProvider,this._debounceInformation=languageFeatureDebounceService.for(this._provider,"DocumentSemanticTokens",{min:ModelSemanticColoring_1.REQUEST_MIN_DELAY,max:ModelSemanticColoring_1.REQUEST_MAX_DELAY}),this._fetchDocumentSemanticTokens=this._register(new RunOnceScheduler(()=>this._fetchDocumentSemanticTokensNow(),ModelSemanticColoring_1.REQUEST_MIN_DELAY)),this._currentDocumentResponse=null,this._currentDocumentRequestCancellationTokenSource=null,this._documentProvidersChangeListeners=[],this._providersChangedDuringRequest=!1,this._register(this._model.onDidChangeContent(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeAttached(()=>{this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(this._model.onDidChangeLanguage(()=>{this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(0)}));const bindDocumentChangeListeners=__name(()=>{dispose(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[];for(const provider of this._provider.all(model))typeof provider.onDidChange=="function"&&this._documentProvidersChangeListeners.push(provider.onDidChange(()=>{if(this._currentDocumentRequestCancellationTokenSource){this._providersChangedDuringRequest=!0;return}this._fetchDocumentSemanticTokens.schedule(0)}))},"bindDocumentChangeListeners");bindDocumentChangeListeners(),this._register(this._provider.onDidChange(()=>{bindDocumentChangeListeners(),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._register(themeService.onDidColorThemeChange(_=>{this._setDocumentSemanticTokens(null,null,null,[]),this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))})),this._fetchDocumentSemanticTokens.schedule(0)}dispose(){this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._currentDocumentRequestCancellationTokenSource&&(this._currentDocumentRequestCancellationTokenSource.cancel(),this._currentDocumentRequestCancellationTokenSource=null),dispose(this._documentProvidersChangeListeners),this._documentProvidersChangeListeners=[],this._setDocumentSemanticTokens(null,null,null,[]),this._isDisposed=!0,super.dispose()}_fetchDocumentSemanticTokensNow(){if(this._currentDocumentRequestCancellationTokenSource)return;if(!hasDocumentSemanticTokensProvider(this._provider,this._model)){this._currentDocumentResponse&&this._model.tokenization.setSemanticTokens(null,!1);return}if(!this._model.isAttachedToEditor())return;const cancellationTokenSource=new CancellationTokenSource$1,lastProvider=this._currentDocumentResponse?this._currentDocumentResponse.provider:null,lastResultId=this._currentDocumentResponse&&this._currentDocumentResponse.resultId||null,request=getDocumentSemanticTokens(this._provider,this._model,lastProvider,lastResultId,cancellationTokenSource.token);this._currentDocumentRequestCancellationTokenSource=cancellationTokenSource,this._providersChangedDuringRequest=!1;const pendingChanges=[],contentChangeListener=this._model.onDidChangeContent(e=>{pendingChanges.push(e)}),sw=new StopWatch(!1);request.then(res=>{if(this._debounceInformation.update(this._model,sw.elapsed()),this._currentDocumentRequestCancellationTokenSource=null,contentChangeListener.dispose(),!res)this._setDocumentSemanticTokens(null,null,null,pendingChanges);else{const{provider,tokens}=res,styling=this._semanticTokensStylingService.getStyling(provider);this._setDocumentSemanticTokens(provider,tokens||null,styling,pendingChanges)}},err=>{err&&(isCancellationError(err)||typeof err.message=="string"&&err.message.indexOf("busy")!==-1)||onUnexpectedError(err),this._currentDocumentRequestCancellationTokenSource=null,contentChangeListener.dispose(),(pendingChanges.length>0||this._providersChangedDuringRequest)&&(this._fetchDocumentSemanticTokens.isScheduled()||this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model)))})}static _copy(src,srcOffset,dest,destOffset,length){length=Math.min(length,dest.length-destOffset,src.length-srcOffset);for(let i=0;i<length;i++)dest[destOffset+i]=src[srcOffset+i]}_setDocumentSemanticTokens(provider,tokens,styling,pendingChanges){const currentResponse=this._currentDocumentResponse,rescheduleIfNeeded=__name(()=>{(pendingChanges.length>0||this._providersChangedDuringRequest)&&!this._fetchDocumentSemanticTokens.isScheduled()&&this._fetchDocumentSemanticTokens.schedule(this._debounceInformation.get(this._model))},"rescheduleIfNeeded");if(this._currentDocumentResponse&&(this._currentDocumentResponse.dispose(),this._currentDocumentResponse=null),this._isDisposed){provider&&tokens&&provider.releaseDocumentSemanticTokens(tokens.resultId);return}if(!provider||!styling){this._model.tokenization.setSemanticTokens(null,!1);return}if(!tokens){this._model.tokenization.setSemanticTokens(null,!0),rescheduleIfNeeded();return}if(isSemanticTokensEdits(tokens)){if(!currentResponse){this._model.tokenization.setSemanticTokens(null,!0);return}if(tokens.edits.length===0)tokens={resultId:tokens.resultId,data:currentResponse.data};else{let deltaLength=0;for(const edit of tokens.edits)deltaLength+=(edit.data?edit.data.length:0)-edit.deleteCount;const srcData=currentResponse.data,destData=new Uint32Array(srcData.length+deltaLength);let srcLastStart=srcData.length,destLastStart=destData.length;for(let i=tokens.edits.length-1;i>=0;i--){const edit=tokens.edits[i];if(edit.start>srcData.length){styling.warnInvalidEditStart(currentResponse.resultId,tokens.resultId,i,edit.start,srcData.length),this._model.tokenization.setSemanticTokens(null,!0);return}const copyCount=srcLastStart-(edit.start+edit.deleteCount);copyCount>0&&(ModelSemanticColoring_1._copy(srcData,srcLastStart-copyCount,destData,destLastStart-copyCount,copyCount),destLastStart-=copyCount),edit.data&&(ModelSemanticColoring_1._copy(edit.data,0,destData,destLastStart-edit.data.length,edit.data.length),destLastStart-=edit.data.length),srcLastStart=edit.start}srcLastStart>0&&ModelSemanticColoring_1._copy(srcData,0,destData,0,srcLastStart),tokens={resultId:tokens.resultId,data:destData}}}if(isSemanticTokens(tokens)){this._currentDocumentResponse=new SemanticTokensResponse(provider,tokens.resultId,tokens.data);const result=toMultilineTokens2(tokens,styling,this._model.getLanguageId());if(pendingChanges.length>0)for(const change of pendingChanges)for(const area of result)for(const singleChange of change.changes)area.applyEdit(singleChange.range,singleChange.text);this._model.tokenization.setSemanticTokens(result,!0)}else this._model.tokenization.setSemanticTokens(null,!0);rescheduleIfNeeded()}},__name(_ce,"ModelSemanticColoring"),ModelSemanticColoring_1=_ce,_ce.REQUEST_MIN_DELAY=300,_ce.REQUEST_MAX_DELAY=2e3,_ce);ModelSemanticColoring=ModelSemanticColoring_1=__decorate$l([__param$l(1,ISemanticTokensStylingService),__param$l(2,IThemeService),__param$l(3,ILanguageFeatureDebounceService),__param$l(4,ILanguageFeaturesService)],ModelSemanticColoring);const _SemanticTokensResponse=class _SemanticTokensResponse{constructor(provider,resultId,data){this.provider=provider,this.resultId=resultId,this.data=data}dispose(){this.provider.releaseDocumentSemanticTokens(this.resultId)}};__name(_SemanticTokensResponse,"SemanticTokensResponse");let SemanticTokensResponse=_SemanticTokensResponse;registerEditorFeature(DocumentSemanticTokensFeature);var __decorate$k=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$k=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let ViewportSemanticTokensContribution=(_de=class extends Disposable{constructor(editor2,_semanticTokensStylingService,_themeService,_configurationService,languageFeatureDebounceService,languageFeaturesService){super(),this._semanticTokensStylingService=_semanticTokensStylingService,this._themeService=_themeService,this._configurationService=_configurationService,this._editor=editor2,this._provider=languageFeaturesService.documentRangeSemanticTokensProvider,this._debounceInformation=languageFeatureDebounceService.for(this._provider,"DocumentRangeSemanticTokens",{min:100,max:500}),this._tokenizeViewport=this._register(new RunOnceScheduler(()=>this._tokenizeViewportNow(),100)),this._outstandingRequests=[];const scheduleTokenizeViewport=__name(()=>{this._editor.hasModel()&&this._tokenizeViewport.schedule(this._debounceInformation.get(this._editor.getModel()))},"scheduleTokenizeViewport");this._register(this._editor.onDidScrollChange(()=>{scheduleTokenizeViewport()})),this._register(this._editor.onDidChangeModel(()=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._editor.onDidChangeModelContent(e=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._provider.onDidChange(()=>{this._cancelAll(),scheduleTokenizeViewport()})),this._register(this._configurationService.onDidChangeConfiguration(e=>{e.affectsConfiguration(SEMANTIC_HIGHLIGHTING_SETTING_ID)&&(this._cancelAll(),scheduleTokenizeViewport())})),this._register(this._themeService.onDidColorThemeChange(()=>{this._cancelAll(),scheduleTokenizeViewport()})),scheduleTokenizeViewport()}_cancelAll(){for(const request of this._outstandingRequests)request.cancel();this._outstandingRequests=[]}_removeOutstandingRequest(req){for(let i=0,len=this._outstandingRequests.length;i<len;i++)if(this._outstandingRequests[i]===req){this._outstandingRequests.splice(i,1);return}}_tokenizeViewportNow(){if(!this._editor.hasModel())return;const model=this._editor.getModel();if(model.tokenization.hasCompleteSemanticTokens())return;if(!isSemanticColoringEnabled(model,this._themeService,this._configurationService)){model.tokenization.hasSomeSemanticTokens()&&model.tokenization.setSemanticTokens(null,!1);return}if(!hasDocumentRangeSemanticTokensProvider(this._provider,model)){model.tokenization.hasSomeSemanticTokens()&&model.tokenization.setSemanticTokens(null,!1);return}const visibleRanges=this._editor.getVisibleRangesPlusViewportAboveBelow();this._outstandingRequests=this._outstandingRequests.concat(visibleRanges.map(range2=>this._requestRange(model,range2)))}_requestRange(model,range2){const requestVersionId=model.getVersionId(),request=createCancelablePromise(token=>Promise.resolve(getDocumentRangeSemanticTokens(this._provider,model,range2,token))),sw=new StopWatch(!1);return request.then(r2=>{if(this._debounceInformation.update(model,sw.elapsed()),!r2||!r2.tokens||model.isDisposed()||model.getVersionId()!==requestVersionId)return;const{provider,tokens:result}=r2,styling=this._semanticTokensStylingService.getStyling(provider);model.tokenization.setPartialSemanticTokens(range2,toMultilineTokens2(result,styling,model.getLanguageId()))}).then(()=>this._removeOutstandingRequest(request),()=>this._removeOutstandingRequest(request)),request}},__name(_de,"ViewportSemanticTokensContribution"),_de.ID="editor.contrib.viewportSemanticTokens",_de);ViewportSemanticTokensContribution=__decorate$k([__param$k(1,ISemanticTokensStylingService),__param$k(2,IThemeService),__param$k(3,IConfigurationService),__param$k(4,ILanguageFeatureDebounceService),__param$k(5,ILanguageFeaturesService)],ViewportSemanticTokensContribution),registerEditorContribution(ViewportSemanticTokensContribution.ID,ViewportSemanticTokensContribution,1);const _WordSelectionRangeProvider=class _WordSelectionRangeProvider{constructor(selectSubwords=!0){this.selectSubwords=selectSubwords}provideSelectionRanges(model,positions){const result=[];for(const position of positions){const bucket=[];result.push(bucket),this.selectSubwords&&this._addInWordRanges(bucket,model,position),this._addWordRanges(bucket,model,position),this._addWhitespaceLine(bucket,model,position),bucket.push({range:model.getFullModelRange()})}return result}_addInWordRanges(bucket,model,pos){const obj=model.getWordAtPosition(pos);if(!obj)return;const{word,startColumn}=obj,offset=pos.column-startColumn;let start=offset,end=offset,lastCh=0;for(;start>=0;start--){const ch=word.charCodeAt(start);if(start!==offset&&(ch===95||ch===45))break;if(isLowerAsciiLetter(ch)&&isUpperAsciiLetter(lastCh))break;lastCh=ch}for(start+=1;end<word.length;end++){const ch=word.charCodeAt(end);if(isUpperAsciiLetter(ch)&&isLowerAsciiLetter(lastCh))break;if(ch===95||ch===45)break;lastCh=ch}start<end&&bucket.push({range:new Range$5(pos.lineNumber,startColumn+start,pos.lineNumber,startColumn+end)})}_addWordRanges(bucket,model,pos){const word=model.getWordAtPosition(pos);word&&bucket.push({range:new Range$5(pos.lineNumber,word.startColumn,pos.lineNumber,word.endColumn)})}_addWhitespaceLine(bucket,model,pos){model.getLineLength(pos.lineNumber)>0&&model.getLineFirstNonWhitespaceColumn(pos.lineNumber)===0&&model.getLineLastNonWhitespaceColumn(pos.lineNumber)===0&&bucket.push({range:new Range$5(pos.lineNumber,1,pos.lineNumber,model.getLineMaxColumn(pos.lineNumber))})}};__name(_WordSelectionRangeProvider,"WordSelectionRangeProvider");let WordSelectionRangeProvider=_WordSelectionRangeProvider;var __decorate$j=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$j=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},SmartSelectController_1;const _SelectionRanges=class _SelectionRanges{constructor(index,ranges){this.index=index,this.ranges=ranges}mov(fwd){const index=this.index+(fwd?1:-1);if(index<0||index>=this.ranges.length)return this;const res=new _SelectionRanges(index,this.ranges);return res.ranges[index].equalsRange(this.ranges[this.index])?res.mov(fwd):res}};__name(_SelectionRanges,"SelectionRanges");let SelectionRanges=_SelectionRanges,SmartSelectController=(_ee=class{static get(editor2){return editor2.getContribution(SmartSelectController_1.ID)}constructor(_editor,_languageFeaturesService){this._editor=_editor,this._languageFeaturesService=_languageFeaturesService,this._ignoreSelection=!1}dispose(){var _a3;(_a3=this._selectionListener)==null||_a3.dispose()}async run(forward){if(!this._editor.hasModel())return;const selections=this._editor.getSelections(),model=this._editor.getModel();if(this._state||await provideSelectionRanges(this._languageFeaturesService.selectionRangeProvider,model,selections.map(s=>s.getPosition()),this._editor.getOption(114),CancellationToken.None).then(ranges=>{var _a3;if(!(!isNonEmptyArray(ranges)||ranges.length!==selections.length)&&!(!this._editor.hasModel()||!equals$1(this._editor.getSelections(),selections,(a,b)=>a.equalsSelection(b)))){for(let i=0;i<ranges.length;i++)ranges[i]=ranges[i].filter(range2=>range2.containsPosition(selections[i].getStartPosition())&&range2.containsPosition(selections[i].getEndPosition())),ranges[i].unshift(selections[i]);this._state=ranges.map(ranges2=>new SelectionRanges(0,ranges2)),(_a3=this._selectionListener)==null||_a3.dispose(),this._selectionListener=this._editor.onDidChangeCursorPosition(()=>{var _a4;this._ignoreSelection||((_a4=this._selectionListener)==null||_a4.dispose(),this._state=void 0)})}}),!this._state)return;this._state=this._state.map(state=>state.mov(forward));const newSelections=this._state.map(state=>Selection$1.fromPositions(state.ranges[state.index].getStartPosition(),state.ranges[state.index].getEndPosition()));this._ignoreSelection=!0;try{this._editor.setSelections(newSelections)}finally{this._ignoreSelection=!1}}},__name(_ee,"SmartSelectController"),SmartSelectController_1=_ee,_ee.ID="editor.contrib.smartSelectController",_ee);SmartSelectController=SmartSelectController_1=__decorate$j([__param$j(1,ILanguageFeaturesService)],SmartSelectController);const _AbstractSmartSelect=class _AbstractSmartSelect extends EditorAction{constructor(forward,opts){super(opts),this._forward=forward}async run(_accessor,editor2){const controller=SmartSelectController.get(editor2);controller&&await controller.run(this._forward)}};__name(_AbstractSmartSelect,"AbstractSmartSelect");let AbstractSmartSelect=_AbstractSmartSelect;const _GrowSelectionAction=class _GrowSelectionAction extends AbstractSmartSelect{constructor(){super(!0,{id:"editor.action.smartSelect.expand",label:localize("smartSelect.expand","Expand Selection"),alias:"Expand Selection",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1553,mac:{primary:3345,secondary:[1297]},weight:100},menuOpts:{menuId:MenuId.MenubarSelectionMenu,group:"1_basic",title:localize({key:"miSmartSelectGrow",comment:["&& denotes a mnemonic"]},"&&Expand Selection"),order:2}})}};__name(_GrowSelectionAction,"GrowSelectionAction");let GrowSelectionAction=_GrowSelectionAction;CommandsRegistry.registerCommandAlias("editor.action.smartSelect.grow","editor.action.smartSelect.expand");const _ShrinkSelectionAction=class _ShrinkSelectionAction extends AbstractSmartSelect{constructor(){super(!1,{id:"editor.action.smartSelect.shrink",label:localize("smartSelect.shrink","Shrink Selection"),alias:"Shrink Selection",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1551,mac:{primary:3343,secondary:[1295]},weight:100},menuOpts:{menuId:MenuId.MenubarSelectionMenu,group:"1_basic",title:localize({key:"miSmartSelectShrink",comment:["&& denotes a mnemonic"]},"&&Shrink Selection"),order:3}})}};__name(_ShrinkSelectionAction,"ShrinkSelectionAction");let ShrinkSelectionAction=_ShrinkSelectionAction;registerEditorContribution(SmartSelectController.ID,SmartSelectController,4),registerEditorAction(GrowSelectionAction),registerEditorAction(ShrinkSelectionAction);async function provideSelectionRanges(registry,model,positions,options,token){const providers=registry.all(model).concat(new WordSelectionRangeProvider(options.selectSubwords));providers.length===1&&providers.unshift(new BracketSelectionRangeProvider);const work=[],allRawRanges=[];for(const provider of providers)work.push(Promise.resolve(provider.provideSelectionRanges(model,positions,token)).then(allProviderRanges=>{if(isNonEmptyArray(allProviderRanges)&&allProviderRanges.length===positions.length)for(let i=0;i<positions.length;i++){allRawRanges[i]||(allRawRanges[i]=[]);for(const oneProviderRanges of allProviderRanges[i])Range$5.isIRange(oneProviderRanges.range)&&Range$5.containsPosition(oneProviderRanges.range,positions[i])&&allRawRanges[i].push(Range$5.lift(oneProviderRanges.range))}},onUnexpectedExternalError));return await Promise.all(work),allRawRanges.map(oneRawRanges=>{if(oneRawRanges.length===0)return[];oneRawRanges.sort((a,b)=>Position$4.isBefore(a.getStartPosition(),b.getStartPosition())?1:Position$4.isBefore(b.getStartPosition(),a.getStartPosition())||Position$4.isBefore(a.getEndPosition(),b.getEndPosition())?-1:Position$4.isBefore(b.getEndPosition(),a.getEndPosition())?1:0);const oneRanges=[];let last;for(const range2 of oneRawRanges)(!last||Range$5.containsRange(range2,last)&&!Range$5.equalsRange(range2,last))&&(oneRanges.push(range2),last=range2);if(!options.selectLeadingAndTrailingWhitespace)return oneRanges;const oneRangesWithTrivia=[oneRanges[0]];for(let i=1;i<oneRanges.length;i++){const prev=oneRanges[i-1],cur=oneRanges[i];if(cur.startLineNumber!==prev.startLineNumber||cur.endLineNumber!==prev.endLineNumber){const rangeNoWhitespace=new Range$5(prev.startLineNumber,model.getLineFirstNonWhitespaceColumn(prev.startLineNumber),prev.endLineNumber,model.getLineLastNonWhitespaceColumn(prev.endLineNumber));rangeNoWhitespace.containsRange(prev)&&!rangeNoWhitespace.equalsRange(prev)&&cur.containsRange(rangeNoWhitespace)&&!cur.equalsRange(rangeNoWhitespace)&&oneRangesWithTrivia.push(rangeNoWhitespace);const rangeFull=new Range$5(prev.startLineNumber,1,prev.endLineNumber,model.getLineMaxColumn(prev.endLineNumber));rangeFull.containsRange(prev)&&!rangeFull.equalsRange(rangeNoWhitespace)&&cur.containsRange(rangeFull)&&!cur.equalsRange(rangeFull)&&oneRangesWithTrivia.push(rangeFull)}oneRangesWithTrivia.push(cur)}return oneRangesWithTrivia})}__name(provideSelectionRanges,"provideSelectionRanges"),CommandsRegistry.registerCommand("_executeSelectionRangeProvider",async function(accessor,...args){const[resource,positions]=args;assertType(URI$3.isUri(resource));const registry=accessor.get(ILanguageFeaturesService).selectionRangeProvider,reference=await accessor.get(ITextModelService).createModelReference(resource);try{return provideSelectionRanges(registry,reference.object.textEditorModel,positions,{selectLeadingAndTrailingWhitespace:!0,selectSubwords:!0},CancellationToken.None)}finally{reference.dispose()}});const Categories=Object.freeze({View:localize2("view","View"),Help:localize2("help","Help"),Test:localize2("test","Test"),File:localize2("file","File"),Preferences:localize2("preferences","Preferences"),Developer:localize2({key:"developer",comment:["A developer on Code itself or someone diagnosing issues in Code"]},"Developer")}),_StickyScrollWidgetState=class _StickyScrollWidgetState{constructor(startLineNumbers,endLineNumbers,lastLineRelativePosition,showEndForLine=null){this.startLineNumbers=startLineNumbers,this.endLineNumbers=endLineNumbers,this.lastLineRelativePosition=lastLineRelativePosition,this.showEndForLine=showEndForLine}equals(other){return!!other&&this.lastLineRelativePosition===other.lastLineRelativePosition&&this.showEndForLine===other.showEndForLine&&equals$1(this.startLineNumbers,other.startLineNumbers)&&equals$1(this.endLineNumbers,other.endLineNumbers)}static get Empty(){return new _StickyScrollWidgetState([],[],0)}};__name(_StickyScrollWidgetState,"StickyScrollWidgetState");let StickyScrollWidgetState=_StickyScrollWidgetState;const _ttPolicy=createTrustedTypesPolicy("stickyScrollViewLayer",{createHTML:__name(value=>value,"createHTML")}),STICKY_INDEX_ATTR="data-sticky-line-index",STICKY_IS_LINE_ATTR="data-sticky-is-line",STICKY_IS_LINE_NUMBER_ATTR="data-sticky-is-line-number",STICKY_IS_FOLDING_ICON_ATTR="data-sticky-is-folding-icon",_StickyScrollWidget=class _StickyScrollWidget extends Disposable{constructor(_editor){super(),this._editor=_editor,this._foldingIconStore=new DisposableStore,this._rootDomNode=document.createElement("div"),this._lineNumbersDomNode=document.createElement("div"),this._linesDomNodeScrollable=document.createElement("div"),this._linesDomNode=document.createElement("div"),this._lineHeight=this._editor.getOption(67),this._renderedStickyLines=[],this._lineNumbers=[],this._lastLineRelativePosition=0,this._minContentWidthInPx=0,this._isOnGlyphMargin=!1,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",_editor instanceof EmbeddedCodeEditorWidget),this._rootDomNode.appendChild(this._lineNumbersDomNode),this._rootDomNode.appendChild(this._linesDomNodeScrollable);const updateScrollLeftPosition=__name(()=>{this._linesDomNode.style.left=this._editor.getOption(116).scrollWithEditor?`-${this._editor.getScrollLeft()}px`:"0px"},"updateScrollLeftPosition");this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(116)&&updateScrollLeftPosition(),e.hasChanged(67)&&(this._lineHeight=this._editor.getOption(67))})),this._register(this._editor.onDidScrollChange(e=>{e.scrollLeftChanged&&updateScrollLeftPosition(),e.scrollWidthChanged&&this._updateWidgetWidth()})),this._register(this._editor.onDidChangeModel(()=>{updateScrollLeftPosition(),this._updateWidgetWidth()})),this._register(this._foldingIconStore),updateScrollLeftPosition(),this._register(this._editor.onDidLayoutChange(e=>{this._updateWidgetWidth()})),this._updateWidgetWidth()}get lineNumbers(){return this._lineNumbers}get lineNumberCount(){return this._lineNumbers.length}getRenderedStickyLine(lineNumber){return this._renderedStickyLines.find(stickyLine=>stickyLine.lineNumber===lineNumber)}getCurrentLines(){return this._lineNumbers}setState(_state,foldingModel,_rebuildFromLine){if(_rebuildFromLine===void 0&&(!this._previousState&&!_state||this._previousState&&this._previousState.equals(_state)))return;const isWidgetHeightZero=this._isWidgetHeightZero(_state),state=isWidgetHeightZero?void 0:_state,rebuildFromLine=isWidgetHeightZero?0:this._findLineToRebuildWidgetFrom(_state,_rebuildFromLine);this._renderRootNode(state,foldingModel,rebuildFromLine),this._previousState=_state}_isWidgetHeightZero(state){if(!state)return!0;const futureWidgetHeight=state.startLineNumbers.length*this._lineHeight+state.lastLineRelativePosition;if(futureWidgetHeight>0){this._lastLineRelativePosition=state.lastLineRelativePosition;const lineNumbers=[...state.startLineNumbers];state.showEndForLine!==null&&(lineNumbers[state.showEndForLine]=state.endLineNumbers[state.showEndForLine]),this._lineNumbers=lineNumbers}else this._lastLineRelativePosition=0,this._lineNumbers=[];return futureWidgetHeight===0}_findLineToRebuildWidgetFrom(state,_rebuildFromLine){if(!state||!this._previousState)return 0;if(_rebuildFromLine!==void 0)return _rebuildFromLine;const previousState=this._previousState,indexOfLinesAlreadyRendered=state.startLineNumbers.findIndex(startLineNumber=>!previousState.startLineNumbers.includes(startLineNumber));return indexOfLinesAlreadyRendered===-1?0:indexOfLinesAlreadyRendered}_updateWidgetWidth(){const layoutInfo=this._editor.getLayoutInfo(),lineNumbersWidth=layoutInfo.contentLeft;this._lineNumbersDomNode.style.width=`${lineNumbersWidth}px`,this._linesDomNodeScrollable.style.setProperty("--vscode-editorStickyScroll-scrollableWidth",`${this._editor.getScrollWidth()-layoutInfo.verticalScrollbarWidth}px`),this._rootDomNode.style.width=`${layoutInfo.width-layoutInfo.verticalScrollbarWidth}px`}_clearStickyLinesFromLine(clearFromLine){this._foldingIconStore.clear();for(let i=clearFromLine;i<this._renderedStickyLines.length;i++){const stickyLine=this._renderedStickyLines[i];stickyLine.lineNumberDomNode.remove(),stickyLine.lineDomNode.remove()}this._renderedStickyLines=this._renderedStickyLines.slice(0,clearFromLine),this._rootDomNode.style.display="none"}_useFoldingOpacityTransition(requireTransitions){this._lineNumbersDomNode.style.setProperty("--vscode-editorStickyScroll-foldingOpacityTransition",`opacity ${requireTransitions?.5:0}s`)}_setFoldingIconsVisibility(allVisible){for(const line of this._renderedStickyLines){const foldingIcon=line.foldingIcon;foldingIcon&&foldingIcon.setVisible(allVisible?!0:foldingIcon.isCollapsed)}}async _renderRootNode(state,foldingModel,rebuildFromLine){if(this._clearStickyLinesFromLine(rebuildFromLine),!state)return;for(const stickyLine of this._renderedStickyLines)this._updateTopAndZIndexOfStickyLine(stickyLine);const layoutInfo=this._editor.getLayoutInfo(),linesToRender=this._lineNumbers.slice(rebuildFromLine);for(const[index,line]of linesToRender.entries()){const stickyLine=this._renderChildNode(index+rebuildFromLine,line,foldingModel,layoutInfo);stickyLine&&(this._linesDomNode.appendChild(stickyLine.lineDomNode),this._lineNumbersDomNode.appendChild(stickyLine.lineNumberDomNode),this._renderedStickyLines.push(stickyLine))}foldingModel&&(this._setFoldingHoverListeners(),this._useFoldingOpacityTransition(!this._isOnGlyphMargin));const widgetHeight=this._lineNumbers.length*this._lineHeight+this._lastLineRelativePosition;this._rootDomNode.style.display="block",this._lineNumbersDomNode.style.height=`${widgetHeight}px`,this._linesDomNodeScrollable.style.height=`${widgetHeight}px`,this._rootDomNode.style.height=`${widgetHeight}px`,this._rootDomNode.style.marginLeft="0px",this._minContentWidthInPx=Math.max(...this._renderedStickyLines.map(l2=>l2.scrollWidth))+layoutInfo.verticalScrollbarWidth,this._editor.layoutOverlayWidget(this)}_setFoldingHoverListeners(){this._editor.getOption(111)==="mouseover"&&(this._foldingIconStore.add(addDisposableListener(this._lineNumbersDomNode,EventType$1.MOUSE_ENTER,()=>{this._isOnGlyphMargin=!0,this._setFoldingIconsVisibility(!0)})),this._foldingIconStore.add(addDisposableListener(this._lineNumbersDomNode,EventType$1.MOUSE_LEAVE,()=>{this._isOnGlyphMargin=!1,this._useFoldingOpacityTransition(!0),this._setFoldingIconsVisibility(!1)})))}_renderChildNode(index,line,foldingModel,layoutInfo){const viewModel=this._editor._getViewModel();if(!viewModel)return;const viewLineNumber=viewModel.coordinatesConverter.convertModelPositionToViewPosition(new Position$4(line,1)).lineNumber,lineRenderingData=viewModel.getViewLineRenderingData(viewLineNumber),lineNumberOption=this._editor.getOption(68);let actualInlineDecorations;try{actualInlineDecorations=LineDecoration.filter(lineRenderingData.inlineDecorations,viewLineNumber,lineRenderingData.minColumn,lineRenderingData.maxColumn)}catch{actualInlineDecorations=[]}const renderLineInput=new RenderLineInput(!0,!0,lineRenderingData.content,lineRenderingData.continuesWithWrappedLine,lineRenderingData.isBasicASCII,lineRenderingData.containsRTL,0,lineRenderingData.tokens,actualInlineDecorations,lineRenderingData.tabSize,lineRenderingData.startVisibleColumn,1,1,1,500,"none",!0,!0,null),sb2=new StringBuilder(2e3),renderOutput=renderViewLine(renderLineInput,sb2);let newLine;_ttPolicy?newLine=_ttPolicy.createHTML(sb2.build()):newLine=sb2.build();const lineHTMLNode=document.createElement("span");lineHTMLNode.setAttribute(STICKY_INDEX_ATTR,String(index)),lineHTMLNode.setAttribute(STICKY_IS_LINE_ATTR,""),lineHTMLNode.setAttribute("role","listitem"),lineHTMLNode.tabIndex=0,lineHTMLNode.className="sticky-line-content",lineHTMLNode.classList.add(`stickyLine${line}`),lineHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineHTMLNode.innerHTML=newLine;const lineNumberHTMLNode=document.createElement("span");lineNumberHTMLNode.setAttribute(STICKY_INDEX_ATTR,String(index)),lineNumberHTMLNode.setAttribute(STICKY_IS_LINE_NUMBER_ATTR,""),lineNumberHTMLNode.className="sticky-line-number",lineNumberHTMLNode.style.lineHeight=`${this._lineHeight}px`;const lineNumbersWidth=layoutInfo.contentLeft;lineNumberHTMLNode.style.width=`${lineNumbersWidth}px`;const innerLineNumberHTML=document.createElement("span");lineNumberOption.renderType===1||lineNumberOption.renderType===3&&line%10===0?innerLineNumberHTML.innerText=line.toString():lineNumberOption.renderType===2&&(innerLineNumberHTML.innerText=Math.abs(line-this._editor.getPosition().lineNumber).toString()),innerLineNumberHTML.className="sticky-line-number-inner",innerLineNumberHTML.style.lineHeight=`${this._lineHeight}px`,innerLineNumberHTML.style.width=`${layoutInfo.lineNumbersWidth}px`,innerLineNumberHTML.style.paddingLeft=`${layoutInfo.lineNumbersLeft}px`,lineNumberHTMLNode.appendChild(innerLineNumberHTML);const foldingIcon=this._renderFoldingIconForLine(foldingModel,line);foldingIcon&&lineNumberHTMLNode.appendChild(foldingIcon.domNode),this._editor.applyFontInfo(lineHTMLNode),this._editor.applyFontInfo(innerLineNumberHTML),lineNumberHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineHTMLNode.style.lineHeight=`${this._lineHeight}px`,lineNumberHTMLNode.style.height=`${this._lineHeight}px`,lineHTMLNode.style.height=`${this._lineHeight}px`;const renderedLine=new RenderedStickyLine(index,line,lineHTMLNode,lineNumberHTMLNode,foldingIcon,renderOutput.characterMapping,lineHTMLNode.scrollWidth);return this._updateTopAndZIndexOfStickyLine(renderedLine)}_updateTopAndZIndexOfStickyLine(stickyLine){var _a3;const index=stickyLine.index,lineHTMLNode=stickyLine.lineDomNode,lineNumberHTMLNode=stickyLine.lineNumberDomNode,isLastLine=index===this._lineNumbers.length-1,lastLineZIndex="0",intermediateLineZIndex="1";lineHTMLNode.style.zIndex=isLastLine?lastLineZIndex:intermediateLineZIndex,lineNumberHTMLNode.style.zIndex=isLastLine?lastLineZIndex:intermediateLineZIndex;const lastLineTop=`${index*this._lineHeight+this._lastLineRelativePosition+((_a3=stickyLine.foldingIcon)!=null&&_a3.isCollapsed?1:0)}px`,intermediateLineTop=`${index*this._lineHeight}px`;return lineHTMLNode.style.top=isLastLine?lastLineTop:intermediateLineTop,lineNumberHTMLNode.style.top=isLastLine?lastLineTop:intermediateLineTop,stickyLine}_renderFoldingIconForLine(foldingModel,line){const showFoldingControls=this._editor.getOption(111);if(!foldingModel||showFoldingControls==="never")return;const foldingRegions=foldingModel.regions,indexOfFoldingRegion=foldingRegions.findRange(line),startLineNumber=foldingRegions.getStartLineNumber(indexOfFoldingRegion);if(!(line===startLineNumber))return;const isCollapsed=foldingRegions.isCollapsed(indexOfFoldingRegion),foldingIcon=new StickyFoldingIcon(isCollapsed,startLineNumber,foldingRegions.getEndLineNumber(indexOfFoldingRegion),this._lineHeight);return foldingIcon.setVisible(this._isOnGlyphMargin?!0:isCollapsed||showFoldingControls==="always"),foldingIcon.domNode.setAttribute(STICKY_IS_FOLDING_ICON_ATTR,""),foldingIcon}getId(){return"editor.contrib.stickyScrollWidget"}getDomNode(){return this._rootDomNode}getPosition(){return{preference:2,stackOridinal:10}}getMinContentWidthInPx(){return this._minContentWidthInPx}focusLineWithIndex(index){0<=index&&index<this._renderedStickyLines.length&&this._renderedStickyLines[index].lineDomNode.focus()}getEditorPositionFromNode(spanDomNode){if(!spanDomNode||spanDomNode.children.length>0)return null;const renderedStickyLine=this._getRenderedStickyLineFromChildDomNode(spanDomNode);if(!renderedStickyLine)return null;const column=getColumnOfNodeOffset(renderedStickyLine.characterMapping,spanDomNode,0);return new Position$4(renderedStickyLine.lineNumber,column)}getLineNumberFromChildDomNode(domNode){var _a3,_b3;return(_b3=(_a3=this._getRenderedStickyLineFromChildDomNode(domNode))==null?void 0:_a3.lineNumber)!=null?_b3:null}_getRenderedStickyLineFromChildDomNode(domNode){const index=this.getLineIndexFromChildDomNode(domNode);return index===null||index<0||index>=this._renderedStickyLines.length?null:this._renderedStickyLines[index]}getLineIndexFromChildDomNode(domNode){const lineIndex=this._getAttributeValue(domNode,STICKY_INDEX_ATTR);return lineIndex?parseInt(lineIndex,10):null}isInStickyLine(domNode){return this._getAttributeValue(domNode,STICKY_IS_LINE_ATTR)!==void 0}isInFoldingIconDomNode(domNode){return this._getAttributeValue(domNode,STICKY_IS_FOLDING_ICON_ATTR)!==void 0}_getAttributeValue(domNode,attribute){for(;domNode&&domNode!==this._rootDomNode;){const line=domNode.getAttribute(attribute);if(line!==null)return line;domNode=domNode.parentElement}}};__name(_StickyScrollWidget,"StickyScrollWidget");let StickyScrollWidget=_StickyScrollWidget;const _RenderedStickyLine=class _RenderedStickyLine{constructor(index,lineNumber,lineDomNode,lineNumberDomNode,foldingIcon,characterMapping,scrollWidth){this.index=index,this.lineNumber=lineNumber,this.lineDomNode=lineDomNode,this.lineNumberDomNode=lineNumberDomNode,this.foldingIcon=foldingIcon,this.characterMapping=characterMapping,this.scrollWidth=scrollWidth}};__name(_RenderedStickyLine,"RenderedStickyLine");let RenderedStickyLine=_RenderedStickyLine;const _StickyFoldingIcon=class _StickyFoldingIcon{constructor(isCollapsed,foldingStartLine,foldingEndLine,dimension){this.isCollapsed=isCollapsed,this.foldingStartLine=foldingStartLine,this.foldingEndLine=foldingEndLine,this.dimension=dimension,this.domNode=document.createElement("div"),this.domNode.style.width=`${dimension}px`,this.domNode.style.height=`${dimension}px`,this.domNode.className=ThemeIcon.asClassName(isCollapsed?foldingCollapsedIcon:foldingExpandedIcon)}setVisible(visible){this.domNode.style.cursor=visible?"pointer":"default",this.domNode.style.opacity=visible?"1":"0"}};__name(_StickyFoldingIcon,"StickyFoldingIcon");let StickyFoldingIcon=_StickyFoldingIcon;const _StickyRange=class _StickyRange{constructor(startLineNumber,endLineNumber){this.startLineNumber=startLineNumber,this.endLineNumber=endLineNumber}};__name(_StickyRange,"StickyRange");let StickyRange=_StickyRange;const _StickyElement=class _StickyElement{constructor(range2,children,parent){this.range=range2,this.children=children,this.parent=parent}};__name(_StickyElement,"StickyElement");let StickyElement=_StickyElement;const _StickyModel=class _StickyModel{constructor(uri,version,element,outlineProviderId){this.uri=uri,this.version=version,this.element=element,this.outlineProviderId=outlineProviderId}};__name(_StickyModel,"StickyModel");let StickyModel=_StickyModel;var __decorate$i=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$i=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},ModelProvider;(function(ModelProvider2){ModelProvider2.OUTLINE_MODEL="outlineModel",ModelProvider2.FOLDING_PROVIDER_MODEL="foldingProviderModel",ModelProvider2.INDENTATION_MODEL="indentationModel"})(ModelProvider||(ModelProvider={}));var Status;(function(Status2){Status2[Status2.VALID=0]="VALID",Status2[Status2.INVALID=1]="INVALID",Status2[Status2.CANCELED=2]="CANCELED"})(Status||(Status={}));let StickyModelProvider=(_fe=class extends Disposable{constructor(_editor,onProviderUpdate,_languageConfigurationService,_languageFeaturesService){switch(super(),this._editor=_editor,this._modelProviders=[],this._modelPromise=null,this._updateScheduler=this._register(new Delayer(300)),this._updateOperation=this._register(new DisposableStore),this._editor.getOption(116).defaultModel){case ModelProvider.OUTLINE_MODEL:this._modelProviders.push(new StickyModelFromCandidateOutlineProvider(this._editor,_languageFeaturesService));case ModelProvider.FOLDING_PROVIDER_MODEL:this._modelProviders.push(new StickyModelFromCandidateSyntaxFoldingProvider(this._editor,onProviderUpdate,_languageFeaturesService));case ModelProvider.INDENTATION_MODEL:this._modelProviders.push(new StickyModelFromCandidateIndentationFoldingProvider(this._editor,_languageConfigurationService));break}}dispose(){this._modelProviders.forEach(provider=>provider.dispose()),this._updateOperation.clear(),this._cancelModelPromise(),super.dispose()}_cancelModelPromise(){this._modelPromise&&(this._modelPromise.cancel(),this._modelPromise=null)}async update(token){return this._updateOperation.clear(),this._updateOperation.add({dispose:__name(()=>{this._cancelModelPromise(),this._updateScheduler.cancel()},"dispose")}),this._cancelModelPromise(),await this._updateScheduler.trigger(async()=>{for(const modelProvider of this._modelProviders){const{statusPromise,modelPromise}=modelProvider.computeStickyModel(token);this._modelPromise=modelPromise;const status2=await statusPromise;if(this._modelPromise!==modelPromise)return null;switch(status2){case Status.CANCELED:return this._updateOperation.clear(),null;case Status.VALID:return modelProvider.stickyModel}}return null}).catch(error=>(onUnexpectedError(error),null))}},__name(_fe,"StickyModelProvider"),_fe);StickyModelProvider=__decorate$i([__param$i(2,IInstantiationService),__param$i(3,ILanguageFeaturesService)],StickyModelProvider);const _StickyModelCandidateProvider=class _StickyModelCandidateProvider extends Disposable{constructor(_editor){super(),this._editor=_editor,this._stickyModel=null}get stickyModel(){return this._stickyModel}_invalid(){return this._stickyModel=null,Status.INVALID}computeStickyModel(token){if(token.isCancellationRequested||!this.isProviderValid())return{statusPromise:this._invalid(),modelPromise:null};const providerModelPromise=createCancelablePromise(token2=>this.createModelFromProvider(token2));return{statusPromise:providerModelPromise.then(providerModel=>this.isModelValid(providerModel)?token.isCancellationRequested?Status.CANCELED:(this._stickyModel=this.createStickyModel(token,providerModel),Status.VALID):this._invalid()).then(void 0,err=>(onUnexpectedError(err),Status.CANCELED)),modelPromise:providerModelPromise}}isModelValid(model){return!0}isProviderValid(){return!0}};__name(_StickyModelCandidateProvider,"StickyModelCandidateProvider");let StickyModelCandidateProvider=_StickyModelCandidateProvider,StickyModelFromCandidateOutlineProvider=(_ge=class extends StickyModelCandidateProvider{constructor(_editor,_languageFeaturesService){super(_editor),this._languageFeaturesService=_languageFeaturesService}createModelFromProvider(token){return OutlineModel.create(this._languageFeaturesService.documentSymbolProvider,this._editor.getModel(),token)}createStickyModel(token,model){var _a3;const{stickyOutlineElement,providerID}=this._stickyModelFromOutlineModel(model,(_a3=this._stickyModel)==null?void 0:_a3.outlineProviderId),textModel=this._editor.getModel();return new StickyModel(textModel.uri,textModel.getVersionId(),stickyOutlineElement,providerID)}isModelValid(model){return model&&model.children.size>0}_stickyModelFromOutlineModel(outlineModel,preferredProvider){let outlineElements;if(Iterable.first(outlineModel.children.values())instanceof OutlineGroup){const provider=Iterable.find(outlineModel.children.values(),outlineGroupOfModel=>outlineGroupOfModel.id===preferredProvider);if(provider)outlineElements=provider.children;else{let tempID="",maxTotalSumOfRanges=-1,optimalOutlineGroup;for(const[_key,outlineGroup]of outlineModel.children.entries()){const totalSumRanges=this._findSumOfRangesOfGroup(outlineGroup);totalSumRanges>maxTotalSumOfRanges&&(optimalOutlineGroup=outlineGroup,maxTotalSumOfRanges=totalSumRanges,tempID=outlineGroup.id)}preferredProvider=tempID,outlineElements=optimalOutlineGroup.children}}else outlineElements=outlineModel.children;const stickyChildren=[],outlineElementsArray=Array.from(outlineElements.values()).sort((element1,element2)=>{const range1=new StickyRange(element1.symbol.range.startLineNumber,element1.symbol.range.endLineNumber),range2=new StickyRange(element2.symbol.range.startLineNumber,element2.symbol.range.endLineNumber);return this._comparator(range1,range2)});for(const outlineElement of outlineElementsArray)stickyChildren.push(this._stickyModelFromOutlineElement(outlineElement,outlineElement.symbol.selectionRange.startLineNumber));return{stickyOutlineElement:new StickyElement(void 0,stickyChildren,void 0),providerID:preferredProvider}}_stickyModelFromOutlineElement(outlineElement,previousStartLine){const children=[];for(const child of outlineElement.children.values())if(child.symbol.selectionRange.startLineNumber!==child.symbol.range.endLineNumber)if(child.symbol.selectionRange.startLineNumber!==previousStartLine)children.push(this._stickyModelFromOutlineElement(child,child.symbol.selectionRange.startLineNumber));else for(const subchild of child.children.values())children.push(this._stickyModelFromOutlineElement(subchild,child.symbol.selectionRange.startLineNumber));children.sort((child1,child2)=>this._comparator(child1.range,child2.range));const range2=new StickyRange(outlineElement.symbol.selectionRange.startLineNumber,outlineElement.symbol.range.endLineNumber);return new StickyElement(range2,children,void 0)}_comparator(range1,range2){return range1.startLineNumber!==range2.startLineNumber?range1.startLineNumber-range2.startLineNumber:range2.endLineNumber-range1.endLineNumber}_findSumOfRangesOfGroup(outline){let res=0;for(const child of outline.children.values())res+=this._findSumOfRangesOfGroup(child);return outline instanceof OutlineElement?res+outline.symbol.range.endLineNumber-outline.symbol.selectionRange.startLineNumber:res}},__name(_ge,"StickyModelFromCandidateOutlineProvider"),_ge);StickyModelFromCandidateOutlineProvider=__decorate$i([__param$i(1,ILanguageFeaturesService)],StickyModelFromCandidateOutlineProvider);const _StickyModelFromCandidateFoldingProvider=class _StickyModelFromCandidateFoldingProvider extends StickyModelCandidateProvider{constructor(editor2){super(editor2),this._foldingLimitReporter=new RangesLimitReporter(editor2)}createStickyModel(token,model){const foldingElement=this._fromFoldingRegions(model),textModel=this._editor.getModel();return new StickyModel(textModel.uri,textModel.getVersionId(),foldingElement,void 0)}isModelValid(model){return model!==null}_fromFoldingRegions(foldingRegions){const length=foldingRegions.length,orderedStickyElements=[],stickyOutlineElement=new StickyElement(void 0,[],void 0);for(let i=0;i<length;i++){const parentIndex=foldingRegions.getParentIndex(i);let parentNode;parentIndex!==-1?parentNode=orderedStickyElements[parentIndex]:parentNode=stickyOutlineElement;const child=new StickyElement(new StickyRange(foldingRegions.getStartLineNumber(i),foldingRegions.getEndLineNumber(i)+1),[],parentNode);parentNode.children.push(child),orderedStickyElements.push(child)}return stickyOutlineElement}};__name(_StickyModelFromCandidateFoldingProvider,"StickyModelFromCandidateFoldingProvider");let StickyModelFromCandidateFoldingProvider=_StickyModelFromCandidateFoldingProvider,StickyModelFromCandidateIndentationFoldingProvider=(_he=class extends StickyModelFromCandidateFoldingProvider{constructor(editor2,_languageConfigurationService){super(editor2),this._languageConfigurationService=_languageConfigurationService,this.provider=this._register(new IndentRangeProvider(editor2.getModel(),this._languageConfigurationService,this._foldingLimitReporter))}async createModelFromProvider(token){return this.provider.compute(token)}},__name(_he,"StickyModelFromCandidateIndentationFoldingProvider"),_he);StickyModelFromCandidateIndentationFoldingProvider=__decorate$i([__param$i(1,ILanguageConfigurationService)],StickyModelFromCandidateIndentationFoldingProvider);let StickyModelFromCandidateSyntaxFoldingProvider=(_ie=class extends StickyModelFromCandidateFoldingProvider{constructor(editor2,onProviderUpdate,_languageFeaturesService){super(editor2),this._languageFeaturesService=_languageFeaturesService;const selectedProviders=FoldingController.getFoldingRangeProviders(this._languageFeaturesService,editor2.getModel());selectedProviders.length>0&&(this.provider=this._register(new SyntaxRangeProvider(editor2.getModel(),selectedProviders,onProviderUpdate,this._foldingLimitReporter,void 0)))}isProviderValid(){return this.provider!==void 0}async createModelFromProvider(token){var _a3,_b3;return(_b3=(_a3=this.provider)==null?void 0:_a3.compute(token))!=null?_b3:null}},__name(_ie,"StickyModelFromCandidateSyntaxFoldingProvider"),_ie);StickyModelFromCandidateSyntaxFoldingProvider=__decorate$i([__param$i(2,ILanguageFeaturesService)],StickyModelFromCandidateSyntaxFoldingProvider);var __decorate$h=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$h=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _StickyLineCandidate=class _StickyLineCandidate{constructor(startLineNumber,endLineNumber,nestingDepth){this.startLineNumber=startLineNumber,this.endLineNumber=endLineNumber,this.nestingDepth=nestingDepth}};__name(_StickyLineCandidate,"StickyLineCandidate");let StickyLineCandidate=_StickyLineCandidate,StickyLineCandidateProvider=(_je=class extends Disposable{constructor(editor2,_languageFeaturesService,_languageConfigurationService){super(),this._languageFeaturesService=_languageFeaturesService,this._languageConfigurationService=_languageConfigurationService,this._onDidChangeStickyScroll=this._register(new Emitter$1),this.onDidChangeStickyScroll=this._onDidChangeStickyScroll.event,this._model=null,this._cts=null,this._stickyModelProvider=null,this._editor=editor2,this._sessionStore=this._register(new DisposableStore),this._updateSoon=this._register(new RunOnceScheduler(()=>this.update(),50)),this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(116)&&this.readConfiguration()})),this.readConfiguration()}readConfiguration(){this._sessionStore.clear(),this._editor.getOption(116).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(toDisposable(()=>{var _a3;(_a3=this._stickyModelProvider)==null||_a3.dispose(),this._stickyModelProvider=null})),this.updateStickyModelProvider(),this.update())}getVersionId(){var _a3;return(_a3=this._model)==null?void 0:_a3.version}updateStickyModelProvider(){var _a3;(_a3=this._stickyModelProvider)==null||_a3.dispose(),this._stickyModelProvider=null;const editor2=this._editor;editor2.hasModel()&&(this._stickyModelProvider=new StickyModelProvider(editor2,()=>this._updateSoon.schedule(),this._languageConfigurationService,this._languageFeaturesService))}async update(){var _a3;(_a3=this._cts)==null||_a3.dispose(!0),this._cts=new CancellationTokenSource$1,await this.updateStickyModel(this._cts.token),this._onDidChangeStickyScroll.fire()}async updateStickyModel(token){if(!this._editor.hasModel()||!this._stickyModelProvider||this._editor.getModel().isTooLargeForTokenization()){this._model=null;return}const model=await this._stickyModelProvider.update(token);token.isCancellationRequested||(this._model=model)}updateIndex(index){return index===-1?index=0:index<0&&(index=-index-2),index}getCandidateStickyLinesIntersectingFromStickyModel(range2,outlineModel,result,depth,lastStartLineNumber){if(outlineModel.children.length===0)return;let lastLine=lastStartLineNumber;const childrenStartLines=[];for(let i=0;i<outlineModel.children.length;i++){const child=outlineModel.children[i];child.range&&childrenStartLines.push(child.range.startLineNumber)}const lowerBound=this.updateIndex(binarySearch(childrenStartLines,range2.startLineNumber,(a,b)=>a-b)),upperBound=this.updateIndex(binarySearch(childrenStartLines,range2.startLineNumber+depth,(a,b)=>a-b));for(let i=lowerBound;i<=upperBound;i++){const child=outlineModel.children[i];if(!child)return;if(child.range){const childStartLine=child.range.startLineNumber,childEndLine=child.range.endLineNumber;range2.startLineNumber<=childEndLine+1&&childStartLine-1<=range2.endLineNumber&&childStartLine!==lastLine&&(lastLine=childStartLine,result.push(new StickyLineCandidate(childStartLine,childEndLine-1,depth+1)),this.getCandidateStickyLinesIntersectingFromStickyModel(range2,child,result,depth+1,childStartLine))}else this.getCandidateStickyLinesIntersectingFromStickyModel(range2,child,result,depth,lastStartLineNumber)}}getCandidateStickyLinesIntersecting(range2){var _a3,_b3;if(!((_a3=this._model)!=null&&_a3.element))return[];let stickyLineCandidates=[];this.getCandidateStickyLinesIntersectingFromStickyModel(range2,this._model.element,stickyLineCandidates,0,-1);const hiddenRanges=(_b3=this._editor._getViewModel())==null?void 0:_b3.getHiddenAreas();if(hiddenRanges)for(const hiddenRange of hiddenRanges)stickyLineCandidates=stickyLineCandidates.filter(stickyLine=>!(stickyLine.startLineNumber>=hiddenRange.startLineNumber&&stickyLine.endLineNumber<=hiddenRange.endLineNumber+1));return stickyLineCandidates}},__name(_je,"StickyLineCandidateProvider"),_je);StickyLineCandidateProvider=__decorate$h([__param$h(1,ILanguageFeaturesService),__param$h(2,ILanguageConfigurationService)],StickyLineCandidateProvider);var __decorate$g=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$g=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},StickyScrollController_1;let StickyScrollController=(_ke=class extends Disposable{constructor(_editor,_contextMenuService,_languageFeaturesService,_instaService,_languageConfigurationService,_languageFeatureDebounceService,_contextKeyService){super(),this._editor=_editor,this._contextMenuService=_contextMenuService,this._languageFeaturesService=_languageFeaturesService,this._instaService=_instaService,this._contextKeyService=_contextKeyService,this._sessionStore=new DisposableStore,this._maxStickyLines=Number.MAX_SAFE_INTEGER,this._candidateDefinitionsLength=-1,this._focusedStickyElementIndex=-1,this._enabled=!1,this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1,this._endLineNumbers=[],this._stickyScrollWidget=new StickyScrollWidget(this._editor),this._stickyLineCandidateProvider=new StickyLineCandidateProvider(this._editor,_languageFeaturesService,_languageConfigurationService),this._register(this._stickyScrollWidget),this._register(this._stickyLineCandidateProvider),this._widgetState=StickyScrollWidgetState.Empty,this._onDidResize(),this._readConfiguration();const stickyScrollDomNode=this._stickyScrollWidget.getDomNode();this._register(this._editor.onDidChangeConfiguration(e=>{this._readConfigurationChange(e)})),this._register(addDisposableListener(stickyScrollDomNode,EventType$1.CONTEXT_MENU,async event=>{this._onContextMenu(getWindow(stickyScrollDomNode),event)})),this._stickyScrollFocusedContextKey=EditorContextKeys.stickyScrollFocused.bindTo(this._contextKeyService),this._stickyScrollVisibleContextKey=EditorContextKeys.stickyScrollVisible.bindTo(this._contextKeyService);const focusTracker=this._register(trackFocus(stickyScrollDomNode));this._register(focusTracker.onDidBlur(_=>{this._positionRevealed===!1&&stickyScrollDomNode.clientHeight===0?(this._focusedStickyElementIndex=-1,this.focus()):this._disposeFocusStickyScrollStore()})),this._register(focusTracker.onDidFocus(_=>{this.focus()})),this._registerMouseListeners(),this._register(addDisposableListener(stickyScrollDomNode,EventType$1.MOUSE_DOWN,e=>{this._onMouseDown=!0}))}static get(editor2){return editor2.getContribution(StickyScrollController_1.ID)}_disposeFocusStickyScrollStore(){var _a3;this._stickyScrollFocusedContextKey.set(!1),(_a3=this._focusDisposableStore)==null||_a3.dispose(),this._focused=!1,this._positionRevealed=!1,this._onMouseDown=!1}focus(){if(this._onMouseDown){this._onMouseDown=!1,this._editor.focus();return}this._stickyScrollFocusedContextKey.get()!==!0&&(this._focused=!0,this._focusDisposableStore=new DisposableStore,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(direction){this._focusedStickyElementIndex=direction?this._focusedStickyElementIndex+1:this._focusedStickyElementIndex-1,this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex)}goToFocused(){const lineNumbers=this._stickyScrollWidget.lineNumbers;this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:lineNumbers[this._focusedStickyElementIndex],column:1})}_revealPosition(position){this._reveaInEditor(position,()=>this._editor.revealPosition(position))}_revealLineInCenterIfOutsideViewport(position){this._reveaInEditor(position,()=>this._editor.revealLineInCenterIfOutsideViewport(position.lineNumber,0))}_reveaInEditor(position,revealFunction){this._focused&&this._disposeFocusStickyScrollStore(),this._positionRevealed=!0,revealFunction(),this._editor.setSelection(Range$5.fromPositions(position)),this._editor.focus()}_registerMouseListeners(){const sessionStore=this._register(new DisposableStore),gesture=this._register(new ClickLinkGesture(this._editor,{extractLineNumberFromMouseEvent:__name(e=>{const position=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);return position?position.lineNumber:0},"extractLineNumberFromMouseEvent")})),getMouseEventTarget=__name(mouseEvent=>{if(!this._editor.hasModel()||mouseEvent.target.type!==12||mouseEvent.target.detail!==this._stickyScrollWidget.getId())return null;const mouseTargetElement=mouseEvent.target.element;if(!mouseTargetElement||mouseTargetElement.innerText!==mouseTargetElement.innerHTML)return null;const position=this._stickyScrollWidget.getEditorPositionFromNode(mouseTargetElement);return position?{range:new Range$5(position.lineNumber,position.column,position.lineNumber,position.column+mouseTargetElement.innerText.length),textElement:mouseTargetElement}:null},"getMouseEventTarget"),stickyScrollWidgetDomNode=this._stickyScrollWidget.getDomNode();this._register(addStandardDisposableListener(stickyScrollWidgetDomNode,EventType$1.CLICK,mouseEvent=>{if(mouseEvent.ctrlKey||mouseEvent.altKey||mouseEvent.metaKey||!mouseEvent.leftButton)return;if(mouseEvent.shiftKey){const lineIndex=this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);if(lineIndex===null)return;const position2=new Position$4(this._endLineNumbers[lineIndex],1);this._revealLineInCenterIfOutsideViewport(position2);return}if(this._stickyScrollWidget.isInFoldingIconDomNode(mouseEvent.target)){const lineNumber=this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);this._toggleFoldingRegionForLine(lineNumber);return}if(!this._stickyScrollWidget.isInStickyLine(mouseEvent.target))return;let position=this._stickyScrollWidget.getEditorPositionFromNode(mouseEvent.target);if(!position){const lineNumber=this._stickyScrollWidget.getLineNumberFromChildDomNode(mouseEvent.target);if(lineNumber===null)return;position=new Position$4(lineNumber,1)}this._revealPosition(position)})),this._register(addStandardDisposableListener(stickyScrollWidgetDomNode,EventType$1.MOUSE_MOVE,mouseEvent=>{if(mouseEvent.shiftKey){const currentEndForLineIndex=this._stickyScrollWidget.getLineIndexFromChildDomNode(mouseEvent.target);if(currentEndForLineIndex===null||this._showEndForLine!==null&&this._showEndForLine===currentEndForLineIndex)return;this._showEndForLine=currentEndForLineIndex,this._renderStickyScroll();return}this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(addDisposableListener(stickyScrollWidgetDomNode,EventType$1.MOUSE_LEAVE,e=>{this._showEndForLine!==void 0&&(this._showEndForLine=void 0,this._renderStickyScroll())})),this._register(gesture.onMouseMoveOrRelevantKeyDown(([mouseEvent,_keyboardEvent])=>{const mouseTarget=getMouseEventTarget(mouseEvent);if(!mouseTarget||!mouseEvent.hasTriggerModifier||!this._editor.hasModel()){sessionStore.clear();return}const{range:range2,textElement}=mouseTarget;if(!range2.equalsRange(this._stickyRangeProjectedOnEditor))this._stickyRangeProjectedOnEditor=range2,sessionStore.clear();else if(textElement.style.textDecoration==="underline")return;const cancellationToken=new CancellationTokenSource$1;sessionStore.add(toDisposable(()=>cancellationToken.dispose(!0)));let currentHTMLChild;getDefinitionsAtPosition(this._languageFeaturesService.definitionProvider,this._editor.getModel(),new Position$4(range2.startLineNumber,range2.startColumn+1),!1,cancellationToken.token).then(candidateDefinitions=>{if(!cancellationToken.token.isCancellationRequested)if(candidateDefinitions.length!==0){this._candidateDefinitionsLength=candidateDefinitions.length;const childHTML=textElement;currentHTMLChild!==childHTML?(sessionStore.clear(),currentHTMLChild=childHTML,currentHTMLChild.style.textDecoration="underline",sessionStore.add(toDisposable(()=>{currentHTMLChild.style.textDecoration="none"}))):currentHTMLChild||(currentHTMLChild=childHTML,currentHTMLChild.style.textDecoration="underline",sessionStore.add(toDisposable(()=>{currentHTMLChild.style.textDecoration="none"})))}else sessionStore.clear()})})),this._register(gesture.onCancel(()=>{sessionStore.clear()})),this._register(gesture.onExecute(async e=>{if(e.target.type!==12||e.target.detail!==this._stickyScrollWidget.getId())return;const position=this._stickyScrollWidget.getEditorPositionFromNode(e.target.element);position&&(!this._editor.hasModel()||!this._stickyRangeProjectedOnEditor||(this._candidateDefinitionsLength>1&&(this._focused&&this._disposeFocusStickyScrollStore(),this._revealPosition({lineNumber:position.lineNumber,column:1})),this._instaService.invokeFunction(goToDefinitionWithLocation,e,this._editor,{uri:this._editor.getModel().uri,range:this._stickyRangeProjectedOnEditor})))}))}_onContextMenu(targetWindow,e){const event=new StandardMouseEvent(targetWindow,e);this._contextMenuService.showContextMenu({menuId:MenuId.StickyScrollContext,getAnchor:__name(()=>event,"getAnchor")})}_toggleFoldingRegionForLine(line){if(!this._foldingModel||line===null)return;const stickyLine=this._stickyScrollWidget.getRenderedStickyLine(line),foldingIcon=stickyLine==null?void 0:stickyLine.foldingIcon;if(!foldingIcon)return;toggleCollapseState(this._foldingModel,Number.MAX_VALUE,[line]),foldingIcon.isCollapsed=!foldingIcon.isCollapsed;const scrollTop=(foldingIcon.isCollapsed?this._editor.getTopForLineNumber(foldingIcon.foldingEndLine):this._editor.getTopForLineNumber(foldingIcon.foldingStartLine))-this._editor.getOption(67)*stickyLine.index+1;this._editor.setScrollTop(scrollTop),this._renderStickyScroll(line)}_readConfiguration(){const options=this._editor.getOption(116);if(options.enabled===!1){this._editor.removeOverlayWidget(this._stickyScrollWidget),this._sessionStore.clear(),this._enabled=!1;return}else options.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(68).renderType===2&&this._sessionStore.add(this._editor.onDidChangeCursorPosition(()=>{this._showEndForLine=void 0,this._renderStickyScroll(0)}))}_readConfigurationChange(event){(event.hasChanged(116)||event.hasChanged(73)||event.hasChanged(67)||event.hasChanged(111)||event.hasChanged(68))&&this._readConfiguration(),event.hasChanged(68)&&this._renderStickyScroll(0)}_needsUpdate(event){const stickyLineNumbers=this._stickyScrollWidget.getCurrentLines();for(const stickyLineNumber of stickyLineNumbers)for(const range2 of event.ranges)if(stickyLineNumber>=range2.fromLineNumber&&stickyLineNumber<=range2.toLineNumber)return!0;return!1}_onTokensChange(event){this._needsUpdate(event)&&this._renderStickyScroll(0)}_onDidResize(){const theoreticalLines=this._editor.getLayoutInfo().height/this._editor.getOption(67);this._maxStickyLines=Math.round(theoreticalLines*.25)}async _renderStickyScroll(rebuildFromLine){const model=this._editor.getModel();if(!model||model.isTooLargeForTokenization()){this._resetState();return}const nextRebuildFromLine=this._updateAndGetMinRebuildFromLine(rebuildFromLine),stickyWidgetVersion=this._stickyLineCandidateProvider.getVersionId();if(stickyWidgetVersion===void 0||stickyWidgetVersion===model.getVersionId())if(!this._focused)await this._updateState(nextRebuildFromLine);else if(this._focusedStickyElementIndex===-1)await this._updateState(nextRebuildFromLine),this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1,this._focusedStickyElementIndex!==-1&&this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex);else{const focusedStickyElementLineNumber=this._stickyScrollWidget.lineNumbers[this._focusedStickyElementIndex];await this._updateState(nextRebuildFromLine),this._stickyScrollWidget.lineNumberCount===0?this._focusedStickyElementIndex=-1:(this._stickyScrollWidget.lineNumbers.includes(focusedStickyElementLineNumber)||(this._focusedStickyElementIndex=this._stickyScrollWidget.lineNumberCount-1),this._stickyScrollWidget.focusLineWithIndex(this._focusedStickyElementIndex))}}_updateAndGetMinRebuildFromLine(rebuildFromLine){if(rebuildFromLine!==void 0){const minRebuildFromLineOrInfinity=this._minRebuildFromLine!==void 0?this._minRebuildFromLine:1/0;this._minRebuildFromLine=Math.min(rebuildFromLine,minRebuildFromLineOrInfinity)}return this._minRebuildFromLine}async _updateState(rebuildFromLine){var _a3,_b3;this._minRebuildFromLine=void 0,this._foldingModel=(_b3=await((_a3=FoldingController.get(this._editor))==null?void 0:_a3.getFoldingModel()))!=null?_b3:void 0,this._widgetState=this.findScrollWidgetState();const stickyWidgetHasLines=this._widgetState.startLineNumbers.length>0;this._stickyScrollVisibleContextKey.set(stickyWidgetHasLines),this._stickyScrollWidget.setState(this._widgetState,this._foldingModel,rebuildFromLine)}async _resetState(){this._minRebuildFromLine=void 0,this._foldingModel=void 0,this._widgetState=StickyScrollWidgetState.Empty,this._stickyScrollVisibleContextKey.set(!1),this._stickyScrollWidget.setState(void 0,void 0)}findScrollWidgetState(){const lineHeight=this._editor.getOption(67),maxNumberStickyLines=Math.min(this._maxStickyLines,this._editor.getOption(116).maxLineCount),scrollTop=this._editor.getScrollTop();let lastLineRelativePosition=0;const startLineNumbers=[],endLineNumbers=[],arrayVisibleRanges=this._editor.getVisibleRanges();if(arrayVisibleRanges.length!==0){const fullVisibleRange=new StickyRange(arrayVisibleRanges[0].startLineNumber,arrayVisibleRanges[arrayVisibleRanges.length-1].endLineNumber),candidateRanges=this._stickyLineCandidateProvider.getCandidateStickyLinesIntersecting(fullVisibleRange);for(const range2 of candidateRanges){const start=range2.startLineNumber,end=range2.endLineNumber,depth=range2.nestingDepth;if(end-start>0){const topOfElementAtDepth=(depth-1)*lineHeight,bottomOfElementAtDepth=depth*lineHeight,bottomOfBeginningLine=this._editor.getBottomForLineNumber(start)-scrollTop,topOfEndLine=this._editor.getTopForLineNumber(end)-scrollTop,bottomOfEndLine=this._editor.getBottomForLineNumber(end)-scrollTop;if(topOfElementAtDepth>topOfEndLine&&topOfElementAtDepth<=bottomOfEndLine){startLineNumbers.push(start),endLineNumbers.push(end+1),lastLineRelativePosition=bottomOfEndLine-bottomOfElementAtDepth;break}else bottomOfElementAtDepth>bottomOfBeginningLine&&bottomOfElementAtDepth<=bottomOfEndLine&&(startLineNumbers.push(start),endLineNumbers.push(end+1));if(startLineNumbers.length===maxNumberStickyLines)break}}}return this._endLineNumbers=endLineNumbers,new StickyScrollWidgetState(startLineNumbers,endLineNumbers,lastLineRelativePosition,this._showEndForLine)}dispose(){super.dispose(),this._sessionStore.dispose()}},__name(_ke,"StickyScrollController"),StickyScrollController_1=_ke,_ke.ID="store.contrib.stickyScrollController",_ke);StickyScrollController=StickyScrollController_1=__decorate$g([__param$g(1,IContextMenuService),__param$g(2,ILanguageFeaturesService),__param$g(3,IInstantiationService),__param$g(4,ILanguageConfigurationService),__param$g(5,ILanguageFeatureDebounceService),__param$g(6,IContextKeyService)],StickyScrollController);const _ToggleStickyScroll=class _ToggleStickyScroll extends Action2{constructor(){super({id:"editor.action.toggleStickyScroll",title:{...localize2("toggleEditorStickyScroll","Toggle Editor Sticky Scroll"),mnemonicTitle:localize({key:"mitoggleStickyScroll",comment:["&& denotes a mnemonic"]},"&&Toggle Editor Sticky Scroll")},metadata:{description:localize2("toggleEditorStickyScroll.description","Toggle/enable the editor sticky scroll which shows the nested scopes at the top of the viewport")},category:Categories.View,toggled:{condition:ContextKeyExpr.equals("config.editor.stickyScroll.enabled",!0),title:localize("stickyScroll","Sticky Scroll"),mnemonicTitle:localize({key:"miStickyScroll",comment:["&& denotes a mnemonic"]},"&&Sticky Scroll")},menu:[{id:MenuId.CommandPalette},{id:MenuId.MenubarAppearanceMenu,group:"4_editor",order:3},{id:MenuId.StickyScrollContext}]})}async run(accessor){const configurationService=accessor.get(IConfigurationService),newValue=!configurationService.getValue("editor.stickyScroll.enabled");return configurationService.updateValue("editor.stickyScroll.enabled",newValue)}};__name(_ToggleStickyScroll,"ToggleStickyScroll");let ToggleStickyScroll=_ToggleStickyScroll;const weight=100,_FocusStickyScroll=class _FocusStickyScroll extends EditorAction2{constructor(){super({id:"editor.action.focusStickyScroll",title:{...localize2("focusStickyScroll","Focus on the editor sticky scroll"),mnemonicTitle:localize({key:"mifocusStickyScroll",comment:["&& denotes a mnemonic"]},"&&Focus Sticky Scroll")},precondition:ContextKeyExpr.and(ContextKeyExpr.has("config.editor.stickyScroll.enabled"),EditorContextKeys.stickyScrollVisible),menu:[{id:MenuId.CommandPalette}]})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focus()}};__name(_FocusStickyScroll,"FocusStickyScroll");let FocusStickyScroll=_FocusStickyScroll;const _SelectNextStickyScrollLine=class _SelectNextStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.selectNextStickyScrollLine",title:localize2("selectNextStickyScrollLine.title","Select the next editor sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:18}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focusNext()}};__name(_SelectNextStickyScrollLine,"SelectNextStickyScrollLine");let SelectNextStickyScrollLine=_SelectNextStickyScrollLine;const _SelectPreviousStickyScrollLine=class _SelectPreviousStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.selectPreviousStickyScrollLine",title:localize2("selectPreviousStickyScrollLine.title","Select the previous sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:16}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.focusPrevious()}};__name(_SelectPreviousStickyScrollLine,"SelectPreviousStickyScrollLine");let SelectPreviousStickyScrollLine=_SelectPreviousStickyScrollLine;const _GoToStickyScrollLine=class _GoToStickyScrollLine extends EditorAction2{constructor(){super({id:"editor.action.goToFocusedStickyScrollLine",title:localize2("goToFocusedStickyScrollLine.title","Go to the focused sticky scroll line"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:3}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.goToFocused()}};__name(_GoToStickyScrollLine,"GoToStickyScrollLine");let GoToStickyScrollLine=_GoToStickyScrollLine;const _SelectEditor=class _SelectEditor extends EditorAction2{constructor(){super({id:"editor.action.selectEditor",title:localize2("selectEditor.title","Select Editor"),precondition:EditorContextKeys.stickyScrollFocused.isEqualTo(!0),keybinding:{weight,primary:9}})}runEditorCommand(_accessor,editor2){var _a3;(_a3=StickyScrollController.get(editor2))==null||_a3.selectEditor()}};__name(_SelectEditor,"SelectEditor");let SelectEditor=_SelectEditor;registerEditorContribution(StickyScrollController.ID,StickyScrollController,1),registerAction2(ToggleStickyScroll),registerAction2(FocusStickyScroll),registerAction2(SelectPreviousStickyScrollLine),registerAction2(SelectNextStickyScrollLine),registerAction2(GoToStickyScrollLine),registerAction2(SelectEditor);var __decorate$f=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$f=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _SuggestInlineCompletion=class _SuggestInlineCompletion{constructor(range2,insertText,filterText,additionalTextEdits,command,completion){this.range=range2,this.insertText=insertText,this.filterText=filterText,this.additionalTextEdits=additionalTextEdits,this.command=command,this.completion=completion}};__name(_SuggestInlineCompletion,"SuggestInlineCompletion");let SuggestInlineCompletion=_SuggestInlineCompletion,InlineCompletionResults=(_le=class extends RefCountedDisposable{constructor(model,line,word,completionModel,completions,_suggestMemoryService){super(completions.disposable),this.model=model,this.line=line,this.word=word,this.completionModel=completionModel,this._suggestMemoryService=_suggestMemoryService}canBeReused(model,line,word){return this.model===model&&this.line===line&&this.word.word.length>0&&this.word.startColumn===word.startColumn&&this.word.endColumn<word.endColumn&&this.completionModel.getIncompleteProvider().size===0}get items(){var _a3;const result=[],{items}=this.completionModel,selectedIndex=this._suggestMemoryService.select(this.model,{lineNumber:this.line,column:this.word.endColumn+this.completionModel.lineContext.characterCountDelta},items),first2=Iterable.slice(items,selectedIndex),second=Iterable.slice(items,0,selectedIndex);let resolveCount=5;for(const item of Iterable.concat(first2,second)){if(item.score===FuzzyScore.Default)continue;const range2=new Range$5(item.editStart.lineNumber,item.editStart.column,item.editInsertEnd.lineNumber,item.editInsertEnd.column+this.completionModel.lineContext.characterCountDelta),insertText=item.completion.insertTextRules&&item.completion.insertTextRules&4?{snippet:item.completion.insertText}:item.completion.insertText;result.push(new SuggestInlineCompletion(range2,insertText,(_a3=item.filterTextLow)!=null?_a3:item.labelLow,item.completion.additionalTextEdits,item.completion.command,item)),resolveCount-->=0&&item.resolve(CancellationToken.None)}return result}},__name(_le,"InlineCompletionResults"),_le);InlineCompletionResults=__decorate$f([__param$f(5,ISuggestMemoryService)],InlineCompletionResults);let SuggestInlineCompletions=(_me=class extends Disposable{constructor(_languageFeatureService,_clipboardService,_suggestMemoryService,_editorService){super(),this._languageFeatureService=_languageFeatureService,this._clipboardService=_clipboardService,this._suggestMemoryService=_suggestMemoryService,this._editorService=_editorService,this._store.add(_languageFeatureService.inlineCompletionsProvider.register("*",this))}async provideInlineCompletions(model,position,context,token){var _a3;if(context.selectedSuggestionInfo)return;let editor2;for(const candidate of this._editorService.listCodeEditors())if(candidate.getModel()===model){editor2=candidate;break}if(!editor2)return;const config=editor2.getOption(90);if(QuickSuggestionsOptions.isAllOff(config))return;model.tokenization.tokenizeIfCheap(position.lineNumber);const lineTokens=model.tokenization.getLineTokens(position.lineNumber),tokenType=lineTokens.getStandardTokenType(lineTokens.findTokenIndexAtOffset(Math.max(position.column-1-1,0)));if(QuickSuggestionsOptions.valueFor(config,tokenType)!=="inline")return;let wordInfo=model.getWordAtPosition(position),triggerCharacterInfo;if(wordInfo!=null&&wordInfo.word||(triggerCharacterInfo=this._getTriggerCharacterInfo(model,position)),!(wordInfo!=null&&wordInfo.word)&&!triggerCharacterInfo||(wordInfo||(wordInfo=model.getWordUntilPosition(position)),wordInfo.endColumn!==position.column))return;let result;const leadingLineContents=model.getValueInRange(new Range$5(position.lineNumber,1,position.lineNumber,position.column));if(!triggerCharacterInfo&&((_a3=this._lastResult)!=null&&_a3.canBeReused(model,position.lineNumber,wordInfo))){const newLineContext=new LineContext$1(leadingLineContents,position.column-this._lastResult.word.endColumn);this._lastResult.completionModel.lineContext=newLineContext,this._lastResult.acquire(),result=this._lastResult}else{const completions=await provideSuggestionItems(this._languageFeatureService.completionProvider,model,position,new CompletionOptions(void 0,SuggestModel.createSuggestFilter(editor2).itemKind,triggerCharacterInfo==null?void 0:triggerCharacterInfo.providers),triggerCharacterInfo&&{triggerKind:1,triggerCharacter:triggerCharacterInfo.ch},token);let clipboardText;completions.needsClipboard&&(clipboardText=await this._clipboardService.readText());const completionModel=new CompletionModel(completions.items,position.column,new LineContext$1(leadingLineContents,0),WordDistance.None,editor2.getOption(119),editor2.getOption(113),{boostFullMatch:!1,firstMatchCanBeWeak:!1},clipboardText);result=new InlineCompletionResults(model,position.lineNumber,wordInfo,completionModel,completions,this._suggestMemoryService)}return this._lastResult=result,result}handleItemDidShow(_completions,item){item.completion.resolve(CancellationToken.None)}freeInlineCompletions(result){result.release()}_getTriggerCharacterInfo(model,position){var _a3;const ch=model.getValueInRange(Range$5.fromPositions({lineNumber:position.lineNumber,column:position.column-1},position)),providers=new Set;for(const provider of this._languageFeatureService.completionProvider.all(model))(_a3=provider.triggerCharacters)!=null&&_a3.includes(ch)&&providers.add(provider);if(providers.size!==0)return{providers,ch}}},__name(_me,"SuggestInlineCompletions"),_me);SuggestInlineCompletions=__decorate$f([__param$f(0,ILanguageFeaturesService),__param$f(1,IClipboardService),__param$f(2,ISuggestMemoryService),__param$f(3,ICodeEditorService)],SuggestInlineCompletions),registerEditorFeature(SuggestInlineCompletions);const _ForceRetokenizeAction=class _ForceRetokenizeAction extends EditorAction{constructor(){super({id:"editor.action.forceRetokenize",label:localize("forceRetokenize","Developer: Force Retokenize"),alias:"Developer: Force Retokenize",precondition:void 0})}run(accessor,editor2){if(!editor2.hasModel())return;const model=editor2.getModel();model.tokenization.resetTokenization();const sw=new StopWatch;model.tokenization.forceTokenization(model.getLineCount()),sw.stop(),console.log(`tokenization took ${sw.elapsed()}`)}};__name(_ForceRetokenizeAction,"ForceRetokenizeAction");let ForceRetokenizeAction=_ForceRetokenizeAction;registerEditorAction(ForceRetokenizeAction);const _ToggleTabFocusModeAction=class _ToggleTabFocusModeAction extends Action2{constructor(){super({id:_ToggleTabFocusModeAction.ID,title:localize2({key:"toggle.tabMovesFocus",comment:["Turn on/off use of tab key for moving focus around VS Code"]},"Toggle Tab Key Moves Focus"),precondition:void 0,keybinding:{primary:2091,mac:{primary:1323},weight:100},metadata:{description:localize2("tabMovesFocusDescriptions","Determines whether the tab key moves focus around the workbench or inserts the tab character in the current editor. This is also called tab trapping, tab navigation, or tab focus mode.")},f1:!0})}run(){const newValue=!TabFocus.getTabFocusMode();TabFocus.setTabFocusMode(newValue),alert(newValue?localize("toggle.tabMovesFocus.on","Pressing Tab will now move focus to the next focusable element"):localize("toggle.tabMovesFocus.off","Pressing Tab will now insert the tab character"))}};__name(_ToggleTabFocusModeAction,"ToggleTabFocusModeAction"),_ToggleTabFocusModeAction.ID="editor.action.toggleTabFocusMode";let ToggleTabFocusModeAction=_ToggleTabFocusModeAction;registerAction2(ToggleTabFocusModeAction);var __decorate$e=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$e=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let Link=(_ne=class extends Disposable{get enabled(){return this._enabled}set enabled(enabled){enabled?(this.el.setAttribute("aria-disabled","false"),this.el.tabIndex=0,this.el.style.pointerEvents="auto",this.el.style.opacity="1",this.el.style.cursor="pointer",this._enabled=!1):(this.el.setAttribute("aria-disabled","true"),this.el.tabIndex=-1,this.el.style.pointerEvents="none",this.el.style.opacity="0.4",this.el.style.cursor="default",this._enabled=!0),this._enabled=enabled}constructor(container,_link,options={},_hoverService,openerService){var _a3,_b3;super(),this._link=_link,this._hoverService=_hoverService,this._enabled=!0,this.el=append$1(container,$$e("a.monaco-link",{tabIndex:(_a3=_link.tabIndex)!=null?_a3:0,href:_link.href},_link.label)),this.hoverDelegate=(_b3=options.hoverDelegate)!=null?_b3:getDefaultHoverDelegate("mouse"),this.setTooltip(_link.title),this.el.setAttribute("role","button");const onClickEmitter=this._register(new DomEmitter(this.el,"click")),onKeyPress=this._register(new DomEmitter(this.el,"keypress")),onEnterPress=Event.chain(onKeyPress.event,$2=>$2.map(e=>new StandardKeyboardEvent(e)).filter(e=>e.keyCode===3)),onTap=this._register(new DomEmitter(this.el,EventType.Tap)).event;this._register(Gesture.addTarget(this.el));const onOpen=Event.any(onClickEmitter.event,onEnterPress,onTap);this._register(onOpen(e=>{this.enabled&&(EventHelper.stop(e,!0),options!=null&&options.opener?options.opener(this._link.href):openerService.open(this._link.href,{allowCommands:!0}))})),this.enabled=!0}setTooltip(title){this.hoverDelegate.showNativeHover?this.el.title=title!=null?title:"":!this.hover&&title?this.hover=this._register(this._hoverService.setupManagedHover(this.hoverDelegate,this.el,title)):this.hover&&this.hover.update(title)}},__name(_ne,"Link"),_ne);Link=__decorate$e([__param$e(3,IHoverService),__param$e(4,IOpenerService)],Link);var __decorate$d=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$d=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const BANNER_ELEMENT_HEIGHT=26;let BannerController=(_oe=class extends Disposable{constructor(_editor,instantiationService){super(),this._editor=_editor,this.instantiationService=instantiationService,this.banner=this._register(this.instantiationService.createInstance(Banner))}hide(){this._editor.setBanner(null,0),this.banner.clear()}show(item){this.banner.show({...item,onClose:__name(()=>{var _a3;this.hide(),(_a3=item.onClose)==null||_a3.call(item)},"onClose")}),this._editor.setBanner(this.banner.element,BANNER_ELEMENT_HEIGHT)}},__name(_oe,"BannerController"),_oe);BannerController=__decorate$d([__param$d(1,IInstantiationService)],BannerController);let Banner=(_pe=class extends Disposable{constructor(instantiationService){super(),this.instantiationService=instantiationService,this.markdownRenderer=this.instantiationService.createInstance(MarkdownRenderer,{}),this.element=$$e("div.editor-banner"),this.element.tabIndex=0}getAriaLabel(item){if(item.ariaLabel)return item.ariaLabel;if(typeof item.message=="string")return item.message}getBannerMessage(message){if(typeof message=="string"){const element=$$e("span");return element.innerText=message,element}return this.markdownRenderer.render(message).element}clear(){clearNode(this.element)}show(item){clearNode(this.element);const ariaLabel=this.getAriaLabel(item);ariaLabel&&this.element.setAttribute("aria-label",ariaLabel);const iconContainer=append$1(this.element,$$e("div.icon-container"));iconContainer.setAttribute("aria-hidden","true"),item.icon&&iconContainer.appendChild($$e(`div${ThemeIcon.asCSSSelector(item.icon)}`));const messageContainer=append$1(this.element,$$e("div.message-container"));if(messageContainer.setAttribute("aria-hidden","true"),messageContainer.appendChild(this.getBannerMessage(item.message)),this.messageActionsContainer=append$1(this.element,$$e("div.message-actions-container")),item.actions)for(const action of item.actions)this._register(this.instantiationService.createInstance(Link,this.messageActionsContainer,{...action,tabIndex:-1},{}));const actionBarContainer=append$1(this.element,$$e("div.action-container"));this.actionBar=this._register(new ActionBar(actionBarContainer)),this.actionBar.push(this._register(new Action("banner.close","Close Banner",ThemeIcon.asClassName(widgetClose),!0,()=>{typeof item.onClose=="function"&&item.onClose()})),{icon:!0,label:!1}),this.actionBar.setFocusable(!1)}},__name(_pe,"Banner"),_pe);Banner=__decorate$d([__param$d(0,IInstantiationService)],Banner);var __decorate$c=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$c=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const warningIcon=registerIcon("extensions-warning-message",Codicon.warning,localize("warningIcon","Icon shown with a warning message in the extensions editor."));let UnicodeHighlighter=(_qe=class extends Disposable{constructor(_editor,_editorWorkerService,_workspaceTrustService,instantiationService){super(),this._editor=_editor,this._editorWorkerService=_editorWorkerService,this._workspaceTrustService=_workspaceTrustService,this._highlighter=null,this._bannerClosed=!1,this._updateState=state=>{if(state&&state.hasMore){if(this._bannerClosed)return;const max=Math.max(state.ambiguousCharacterCount,state.nonBasicAsciiCharacterCount,state.invisibleCharacterCount);let data;if(state.nonBasicAsciiCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyNonBasicAsciiUnicodeCharacters","This document contains many non-basic ASCII unicode characters"),command:new DisableHighlightingOfNonBasicAsciiCharactersAction};else if(state.ambiguousCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyAmbiguousUnicodeCharacters","This document contains many ambiguous unicode characters"),command:new DisableHighlightingOfAmbiguousCharactersAction};else if(state.invisibleCharacterCount>=max)data={message:localize("unicodeHighlighting.thisDocumentHasManyInvisibleUnicodeCharacters","This document contains many invisible unicode characters"),command:new DisableHighlightingOfInvisibleCharactersAction};else throw new Error("Unreachable");this._bannerController.show({id:"unicodeHighlightBanner",message:data.message,icon:warningIcon,actions:[{label:data.command.shortLabel,href:`command:${data.command.id}`}],onClose:__name(()=>{this._bannerClosed=!0},"onClose")})}else this._bannerController.hide()},this._bannerController=this._register(instantiationService.createInstance(BannerController,_editor)),this._register(this._editor.onDidChangeModel(()=>{this._bannerClosed=!1,this._updateHighlighter()})),this._options=_editor.getOption(126),this._register(_workspaceTrustService.onDidChangeTrust(e=>{this._updateHighlighter()})),this._register(_editor.onDidChangeConfiguration(e=>{e.hasChanged(126)&&(this._options=_editor.getOption(126),this._updateHighlighter())})),this._updateHighlighter()}dispose(){this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),super.dispose()}_updateHighlighter(){if(this._updateState(null),this._highlighter&&(this._highlighter.dispose(),this._highlighter=null),!this._editor.hasModel())return;const options=resolveOptions(this._workspaceTrustService.isWorkspaceTrusted(),this._options);if([options.nonBasicASCII,options.ambiguousCharacters,options.invisibleCharacters].every(option=>option===!1))return;const highlightOptions={nonBasicASCII:options.nonBasicASCII,ambiguousCharacters:options.ambiguousCharacters,invisibleCharacters:options.invisibleCharacters,includeComments:options.includeComments,includeStrings:options.includeStrings,allowedCodePoints:Object.keys(options.allowedCharacters).map(c=>c.codePointAt(0)),allowedLocales:Object.keys(options.allowedLocales).map(locale=>locale==="_os"?new Intl.NumberFormat().resolvedOptions().locale:locale==="_vscode"?language$1g:locale)};this._editorWorkerService.canComputeUnicodeHighlights(this._editor.getModel().uri)?this._highlighter=new DocumentUnicodeHighlighter(this._editor,highlightOptions,this._updateState,this._editorWorkerService):this._highlighter=new ViewportUnicodeHighlighter(this._editor,highlightOptions,this._updateState)}getDecorationInfo(decoration2){return this._highlighter?this._highlighter.getDecorationInfo(decoration2):null}},__name(_qe,"UnicodeHighlighter"),_qe.ID="editor.contrib.unicodeHighlighter",_qe);UnicodeHighlighter=__decorate$c([__param$c(1,IEditorWorkerService),__param$c(2,IWorkspaceTrustManagementService),__param$c(3,IInstantiationService)],UnicodeHighlighter);function resolveOptions(trusted,options){return{nonBasicASCII:options.nonBasicASCII===inUntrustedWorkspace?!trusted:options.nonBasicASCII,ambiguousCharacters:options.ambiguousCharacters,invisibleCharacters:options.invisibleCharacters,includeComments:options.includeComments===inUntrustedWorkspace?!trusted:options.includeComments,includeStrings:options.includeStrings===inUntrustedWorkspace?!trusted:options.includeStrings,allowedCharacters:options.allowedCharacters,allowedLocales:options.allowedLocales}}__name(resolveOptions,"resolveOptions");let DocumentUnicodeHighlighter=(_re=class extends Disposable{constructor(_editor,_options,_updateState,_editorWorkerService){super(),this._editor=_editor,this._options=_options,this._updateState=_updateState,this._editorWorkerService=_editorWorkerService,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const modelVersionId=this._model.getVersionId();this._editorWorkerService.computedUnicodeHighlights(this._model.uri,this._options).then(info=>{if(this._model.isDisposed()||this._model.getVersionId()!==modelVersionId)return;this._updateState(info);const decorations=[];if(!info.hasMore)for(const range2 of info.ranges)decorations.push({range:range2,options:Decorations.instance.getDecorationFromOptions(this._options)});this._decorations.set(decorations)})}getDecorationInfo(decoration2){if(!this._decorations.has(decoration2))return null;const model=this._editor.getModel();if(!isModelDecorationVisible(model,decoration2))return null;const text2=model.getValueInRange(decoration2.range);return{reason:computeReason(text2,this._options),inComment:isModelDecorationInComment(model,decoration2),inString:isModelDecorationInString(model,decoration2)}}},__name(_re,"DocumentUnicodeHighlighter"),_re);DocumentUnicodeHighlighter=__decorate$c([__param$c(3,IEditorWorkerService)],DocumentUnicodeHighlighter);const _ViewportUnicodeHighlighter=class _ViewportUnicodeHighlighter extends Disposable{constructor(_editor,_options,_updateState){super(),this._editor=_editor,this._options=_options,this._updateState=_updateState,this._model=this._editor.getModel(),this._decorations=this._editor.createDecorationsCollection(),this._updateSoon=this._register(new RunOnceScheduler(()=>this._update(),250)),this._register(this._editor.onDidLayoutChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidScrollChange(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeHiddenAreas(()=>{this._updateSoon.schedule()})),this._register(this._editor.onDidChangeModelContent(()=>{this._updateSoon.schedule()})),this._updateSoon.schedule()}dispose(){this._decorations.clear(),super.dispose()}_update(){if(this._model.isDisposed())return;if(!this._model.mightContainNonBasicASCII()){this._decorations.clear();return}const ranges=this._editor.getVisibleRanges(),decorations=[],totalResult={ranges:[],ambiguousCharacterCount:0,invisibleCharacterCount:0,nonBasicAsciiCharacterCount:0,hasMore:!1};for(const range2 of ranges){const result=UnicodeTextModelHighlighter.computeUnicodeHighlights(this._model,this._options,range2);for(const r2 of result.ranges)totalResult.ranges.push(r2);totalResult.ambiguousCharacterCount+=totalResult.ambiguousCharacterCount,totalResult.invisibleCharacterCount+=totalResult.invisibleCharacterCount,totalResult.nonBasicAsciiCharacterCount+=totalResult.nonBasicAsciiCharacterCount,totalResult.hasMore=totalResult.hasMore||result.hasMore}if(!totalResult.hasMore)for(const range2 of totalResult.ranges)decorations.push({range:range2,options:Decorations.instance.getDecorationFromOptions(this._options)});this._updateState(totalResult),this._decorations.set(decorations)}getDecorationInfo(decoration2){if(!this._decorations.has(decoration2))return null;const model=this._editor.getModel(),text2=model.getValueInRange(decoration2.range);return isModelDecorationVisible(model,decoration2)?{reason:computeReason(text2,this._options),inComment:isModelDecorationInComment(model,decoration2),inString:isModelDecorationInString(model,decoration2)}:null}};__name(_ViewportUnicodeHighlighter,"ViewportUnicodeHighlighter");let ViewportUnicodeHighlighter=_ViewportUnicodeHighlighter;const configureUnicodeHighlightOptionsStr=localize("unicodeHighlight.configureUnicodeHighlightOptions","Configure Unicode Highlight Options");let UnicodeHighlighterHoverParticipant=(_se=class{constructor(_editor,_languageService,_openerService){this._editor=_editor,this._languageService=_languageService,this._openerService=_openerService,this.hoverOrdinal=5}computeSync(anchor,lineDecorations){if(!this._editor.hasModel()||anchor.type!==1)return[];const model=this._editor.getModel(),unicodeHighlighter=this._editor.getContribution(UnicodeHighlighter.ID);if(!unicodeHighlighter)return[];const result=[],existedReason=new Set;let index=300;for(const d of lineDecorations){const highlightInfo=unicodeHighlighter.getDecorationInfo(d);if(!highlightInfo)continue;const codePoint=model.getValueInRange(d.range).codePointAt(0),codePointStr=formatCodePointMarkdown(codePoint);let reason;switch(highlightInfo.reason.kind){case 0:{isBasicASCII(highlightInfo.reason.confusableWith)?reason=localize("unicodeHighlight.characterIsAmbiguousASCII","The character {0} could be confused with the ASCII character {1}, which is more common in source code.",codePointStr,formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0))):reason=localize("unicodeHighlight.characterIsAmbiguous","The character {0} could be confused with the character {1}, which is more common in source code.",codePointStr,formatCodePointMarkdown(highlightInfo.reason.confusableWith.codePointAt(0)));break}case 1:reason=localize("unicodeHighlight.characterIsInvisible","The character {0} is invisible.",codePointStr);break;case 2:reason=localize("unicodeHighlight.characterIsNonBasicAscii","The character {0} is not a basic ASCII character.",codePointStr);break}if(existedReason.has(reason))continue;existedReason.add(reason);const adjustSettingsArgs={codePoint,reason:highlightInfo.reason,inComment:highlightInfo.inComment,inString:highlightInfo.inString},adjustSettings=localize("unicodeHighlight.adjustSettings","Adjust settings"),uri=`command:${ShowExcludeOptions.ID}?${encodeURIComponent(JSON.stringify(adjustSettingsArgs))}`,markdown2=new MarkdownString("",!0).appendMarkdown(reason).appendText(" ").appendLink(uri,adjustSettings,configureUnicodeHighlightOptionsStr);result.push(new MarkdownHover(this,d.range,[markdown2],!1,index++))}return result}renderHoverParts(context,hoverParts){return renderMarkdownHovers(context,hoverParts,this._editor,this._languageService,this._openerService)}},__name(_se,"UnicodeHighlighterHoverParticipant"),_se);UnicodeHighlighterHoverParticipant=__decorate$c([__param$c(1,ILanguageService),__param$c(2,IOpenerService)],UnicodeHighlighterHoverParticipant);function codePointToHex(codePoint){return`U+${codePoint.toString(16).padStart(4,"0")}`}__name(codePointToHex,"codePointToHex");function formatCodePointMarkdown(codePoint){let value=`\`${codePointToHex(codePoint)}\``;return InvisibleCharacters.isInvisibleCharacter(codePoint)||(value+=` "${`${renderCodePointAsInlineCode(codePoint)}`}"`),value}__name(formatCodePointMarkdown,"formatCodePointMarkdown");function renderCodePointAsInlineCode(codePoint){return codePoint===96?"`` ` ``":"`"+String.fromCodePoint(codePoint)+"`"}__name(renderCodePointAsInlineCode,"renderCodePointAsInlineCode");function computeReason(char,options){return UnicodeTextModelHighlighter.computeUnicodeHighlightReason(char,options)}__name(computeReason,"computeReason");const _Decorations=class _Decorations{constructor(){this.map=new Map}getDecorationFromOptions(options){return this.getDecoration(!options.includeComments,!options.includeStrings)}getDecoration(hideInComments,hideInStrings){const key=`${hideInComments}${hideInStrings}`;let options=this.map.get(key);return options||(options=ModelDecorationOptions.createDynamic({description:"unicode-highlight",stickiness:1,className:"unicode-highlight",showIfCollapsed:!0,overviewRuler:null,minimap:null,hideInCommentTokens:hideInComments,hideInStringTokens:hideInStrings}),this.map.set(key,options)),options}};__name(_Decorations,"Decorations"),_Decorations.instance=new _Decorations;let Decorations=_Decorations;const _DisableHighlightingInCommentsAction=class _DisableHighlightingInCommentsAction extends EditorAction{constructor(){super({id:DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingInComments","Disable highlighting of characters in comments"),alias:"Disable highlighting of characters in comments",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingInComments.shortLabel","Disable Highlight In Comments")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.includeComments,!1,2)}};__name(_DisableHighlightingInCommentsAction,"DisableHighlightingInCommentsAction");let DisableHighlightingInCommentsAction=_DisableHighlightingInCommentsAction;const _DisableHighlightingInStringsAction=class _DisableHighlightingInStringsAction extends EditorAction{constructor(){super({id:DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingInStrings","Disable highlighting of characters in strings"),alias:"Disable highlighting of characters in strings",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingInStrings.shortLabel","Disable Highlight In Strings")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.includeStrings,!1,2)}};__name(_DisableHighlightingInStringsAction,"DisableHighlightingInStringsAction");let DisableHighlightingInStringsAction=_DisableHighlightingInStringsAction;const _DisableHighlightingOfAmbiguousCharactersAction=class _DisableHighlightingOfAmbiguousCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfAmbiguousCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters","Disable highlighting of ambiguous characters"),alias:"Disable highlighting of ambiguous characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfAmbiguousCharacters.shortLabel","Disable Ambiguous Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.ambiguousCharacters,!1,2)}};__name(_DisableHighlightingOfAmbiguousCharactersAction,"DisableHighlightingOfAmbiguousCharactersAction"),_DisableHighlightingOfAmbiguousCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfAmbiguousCharacters";let DisableHighlightingOfAmbiguousCharactersAction=_DisableHighlightingOfAmbiguousCharactersAction;const _DisableHighlightingOfInvisibleCharactersAction=class _DisableHighlightingOfInvisibleCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfInvisibleCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfInvisibleCharacters","Disable highlighting of invisible characters"),alias:"Disable highlighting of invisible characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfInvisibleCharacters.shortLabel","Disable Invisible Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.invisibleCharacters,!1,2)}};__name(_DisableHighlightingOfInvisibleCharactersAction,"DisableHighlightingOfInvisibleCharactersAction"),_DisableHighlightingOfInvisibleCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfInvisibleCharacters";let DisableHighlightingOfInvisibleCharactersAction=_DisableHighlightingOfInvisibleCharactersAction;const _DisableHighlightingOfNonBasicAsciiCharactersAction=class _DisableHighlightingOfNonBasicAsciiCharactersAction extends EditorAction{constructor(){super({id:_DisableHighlightingOfNonBasicAsciiCharactersAction.ID,label:localize("action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters","Disable highlighting of non basic ASCII characters"),alias:"Disable highlighting of non basic ASCII characters",precondition:void 0}),this.shortLabel=localize("unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters.shortLabel","Disable Non ASCII Highlight")}async run(accessor,editor2,args){const configurationService=accessor==null?void 0:accessor.get(IConfigurationService);configurationService&&this.runAction(configurationService)}async runAction(configurationService){await configurationService.updateValue(unicodeHighlightConfigKeys.nonBasicASCII,!1,2)}};__name(_DisableHighlightingOfNonBasicAsciiCharactersAction,"DisableHighlightingOfNonBasicAsciiCharactersAction"),_DisableHighlightingOfNonBasicAsciiCharactersAction.ID="editor.action.unicodeHighlight.disableHighlightingOfNonBasicAsciiCharacters";let DisableHighlightingOfNonBasicAsciiCharactersAction=_DisableHighlightingOfNonBasicAsciiCharactersAction;const _ShowExcludeOptions=class _ShowExcludeOptions extends EditorAction{constructor(){super({id:_ShowExcludeOptions.ID,label:localize("action.unicodeHighlight.showExcludeOptions","Show Exclude Options"),alias:"Show Exclude Options",precondition:void 0})}async run(accessor,editor2,args){const{codePoint,reason,inString,inComment}=args,char=String.fromCodePoint(codePoint),quickPickService=accessor.get(IQuickInputService),configurationService=accessor.get(IConfigurationService);function getExcludeCharFromBeingHighlightedLabel(codePoint2){return InvisibleCharacters.isInvisibleCharacter(codePoint2)?localize("unicodeHighlight.excludeInvisibleCharFromBeingHighlighted","Exclude {0} (invisible character) from being highlighted",codePointToHex(codePoint2)):localize("unicodeHighlight.excludeCharFromBeingHighlighted","Exclude {0} from being highlighted",`${codePointToHex(codePoint2)} "${char}"`)}__name(getExcludeCharFromBeingHighlightedLabel,"getExcludeCharFromBeingHighlightedLabel");const options=[];if(reason.kind===0)for(const locale of reason.notAmbiguousInLocales)options.push({label:localize("unicodeHighlight.allowCommonCharactersInLanguage",'Allow unicode characters that are more common in the language "{0}".',locale),run:__name(async()=>{excludeLocaleFromBeingHighlighted(configurationService,[locale])},"run")});if(options.push({label:getExcludeCharFromBeingHighlightedLabel(codePoint),run:__name(()=>excludeCharFromBeingHighlighted(configurationService,[codePoint]),"run")}),inComment){const action=new DisableHighlightingInCommentsAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(inString){const action=new DisableHighlightingInStringsAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}if(reason.kind===0){const action=new DisableHighlightingOfAmbiguousCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(reason.kind===1){const action=new DisableHighlightingOfInvisibleCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else if(reason.kind===2){const action=new DisableHighlightingOfNonBasicAsciiCharactersAction;options.push({label:action.label,run:__name(async()=>action.runAction(configurationService),"run")})}else expectNever(reason);const result=await quickPickService.pick(options,{title:configureUnicodeHighlightOptionsStr});result&&await result.run()}};__name(_ShowExcludeOptions,"ShowExcludeOptions"),_ShowExcludeOptions.ID="editor.action.unicodeHighlight.showExcludeOptions";let ShowExcludeOptions=_ShowExcludeOptions;async function excludeCharFromBeingHighlighted(configurationService,charCodes){const existingValue=configurationService.getValue(unicodeHighlightConfigKeys.allowedCharacters);let value;typeof existingValue=="object"&&existingValue?value=existingValue:value={};for(const charCode of charCodes)value[String.fromCodePoint(charCode)]=!0;await configurationService.updateValue(unicodeHighlightConfigKeys.allowedCharacters,value,2)}__name(excludeCharFromBeingHighlighted,"excludeCharFromBeingHighlighted");async function excludeLocaleFromBeingHighlighted(configurationService,locales){var _a3;const existingValue=(_a3=configurationService.inspect(unicodeHighlightConfigKeys.allowedLocales).user)==null?void 0:_a3.value;let value;typeof existingValue=="object"&&existingValue?value=Object.assign({},existingValue):value={};for(const locale of locales)value[locale]=!0;await configurationService.updateValue(unicodeHighlightConfigKeys.allowedLocales,value,2)}__name(excludeLocaleFromBeingHighlighted,"excludeLocaleFromBeingHighlighted");function expectNever(value){throw new Error(`Unexpected value: ${value}`)}__name(expectNever,"expectNever"),registerEditorAction(DisableHighlightingOfAmbiguousCharactersAction),registerEditorAction(DisableHighlightingOfInvisibleCharactersAction),registerEditorAction(DisableHighlightingOfNonBasicAsciiCharactersAction),registerEditorAction(ShowExcludeOptions),registerEditorContribution(UnicodeHighlighter.ID,UnicodeHighlighter,1),HoverParticipantRegistry.register(UnicodeHighlighterHoverParticipant);var __decorate$b=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$b=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const ignoreUnusualLineTerminators="ignoreUnusualLineTerminators";function writeIgnoreState(codeEditorService,model,state){codeEditorService.setModelProperty(model.uri,ignoreUnusualLineTerminators,state)}__name(writeIgnoreState,"writeIgnoreState");function readIgnoreState(codeEditorService,model){return codeEditorService.getModelProperty(model.uri,ignoreUnusualLineTerminators)}__name(readIgnoreState,"readIgnoreState");let UnusualLineTerminatorsDetector=(_te=class extends Disposable{constructor(_editor,_dialogService,_codeEditorService){super(),this._editor=_editor,this._dialogService=_dialogService,this._codeEditorService=_codeEditorService,this._isPresentingDialog=!1,this._config=this._editor.getOption(127),this._register(this._editor.onDidChangeConfiguration(e=>{e.hasChanged(127)&&(this._config=this._editor.getOption(127),this._checkForUnusualLineTerminators())})),this._register(this._editor.onDidChangeModel(()=>{this._checkForUnusualLineTerminators()})),this._register(this._editor.onDidChangeModelContent(e=>{e.isUndoing||this._checkForUnusualLineTerminators()})),this._checkForUnusualLineTerminators()}async _checkForUnusualLineTerminators(){if(this._config==="off"||!this._editor.hasModel())return;const model=this._editor.getModel();if(!model.mightContainUnusualLineTerminators()||readIgnoreState(this._codeEditorService,model)===!0||this._editor.getOption(92))return;if(this._config==="auto"){model.removeUnusualLineTerminators(this._editor.getSelections());return}if(this._isPresentingDialog)return;let result;try{this._isPresentingDialog=!0,result=await this._dialogService.confirm({title:localize("unusualLineTerminators.title","Unusual Line Terminators"),message:localize("unusualLineTerminators.message","Detected unusual line terminators"),detail:localize("unusualLineTerminators.detail","The file '{0}' contains one or more unusual line terminator characters, like Line Separator (LS) or Paragraph Separator (PS).\n\nIt is recommended to remove them from the file. This can be configured via `editor.unusualLineTerminators`.",basename(model.uri)),primaryButton:localize({key:"unusualLineTerminators.fix",comment:["&& denotes a mnemonic"]},"&&Remove Unusual Line Terminators"),cancelButton:localize("unusualLineTerminators.ignore","Ignore")})}finally{this._isPresentingDialog=!1}if(!result.confirmed){writeIgnoreState(this._codeEditorService,model,!0);return}model.removeUnusualLineTerminators(this._editor.getSelections())}},__name(_te,"UnusualLineTerminatorsDetector"),_te.ID="editor.contrib.unusualLineTerminatorsDetector",_te);UnusualLineTerminatorsDetector=__decorate$b([__param$b(1,IDialogService),__param$b(2,ICodeEditorService)],UnusualLineTerminatorsDetector),registerEditorContribution(UnusualLineTerminatorsDetector.ID,UnusualLineTerminatorsDetector,1);var __decorate$a=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$a=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};const _TextualDocumentHighlightProvider=class _TextualDocumentHighlightProvider{constructor(){this.selector={language:"*"}}provideDocumentHighlights(model,position,token){const result=[],word=model.getWordAtPosition({lineNumber:position.lineNumber,column:position.column});return word?model.isDisposed()?void 0:model.findMatches(word.word,!0,!1,!0,USUAL_WORD_SEPARATORS,!1).map(m2=>({range:m2.range,kind:DocumentHighlightKind$4.Text})):Promise.resolve(result)}provideMultiDocumentHighlights(primaryModel,position,otherModels,token){const result=new ResourceMap,word=primaryModel.getWordAtPosition({lineNumber:position.lineNumber,column:position.column});if(!word)return Promise.resolve(result);for(const model of[primaryModel,...otherModels]){if(model.isDisposed())continue;const highlights=model.findMatches(word.word,!0,!1,!0,USUAL_WORD_SEPARATORS,!1).map(m2=>({range:m2.range,kind:DocumentHighlightKind$4.Text}));highlights&&result.set(model.uri,highlights)}return result}};__name(_TextualDocumentHighlightProvider,"TextualDocumentHighlightProvider");let TextualDocumentHighlightProvider=_TextualDocumentHighlightProvider,TextualMultiDocumentHighlightFeature=(_ue=class extends Disposable{constructor(languageFeaturesService){super(),this._register(languageFeaturesService.documentHighlightProvider.register("*",new TextualDocumentHighlightProvider)),this._register(languageFeaturesService.multiDocumentHighlightProvider.register("*",new TextualDocumentHighlightProvider))}},__name(_ue,"TextualMultiDocumentHighlightFeature"),_ue);TextualMultiDocumentHighlightFeature=__decorate$a([__param$a(0,ILanguageFeaturesService)],TextualMultiDocumentHighlightFeature);var __decorate$9=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$9=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},WordHighlighter_1,WordHighlighterContribution_1;const ctxHasWordHighlights=new RawContextKey("hasWordHighlights",!1);function getOccurrencesAtPosition(registry,model,position,token){const orderedByScore=registry.ordered(model);return first(orderedByScore.map(provider=>()=>Promise.resolve(provider.provideDocumentHighlights(model,position,token)).then(void 0,onUnexpectedExternalError)),result=>result!=null).then(result=>{if(result){const map=new ResourceMap;return map.set(model.uri,result),map}return new ResourceMap})}__name(getOccurrencesAtPosition,"getOccurrencesAtPosition");function getOccurrencesAcrossMultipleModels(registry,model,position,wordSeparators2,token,otherModels){const orderedByScore=registry.ordered(model);return first(orderedByScore.map(provider=>()=>{const filteredModels=otherModels.filter(otherModel=>shouldSynchronizeModel(otherModel)).filter(otherModel=>score(provider.selector,otherModel.uri,otherModel.getLanguageId(),!0,void 0,void 0)>0);return Promise.resolve(provider.provideMultiDocumentHighlights(model,position,filteredModels,token)).then(void 0,onUnexpectedExternalError)}),result=>result!=null)}__name(getOccurrencesAcrossMultipleModels,"getOccurrencesAcrossMultipleModels");const _OccurenceAtPositionRequest=class _OccurenceAtPositionRequest{constructor(_model,_selection,_wordSeparators){this._model=_model,this._selection=_selection,this._wordSeparators=_wordSeparators,this._wordRange=this._getCurrentWordRange(_model,_selection),this._result=null}get result(){return this._result||(this._result=createCancelablePromise(token=>this._compute(this._model,this._selection,this._wordSeparators,token))),this._result}_getCurrentWordRange(model,selection){const word=model.getWordAtPosition(selection.getPosition());return word?new Range$5(selection.startLineNumber,word.startColumn,selection.startLineNumber,word.endColumn):null}isValid(model,selection,decorations){const lineNumber=selection.startLineNumber,startColumn=selection.startColumn,endColumn=selection.endColumn,currentWordRange=this._getCurrentWordRange(model,selection);let requestIsValid=!!(this._wordRange&&this._wordRange.equalsRange(currentWordRange));for(let i=0,len=decorations.length;!requestIsValid&&i<len;i++){const range2=decorations.getRange(i);range2&&range2.startLineNumber===lineNumber&&range2.startColumn<=startColumn&&range2.endColumn>=endColumn&&(requestIsValid=!0)}return requestIsValid}cancel(){this.result.cancel()}};__name(_OccurenceAtPositionRequest,"OccurenceAtPositionRequest");let OccurenceAtPositionRequest=_OccurenceAtPositionRequest;const _SemanticOccurenceAtPositionRequest=class _SemanticOccurenceAtPositionRequest extends OccurenceAtPositionRequest{constructor(model,selection,wordSeparators2,providers){super(model,selection,wordSeparators2),this._providers=providers}_compute(model,selection,wordSeparators2,token){return getOccurrencesAtPosition(this._providers,model,selection.getPosition(),token).then(value=>value||new ResourceMap)}};__name(_SemanticOccurenceAtPositionRequest,"SemanticOccurenceAtPositionRequest");let SemanticOccurenceAtPositionRequest=_SemanticOccurenceAtPositionRequest;const _MultiModelOccurenceRequest=class _MultiModelOccurenceRequest extends OccurenceAtPositionRequest{constructor(model,selection,wordSeparators2,providers,otherModels){super(model,selection,wordSeparators2),this._providers=providers,this._otherModels=otherModels}_compute(model,selection,wordSeparators2,token){return getOccurrencesAcrossMultipleModels(this._providers,model,selection.getPosition(),wordSeparators2,token,this._otherModels).then(value=>value||new ResourceMap)}};__name(_MultiModelOccurenceRequest,"MultiModelOccurenceRequest");let MultiModelOccurenceRequest=_MultiModelOccurenceRequest;function computeOccurencesAtPosition(registry,model,selection,word,wordSeparators2){return new SemanticOccurenceAtPositionRequest(model,selection,wordSeparators2,registry)}__name(computeOccurencesAtPosition,"computeOccurencesAtPosition");function computeOccurencesMultiModel(registry,model,selection,word,wordSeparators2,otherModels){return new MultiModelOccurenceRequest(model,selection,wordSeparators2,registry,otherModels)}__name(computeOccurencesMultiModel,"computeOccurencesMultiModel"),registerModelAndPositionCommand("_executeDocumentHighlights",async(accessor,model,position)=>{const languageFeaturesService=accessor.get(ILanguageFeaturesService),map=await getOccurrencesAtPosition(languageFeaturesService.documentHighlightProvider,model,position,CancellationToken.None);return map==null?void 0:map.get(model.uri)});let WordHighlighter=(_ve=class{constructor(editor2,providers,multiProviders,contextKeyService,codeEditorService){this.toUnhook=new DisposableStore,this.workerRequestTokenId=0,this.workerRequestCompleted=!1,this.workerRequestValue=new ResourceMap,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,this.runDelayer=this.toUnhook.add(new Delayer(50)),this.editor=editor2,this.providers=providers,this.multiDocumentProviders=multiProviders,this.codeEditorService=codeEditorService,this._hasWordHighlights=ctxHasWordHighlights.bindTo(contextKeyService),this._ignorePositionChangeEvent=!1,this.occurrencesHighlight=this.editor.getOption(81),this.model=this.editor.getModel(),this.toUnhook.add(editor2.onDidChangeCursorPosition(e=>{this._ignorePositionChangeEvent||this.occurrencesHighlight!=="off"&&this.runDelayer.trigger(()=>{this._onPositionChanged(e)})})),this.toUnhook.add(editor2.onDidFocusEditorText(e=>{this.occurrencesHighlight!=="off"&&(this.workerRequest||this.runDelayer.trigger(()=>{this._run()}))})),this.toUnhook.add(editor2.onDidChangeModelContent(e=>{matchesScheme(this.model.uri,"output")||this._stopAll()})),this.toUnhook.add(editor2.onDidChangeModel(e=>{!e.newModelUrl&&e.oldModelUrl?this._stopSingular():WordHighlighter_1.query&&this._run()})),this.toUnhook.add(editor2.onDidChangeConfiguration(e=>{var _a3,_b3;const newValue=this.editor.getOption(81);if(this.occurrencesHighlight!==newValue)switch(this.occurrencesHighlight=newValue,newValue){case"off":this._stopAll();break;case"singleFile":this._stopAll((_b3=(_a3=WordHighlighter_1.query)==null?void 0:_a3.modelInfo)==null?void 0:_b3.model);break;case"multiFile":WordHighlighter_1.query&&this._run(!0);break;default:console.warn("Unknown occurrencesHighlight setting value:",newValue);break}})),this.decorations=this.editor.createDecorationsCollection(),this.workerRequestTokenId=0,this.workerRequest=null,this.workerRequestCompleted=!1,this.lastCursorPositionChangeTime=0,this.renderDecorationsTimer=-1,WordHighlighter_1.query&&this._run()}hasDecorations(){return this.decorations.length>0}restore(){this.occurrencesHighlight!=="off"&&(this.runDelayer.cancel(),this._run())}_getSortedHighlights(){return this.decorations.getRanges().sort(Range$5.compareRangesUsingStarts)}moveNext(){const highlights=this._getSortedHighlights(),newIndex=(highlights.findIndex(range2=>range2.containsPosition(this.editor.getPosition()))+1)%highlights.length,dest=highlights[newIndex];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(dest.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(dest);const word=this._getWord();if(word){const lineContent=this.editor.getModel().getLineContent(dest.startLineNumber);alert(`${lineContent}, ${newIndex+1} of ${highlights.length} for '${word.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}moveBack(){const highlights=this._getSortedHighlights(),newIndex=(highlights.findIndex(range2=>range2.containsPosition(this.editor.getPosition()))-1+highlights.length)%highlights.length,dest=highlights[newIndex];try{this._ignorePositionChangeEvent=!0,this.editor.setPosition(dest.getStartPosition()),this.editor.revealRangeInCenterIfOutsideViewport(dest);const word=this._getWord();if(word){const lineContent=this.editor.getModel().getLineContent(dest.startLineNumber);alert(`${lineContent}, ${newIndex+1} of ${highlights.length} for '${word.word}'`)}}finally{this._ignorePositionChangeEvent=!1}}_removeSingleDecorations(){if(!this.editor.hasModel())return;const currentDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(this.editor.getModel().uri);currentDecorationIDs&&(this.editor.removeDecorations(currentDecorationIDs),WordHighlighter_1.storedDecorationIDs.delete(this.editor.getModel().uri),this.decorations.length>0&&(this.decorations.clear(),this._hasWordHighlights.set(!1)))}_removeAllDecorations(preservedModel){const currentEditors=this.codeEditorService.listCodeEditors(),deleteURI=[];for(const editor2 of currentEditors){if(!editor2.hasModel()||isEqual(editor2.getModel().uri,preservedModel==null?void 0:preservedModel.uri))continue;const currentDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(editor2.getModel().uri);if(!currentDecorationIDs)continue;editor2.removeDecorations(currentDecorationIDs),deleteURI.push(editor2.getModel().uri);const editorHighlighterContrib=WordHighlighterContribution.get(editor2);editorHighlighterContrib!=null&&editorHighlighterContrib.wordHighlighter&&editorHighlighterContrib.wordHighlighter.decorations.length>0&&(editorHighlighterContrib.wordHighlighter.decorations.clear(),editorHighlighterContrib.wordHighlighter.workerRequest=null,editorHighlighterContrib.wordHighlighter._hasWordHighlights.set(!1))}for(const uri of deleteURI)WordHighlighter_1.storedDecorationIDs.delete(uri)}_stopSingular(){var _a3,_b3,_c2,_d2;this._removeSingleDecorations(),this.editor.hasTextFocus()&&(((_a3=this.editor.getModel())==null?void 0:_a3.uri.scheme)!==Schemas.vscodeNotebookCell&&((_c2=(_b3=WordHighlighter_1.query)==null?void 0:_b3.modelInfo)==null?void 0:_c2.model.uri.scheme)!==Schemas.vscodeNotebookCell?(WordHighlighter_1.query=null,this._run()):(_d2=WordHighlighter_1.query)!=null&&_d2.modelInfo&&(WordHighlighter_1.query.modelInfo=null)),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_stopAll(preservedModel){this._removeAllDecorations(preservedModel),this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1),this.workerRequest!==null&&(this.workerRequest.cancel(),this.workerRequest=null),this.workerRequestCompleted||(this.workerRequestTokenId++,this.workerRequestCompleted=!0)}_onPositionChanged(e){var _a3;if(this.occurrencesHighlight==="off"){this._stopAll();return}if(e.reason!==3&&((_a3=this.editor.getModel())==null?void 0:_a3.uri.scheme)!==Schemas.vscodeNotebookCell){this._stopAll();return}this._run()}_getWord(){const editorSelection=this.editor.getSelection(),lineNumber=editorSelection.startLineNumber,startColumn=editorSelection.startColumn;return this.model.isDisposed()?null:this.model.getWordAtPosition({lineNumber,column:startColumn})}getOtherModelsToHighlight(model){if(!model)return[];if(model.uri.scheme===Schemas.vscodeNotebookCell){const currentModels2=[],currentEditors2=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors2){const tempModel=editor2.getModel();tempModel&&tempModel!==model&&tempModel.uri.scheme===Schemas.vscodeNotebookCell&&currentModels2.push(tempModel)}return currentModels2}const currentModels=[],currentEditors=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors){if(!isDiffEditor(editor2))continue;const diffModel=editor2.getModel();diffModel&&model===diffModel.modified&&currentModels.push(diffModel.modified)}if(currentModels.length)return currentModels;if(this.occurrencesHighlight==="singleFile")return[];for(const editor2 of currentEditors){const tempModel=editor2.getModel();tempModel&&tempModel!==model&&currentModels.push(tempModel)}return currentModels}_run(multiFileConfigChange){var _a3,_b3;let workerRequestIsValid;if(this.editor.hasTextFocus()){const editorSelection=this.editor.getSelection();if(!editorSelection||editorSelection.startLineNumber!==editorSelection.endLineNumber){WordHighlighter_1.query=null,this._stopAll();return}const startColumn=editorSelection.startColumn,endColumn=editorSelection.endColumn,word=this._getWord();if(!word||word.startColumn>startColumn||word.endColumn<endColumn){WordHighlighter_1.query=null,this._stopAll();return}workerRequestIsValid=this.workerRequest&&this.workerRequest.isValid(this.model,editorSelection,this.decorations),WordHighlighter_1.query={modelInfo:{model:this.model,selection:editorSelection},word}}else if(!WordHighlighter_1.query){this._stopAll();return}if(this.lastCursorPositionChangeTime=new Date().getTime(),workerRequestIsValid)this.workerRequestCompleted&&this.renderDecorationsTimer!==-1&&(clearTimeout(this.renderDecorationsTimer),this.renderDecorationsTimer=-1,this._beginRenderDecorations());else if(isEqual(this.editor.getModel().uri,(_a3=WordHighlighter_1.query.modelInfo)==null?void 0:_a3.model.uri)){if(!multiFileConfigChange){const currentModelDecorationRanges=this.decorations.getRanges();for(const storedRange of currentModelDecorationRanges)if(storedRange.containsPosition(this.editor.getPosition()))return}this._stopAll(multiFileConfigChange?this.model:void 0);const myRequestId=++this.workerRequestTokenId;this.workerRequestCompleted=!1;const otherModelsToHighlight=this.getOtherModelsToHighlight(this.editor.getModel());if(!WordHighlighter_1.query||!WordHighlighter_1.query.modelInfo||WordHighlighter_1.query.modelInfo.model.isDisposed())return;this.workerRequest=this.computeWithModel(WordHighlighter_1.query.modelInfo.model,WordHighlighter_1.query.modelInfo.selection,WordHighlighter_1.query.word,otherModelsToHighlight),(_b3=this.workerRequest)==null||_b3.result.then(data=>{myRequestId===this.workerRequestTokenId&&(this.workerRequestCompleted=!0,this.workerRequestValue=data||[],this._beginRenderDecorations())},onUnexpectedError)}}computeWithModel(model,selection,word,otherModels){return otherModels.length?computeOccurencesMultiModel(this.multiDocumentProviders,model,selection,word,this.editor.getOption(132),otherModels):computeOccurencesAtPosition(this.providers,model,selection,word,this.editor.getOption(132))}_beginRenderDecorations(){const currentTime=new Date().getTime(),minimumRenderTime=this.lastCursorPositionChangeTime+250;currentTime>=minimumRenderTime?(this.renderDecorationsTimer=-1,this.renderDecorations()):this.renderDecorationsTimer=setTimeout(()=>{this.renderDecorations()},minimumRenderTime-currentTime)}renderDecorations(){var _a3,_b3,_c2;this.renderDecorationsTimer=-1;const currentEditors=this.codeEditorService.listCodeEditors();for(const editor2 of currentEditors){const editorHighlighterContrib=WordHighlighterContribution.get(editor2);if(!editorHighlighterContrib)continue;const newDecorations=[],uri=(_a3=editor2.getModel())==null?void 0:_a3.uri;if(uri&&this.workerRequestValue.has(uri)){const oldDecorationIDs=WordHighlighter_1.storedDecorationIDs.get(uri),newDocumentHighlights=this.workerRequestValue.get(uri);if(newDocumentHighlights)for(const highlight of newDocumentHighlights)highlight.range&&newDecorations.push({range:highlight.range,options:getHighlightDecorationOptions(highlight.kind)});let newDecorationIDs=[];editor2.changeDecorations(changeAccessor=>{newDecorationIDs=changeAccessor.deltaDecorations(oldDecorationIDs!=null?oldDecorationIDs:[],newDecorations)}),WordHighlighter_1.storedDecorationIDs=WordHighlighter_1.storedDecorationIDs.set(uri,newDecorationIDs),newDecorations.length>0&&((_b3=editorHighlighterContrib.wordHighlighter)==null||_b3.decorations.set(newDecorations),(_c2=editorHighlighterContrib.wordHighlighter)==null||_c2._hasWordHighlights.set(!0))}}}dispose(){this._stopSingular(),this.toUnhook.dispose()}},__name(_ve,"WordHighlighter"),WordHighlighter_1=_ve,_ve.storedDecorationIDs=new ResourceMap,_ve.query=null,_ve);WordHighlighter=WordHighlighter_1=__decorate$9([__param$9(4,ICodeEditorService)],WordHighlighter);let WordHighlighterContribution=(_we=class extends Disposable{static get(editor2){return editor2.getContribution(WordHighlighterContribution_1.ID)}constructor(editor2,contextKeyService,languageFeaturesService,codeEditorService){super(),this._wordHighlighter=null;const createWordHighlighterIfPossible=__name(()=>{editor2.hasModel()&&!editor2.getModel().isTooLargeForTokenization()&&(this._wordHighlighter=new WordHighlighter(editor2,languageFeaturesService.documentHighlightProvider,languageFeaturesService.multiDocumentHighlightProvider,contextKeyService,codeEditorService))},"createWordHighlighterIfPossible");this._register(editor2.onDidChangeModel(e=>{this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),createWordHighlighterIfPossible()})),createWordHighlighterIfPossible()}get wordHighlighter(){return this._wordHighlighter}saveViewState(){return!!(this._wordHighlighter&&this._wordHighlighter.hasDecorations())}moveNext(){var _a3;(_a3=this._wordHighlighter)==null||_a3.moveNext()}moveBack(){var _a3;(_a3=this._wordHighlighter)==null||_a3.moveBack()}restoreViewState(state){this._wordHighlighter&&state&&this._wordHighlighter.restore()}dispose(){this._wordHighlighter&&(this._wordHighlighter.dispose(),this._wordHighlighter=null),super.dispose()}},__name(_we,"WordHighlighterContribution"),WordHighlighterContribution_1=_we,_we.ID="editor.contrib.wordHighlighter",_we);WordHighlighterContribution=WordHighlighterContribution_1=__decorate$9([__param$9(1,IContextKeyService),__param$9(2,ILanguageFeaturesService),__param$9(3,ICodeEditorService)],WordHighlighterContribution);const _WordHighlightNavigationAction=class _WordHighlightNavigationAction extends EditorAction{constructor(next,opts){super(opts),this._isNext=next}run(accessor,editor2){const controller=WordHighlighterContribution.get(editor2);controller&&(this._isNext?controller.moveNext():controller.moveBack())}};__name(_WordHighlightNavigationAction,"WordHighlightNavigationAction");let WordHighlightNavigationAction=_WordHighlightNavigationAction;const _NextWordHighlightAction=class _NextWordHighlightAction extends WordHighlightNavigationAction{constructor(){super(!0,{id:"editor.action.wordHighlight.next",label:localize("wordHighlight.next.label","Go to Next Symbol Highlight"),alias:"Go to Next Symbol Highlight",precondition:ctxHasWordHighlights,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:65,weight:100}})}};__name(_NextWordHighlightAction,"NextWordHighlightAction");let NextWordHighlightAction=_NextWordHighlightAction;const _PrevWordHighlightAction=class _PrevWordHighlightAction extends WordHighlightNavigationAction{constructor(){super(!1,{id:"editor.action.wordHighlight.prev",label:localize("wordHighlight.previous.label","Go to Previous Symbol Highlight"),alias:"Go to Previous Symbol Highlight",precondition:ctxHasWordHighlights,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:1089,weight:100}})}};__name(_PrevWordHighlightAction,"PrevWordHighlightAction");let PrevWordHighlightAction=_PrevWordHighlightAction;const _TriggerWordHighlightAction=class _TriggerWordHighlightAction extends EditorAction{constructor(){super({id:"editor.action.wordHighlight.trigger",label:localize("wordHighlight.trigger.label","Trigger Symbol Highlight"),alias:"Trigger Symbol Highlight",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.editorTextFocus,primary:0,weight:100}})}run(accessor,editor2,args){const controller=WordHighlighterContribution.get(editor2);controller&&controller.restoreViewState(!0)}};__name(_TriggerWordHighlightAction,"TriggerWordHighlightAction");let TriggerWordHighlightAction=_TriggerWordHighlightAction;registerEditorContribution(WordHighlighterContribution.ID,WordHighlighterContribution,0),registerEditorAction(NextWordHighlightAction),registerEditorAction(PrevWordHighlightAction),registerEditorAction(TriggerWordHighlightAction),registerEditorFeature(TextualMultiDocumentHighlightFeature);const _MoveWordCommand=class _MoveWordCommand extends EditorCommand{constructor(opts){super(opts),this._inSelectionMode=opts.inSelectionMode,this._wordNavigationType=opts.wordNavigationType}runEditorCommand(accessor,editor2,args){if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),selections=editor2.getSelections(),hasMulticursor=selections.length>1,result=selections.map(sel=>{const inPosition=new Position$4(sel.positionLineNumber,sel.positionColumn),outPosition=this._move(wordSeparators2,model,inPosition,this._wordNavigationType,hasMulticursor);return this._moveTo(sel,outPosition,this._inSelectionMode)});if(model.pushStackElement(),editor2._getViewModel().setCursorStates("moveWordCommand",3,result.map(r2=>CursorState$1.fromModelSelection(r2))),result.length===1){const pos=new Position$4(result[0].positionLineNumber,result[0].positionColumn);editor2.revealPosition(pos,0)}}_moveTo(from,to,inSelectionMode){return inSelectionMode?new Selection$1(from.selectionStartLineNumber,from.selectionStartColumn,to.lineNumber,to.column):new Selection$1(to.lineNumber,to.column,to.lineNumber,to.column)}};__name(_MoveWordCommand,"MoveWordCommand");let MoveWordCommand=_MoveWordCommand;const _WordLeftCommand=class _WordLeftCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordOperations.moveWordLeft(wordSeparators2,model,position,wordNavigationType,hasMulticursor)}};__name(_WordLeftCommand,"WordLeftCommand");let WordLeftCommand=_WordLeftCommand;const _WordRightCommand=class _WordRightCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordOperations.moveWordRight(wordSeparators2,model,position,wordNavigationType)}};__name(_WordRightCommand,"WordRightCommand");let WordRightCommand=_WordRightCommand;const _CursorWordStartLeft=class _CursorWordStartLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartLeft",precondition:void 0})}};__name(_CursorWordStartLeft,"CursorWordStartLeft");let CursorWordStartLeft=_CursorWordStartLeft;const _CursorWordEndLeft=class _CursorWordEndLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndLeft",precondition:void 0})}};__name(_CursorWordEndLeft,"CursorWordEndLeft");let CursorWordEndLeft=_CursorWordEndLeft;const _CursorWordLeft=class _CursorWordLeft extends WordLeftCommand{constructor(){var _a3;super({inSelectionMode:!1,wordNavigationType:1,id:"cursorWordLeft",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:2063,mac:{primary:527},weight:100}})}};__name(_CursorWordLeft,"CursorWordLeft");let CursorWordLeft=_CursorWordLeft;const _CursorWordStartLeftSelect=class _CursorWordStartLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartLeftSelect",precondition:void 0})}};__name(_CursorWordStartLeftSelect,"CursorWordStartLeftSelect");let CursorWordStartLeftSelect=_CursorWordStartLeftSelect;const _CursorWordEndLeftSelect=class _CursorWordEndLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndLeftSelect",precondition:void 0})}};__name(_CursorWordEndLeftSelect,"CursorWordEndLeftSelect");let CursorWordEndLeftSelect=_CursorWordEndLeftSelect;const _CursorWordLeftSelect=class _CursorWordLeftSelect extends WordLeftCommand{constructor(){var _a3;super({inSelectionMode:!0,wordNavigationType:1,id:"cursorWordLeftSelect",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:3087,mac:{primary:1551},weight:100}})}};__name(_CursorWordLeftSelect,"CursorWordLeftSelect");let CursorWordLeftSelect=_CursorWordLeftSelect;const _CursorWordAccessibilityLeft=class _CursorWordAccessibilityLeft extends WordLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityLeft",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityLeft,"CursorWordAccessibilityLeft");let CursorWordAccessibilityLeft=_CursorWordAccessibilityLeft;const _CursorWordAccessibilityLeftSelect=class _CursorWordAccessibilityLeftSelect extends WordLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityLeftSelect",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityLeftSelect,"CursorWordAccessibilityLeftSelect");let CursorWordAccessibilityLeftSelect=_CursorWordAccessibilityLeftSelect;const _CursorWordStartRight=class _CursorWordStartRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordStartRight",precondition:void 0})}};__name(_CursorWordStartRight,"CursorWordStartRight");let CursorWordStartRight=_CursorWordStartRight;const _CursorWordEndRight=class _CursorWordEndRight extends WordRightCommand{constructor(){var _a3;super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordEndRight",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:2065,mac:{primary:529},weight:100}})}};__name(_CursorWordEndRight,"CursorWordEndRight");let CursorWordEndRight=_CursorWordEndRight;const _CursorWordRight=class _CursorWordRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordRight",precondition:void 0})}};__name(_CursorWordRight,"CursorWordRight");let CursorWordRight=_CursorWordRight;const _CursorWordStartRightSelect=class _CursorWordStartRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordStartRightSelect",precondition:void 0})}};__name(_CursorWordStartRightSelect,"CursorWordStartRightSelect");let CursorWordStartRightSelect=_CursorWordStartRightSelect;const _CursorWordEndRightSelect=class _CursorWordEndRightSelect extends WordRightCommand{constructor(){var _a3;super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordEndRightSelect",precondition:void 0,kbOpts:{kbExpr:ContextKeyExpr.and(EditorContextKeys.textInputFocus,(_a3=ContextKeyExpr.and(CONTEXT_ACCESSIBILITY_MODE_ENABLED,IsWindowsContext))==null?void 0:_a3.negate()),primary:3089,mac:{primary:1553},weight:100}})}};__name(_CursorWordEndRightSelect,"CursorWordEndRightSelect");let CursorWordEndRightSelect=_CursorWordEndRightSelect;const _CursorWordRightSelect=class _CursorWordRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordRightSelect",precondition:void 0})}};__name(_CursorWordRightSelect,"CursorWordRightSelect");let CursorWordRightSelect=_CursorWordRightSelect;const _CursorWordAccessibilityRight=class _CursorWordAccessibilityRight extends WordRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:3,id:"cursorWordAccessibilityRight",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityRight,"CursorWordAccessibilityRight");let CursorWordAccessibilityRight=_CursorWordAccessibilityRight;const _CursorWordAccessibilityRightSelect=class _CursorWordAccessibilityRightSelect extends WordRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:3,id:"cursorWordAccessibilityRightSelect",precondition:void 0})}_move(wordCharacterClassifier,model,position,wordNavigationType,hasMulticursor){return super._move(getMapForWordSeparators(EditorOptions.wordSeparators.defaultValue,wordCharacterClassifier.intlSegmenterLocales),model,position,wordNavigationType,hasMulticursor)}};__name(_CursorWordAccessibilityRightSelect,"CursorWordAccessibilityRightSelect");let CursorWordAccessibilityRightSelect=_CursorWordAccessibilityRightSelect;const _DeleteWordCommand=class _DeleteWordCommand extends EditorCommand{constructor(opts){super(opts),this._whitespaceHeuristics=opts.whitespaceHeuristics,this._wordNavigationType=opts.wordNavigationType}runEditorCommand(accessor,editor2,args){const languageConfigurationService=accessor.get(ILanguageConfigurationService);if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),selections=editor2.getSelections(),autoClosingBrackets=editor2.getOption(6),autoClosingQuotes=editor2.getOption(11),autoClosingPairs=languageConfigurationService.getLanguageConfiguration(model.getLanguageId()).getAutoClosingPairs(),viewModel=editor2._getViewModel(),commands=selections.map(sel=>{const deleteRange=this._delete({wordSeparators:wordSeparators2,model,selection:sel,whitespaceHeuristics:this._whitespaceHeuristics,autoClosingDelete:editor2.getOption(9),autoClosingBrackets,autoClosingQuotes,autoClosingPairs,autoClosedCharacters:viewModel.getCursorAutoClosedCharacters()},this._wordNavigationType);return new ReplaceCommand(deleteRange,"")});editor2.pushUndoStop(),editor2.executeCommands(this.id,commands),editor2.pushUndoStop()}};__name(_DeleteWordCommand,"DeleteWordCommand");let DeleteWordCommand=_DeleteWordCommand;const _DeleteWordLeftCommand=class _DeleteWordLeftCommand extends DeleteWordCommand{_delete(ctx,wordNavigationType){const r2=WordOperations.deleteWordLeft(ctx,wordNavigationType);return r2||new Range$5(1,1,1,1)}};__name(_DeleteWordLeftCommand,"DeleteWordLeftCommand");let DeleteWordLeftCommand=_DeleteWordLeftCommand;const _DeleteWordRightCommand=class _DeleteWordRightCommand extends DeleteWordCommand{_delete(ctx,wordNavigationType){const r2=WordOperations.deleteWordRight(ctx,wordNavigationType);if(r2)return r2;const lineCount=ctx.model.getLineCount(),maxColumn=ctx.model.getLineMaxColumn(lineCount);return new Range$5(lineCount,maxColumn,lineCount,maxColumn)}};__name(_DeleteWordRightCommand,"DeleteWordRightCommand");let DeleteWordRightCommand=_DeleteWordRightCommand;const _DeleteWordStartLeft=class _DeleteWordStartLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartLeft",precondition:EditorContextKeys.writable})}};__name(_DeleteWordStartLeft,"DeleteWordStartLeft");let DeleteWordStartLeft=_DeleteWordStartLeft;const _DeleteWordEndLeft=class _DeleteWordEndLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndLeft",precondition:EditorContextKeys.writable})}};__name(_DeleteWordEndLeft,"DeleteWordEndLeft");let DeleteWordEndLeft=_DeleteWordEndLeft;const _DeleteWordLeft=class _DeleteWordLeft extends DeleteWordLeftCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordLeft",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:2049,mac:{primary:513},weight:100}})}};__name(_DeleteWordLeft,"DeleteWordLeft");let DeleteWordLeft=_DeleteWordLeft;const _DeleteWordStartRight=class _DeleteWordStartRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:0,id:"deleteWordStartRight",precondition:EditorContextKeys.writable})}};__name(_DeleteWordStartRight,"DeleteWordStartRight");let DeleteWordStartRight=_DeleteWordStartRight;const _DeleteWordEndRight=class _DeleteWordEndRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!1,wordNavigationType:2,id:"deleteWordEndRight",precondition:EditorContextKeys.writable})}};__name(_DeleteWordEndRight,"DeleteWordEndRight");let DeleteWordEndRight=_DeleteWordEndRight;const _DeleteWordRight=class _DeleteWordRight extends DeleteWordRightCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordRight",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:2068,mac:{primary:532},weight:100}})}};__name(_DeleteWordRight,"DeleteWordRight");let DeleteWordRight=_DeleteWordRight;const _DeleteInsideWord=class _DeleteInsideWord extends EditorAction{constructor(){super({id:"deleteInsideWord",precondition:EditorContextKeys.writable,label:localize("deleteInsideWord","Delete Word"),alias:"Delete Word"})}run(accessor,editor2,args){if(!editor2.hasModel())return;const wordSeparators2=getMapForWordSeparators(editor2.getOption(132),editor2.getOption(131)),model=editor2.getModel(),commands=editor2.getSelections().map(sel=>{const deleteRange=WordOperations.deleteInsideWord(wordSeparators2,model,sel);return new ReplaceCommand(deleteRange,"")});editor2.pushUndoStop(),editor2.executeCommands(this.id,commands),editor2.pushUndoStop()}};__name(_DeleteInsideWord,"DeleteInsideWord");let DeleteInsideWord=_DeleteInsideWord;registerEditorCommand(new CursorWordStartLeft),registerEditorCommand(new CursorWordEndLeft),registerEditorCommand(new CursorWordLeft),registerEditorCommand(new CursorWordStartLeftSelect),registerEditorCommand(new CursorWordEndLeftSelect),registerEditorCommand(new CursorWordLeftSelect),registerEditorCommand(new CursorWordStartRight),registerEditorCommand(new CursorWordEndRight),registerEditorCommand(new CursorWordRight),registerEditorCommand(new CursorWordStartRightSelect),registerEditorCommand(new CursorWordEndRightSelect),registerEditorCommand(new CursorWordRightSelect),registerEditorCommand(new CursorWordAccessibilityLeft),registerEditorCommand(new CursorWordAccessibilityLeftSelect),registerEditorCommand(new CursorWordAccessibilityRight),registerEditorCommand(new CursorWordAccessibilityRightSelect),registerEditorCommand(new DeleteWordStartLeft),registerEditorCommand(new DeleteWordEndLeft),registerEditorCommand(new DeleteWordLeft),registerEditorCommand(new DeleteWordStartRight),registerEditorCommand(new DeleteWordEndRight),registerEditorCommand(new DeleteWordRight),registerEditorAction(DeleteInsideWord);const _DeleteWordPartLeft=class _DeleteWordPartLeft extends DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:0,id:"deleteWordPartLeft",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:769},weight:100}})}_delete(ctx,wordNavigationType){const r2=WordPartOperations.deleteWordPartLeft(ctx);return r2||new Range$5(1,1,1,1)}};__name(_DeleteWordPartLeft,"DeleteWordPartLeft");let DeleteWordPartLeft=_DeleteWordPartLeft;const _DeleteWordPartRight=class _DeleteWordPartRight extends DeleteWordCommand{constructor(){super({whitespaceHeuristics:!0,wordNavigationType:2,id:"deleteWordPartRight",precondition:EditorContextKeys.writable,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:788},weight:100}})}_delete(ctx,wordNavigationType){const r2=WordPartOperations.deleteWordPartRight(ctx);if(r2)return r2;const lineCount=ctx.model.getLineCount(),maxColumn=ctx.model.getLineMaxColumn(lineCount);return new Range$5(lineCount,maxColumn,lineCount,maxColumn)}};__name(_DeleteWordPartRight,"DeleteWordPartRight");let DeleteWordPartRight=_DeleteWordPartRight;const _WordPartLeftCommand=class _WordPartLeftCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordPartOperations.moveWordPartLeft(wordSeparators2,model,position,hasMulticursor)}};__name(_WordPartLeftCommand,"WordPartLeftCommand");let WordPartLeftCommand=_WordPartLeftCommand;const _CursorWordPartLeft=class _CursorWordPartLeft extends WordPartLeftCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:0,id:"cursorWordPartLeft",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:783},weight:100}})}};__name(_CursorWordPartLeft,"CursorWordPartLeft");let CursorWordPartLeft=_CursorWordPartLeft;CommandsRegistry.registerCommandAlias("cursorWordPartStartLeft","cursorWordPartLeft");const _CursorWordPartLeftSelect=class _CursorWordPartLeftSelect extends WordPartLeftCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:0,id:"cursorWordPartLeftSelect",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:1807},weight:100}})}};__name(_CursorWordPartLeftSelect,"CursorWordPartLeftSelect");let CursorWordPartLeftSelect=_CursorWordPartLeftSelect;CommandsRegistry.registerCommandAlias("cursorWordPartStartLeftSelect","cursorWordPartLeftSelect");const _WordPartRightCommand=class _WordPartRightCommand extends MoveWordCommand{_move(wordSeparators2,model,position,wordNavigationType,hasMulticursor){return WordPartOperations.moveWordPartRight(wordSeparators2,model,position)}};__name(_WordPartRightCommand,"WordPartRightCommand");let WordPartRightCommand=_WordPartRightCommand;const _CursorWordPartRight=class _CursorWordPartRight extends WordPartRightCommand{constructor(){super({inSelectionMode:!1,wordNavigationType:2,id:"cursorWordPartRight",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:785},weight:100}})}};__name(_CursorWordPartRight,"CursorWordPartRight");let CursorWordPartRight=_CursorWordPartRight;const _CursorWordPartRightSelect=class _CursorWordPartRightSelect extends WordPartRightCommand{constructor(){super({inSelectionMode:!0,wordNavigationType:2,id:"cursorWordPartRightSelect",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.textInputFocus,primary:0,mac:{primary:1809},weight:100}})}};__name(_CursorWordPartRightSelect,"CursorWordPartRightSelect");let CursorWordPartRightSelect=_CursorWordPartRightSelect;registerEditorCommand(new DeleteWordPartLeft),registerEditorCommand(new DeleteWordPartRight),registerEditorCommand(new CursorWordPartLeft),registerEditorCommand(new CursorWordPartLeftSelect),registerEditorCommand(new CursorWordPartRight),registerEditorCommand(new CursorWordPartRightSelect);const _ReadOnlyMessageController=class _ReadOnlyMessageController extends Disposable{constructor(editor2){super(),this.editor=editor2,this._register(this.editor.onDidAttemptReadOnlyEdit(()=>this._onDidAttemptReadOnlyEdit()))}_onDidAttemptReadOnlyEdit(){const messageController=MessageController.get(this.editor);if(messageController&&this.editor.hasModel()){let message=this.editor.getOptions().get(93);message||(this.editor.isSimpleWidget?message=new MarkdownString(localize("editor.simple.readonly","Cannot edit in read-only input")):message=new MarkdownString(localize("editor.readonly","Cannot edit in read-only editor"))),messageController.showMessage(message,this.editor.getPosition())}}};__name(_ReadOnlyMessageController,"ReadOnlyMessageController"),_ReadOnlyMessageController.ID="editor.contrib.readOnlyMessageController";let ReadOnlyMessageController=_ReadOnlyMessageController;registerEditorContribution(ReadOnlyMessageController.ID,ReadOnlyMessageController,2);var __decorate$8=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$8=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let DiffEditorBreadcrumbsSource=(_xe=class extends Disposable{constructor(_textModel,_languageFeaturesService,_outlineModelService){super(),this._textModel=_textModel,this._languageFeaturesService=_languageFeaturesService,this._outlineModelService=_outlineModelService,this._currentModel=observableValue(this,void 0);const documentSymbolProviderChanged=observableSignalFromEvent("documentSymbolProvider.onDidChange",this._languageFeaturesService.documentSymbolProvider.onDidChange),textModelChanged=observableSignalFromEvent("_textModel.onDidChangeContent",Event.debounce(e=>this._textModel.onDidChangeContent(e),()=>{},100));this._register(autorunWithStore(async(reader,store)=>{documentSymbolProviderChanged.read(reader),textModelChanged.read(reader);const src=store.add(new DisposableCancellationTokenSource),model=await this._outlineModelService.getOrCreate(this._textModel,src.token);store.isDisposed||this._currentModel.set(model,void 0)}))}getBreadcrumbItems(startRange,reader){const m2=this._currentModel.read(reader);if(!m2)return[];const symbols=m2.asListOfDocumentSymbols().filter(s=>startRange.contains(s.range.startLineNumber)&&!startRange.contains(s.range.endLineNumber));return symbols.sort(reverseOrder(compareBy(s=>s.range.endLineNumber-s.range.startLineNumber,numberComparator))),symbols.map(s=>({name:s.name,kind:s.kind,startLineNumber:s.range.startLineNumber}))}},__name(_xe,"DiffEditorBreadcrumbsSource"),_xe);DiffEditorBreadcrumbsSource=__decorate$8([__param$8(1,ILanguageFeaturesService),__param$8(2,IOutlineModelService)],DiffEditorBreadcrumbsSource),HideUnchangedRegionsFeature.setBreadcrumbsSourceFactory((textModel,instantiationService)=>instantiationService.createInstance(DiffEditorBreadcrumbsSource,textModel));const _IPadShowKeyboard=class _IPadShowKeyboard extends Disposable{constructor(editor2){super(),this.editor=editor2,this.widget=null,isIOS&&(this._register(editor2.onDidChangeConfiguration(()=>this.update())),this.update())}update(){const shouldHaveWidget=!this.editor.getOption(92);!this.widget&&shouldHaveWidget?this.widget=new ShowKeyboardWidget(this.editor):this.widget&&!shouldHaveWidget&&(this.widget.dispose(),this.widget=null)}dispose(){super.dispose(),this.widget&&(this.widget.dispose(),this.widget=null)}};__name(_IPadShowKeyboard,"IPadShowKeyboard"),_IPadShowKeyboard.ID="editor.contrib.iPadShowKeyboard";let IPadShowKeyboard=_IPadShowKeyboard;const _ShowKeyboardWidget=class _ShowKeyboardWidget extends Disposable{constructor(editor2){super(),this.editor=editor2,this._domNode=document.createElement("textarea"),this._domNode.className="iPadShowKeyboard",this._register(addDisposableListener(this._domNode,"touchstart",e=>{this.editor.focus()})),this._register(addDisposableListener(this._domNode,"focus",e=>{this.editor.focus()})),this.editor.addOverlayWidget(this)}dispose(){this.editor.removeOverlayWidget(this),super.dispose()}getId(){return _ShowKeyboardWidget.ID}getDomNode(){return this._domNode}getPosition(){return{preference:1}}};__name(_ShowKeyboardWidget,"ShowKeyboardWidget"),_ShowKeyboardWidget.ID="editor.contrib.ShowKeyboardWidget";let ShowKeyboardWidget=_ShowKeyboardWidget;registerEditorContribution(IPadShowKeyboard.ID,IPadShowKeyboard,3);var __decorate$7=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$7=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},InspectTokensController_1;let InspectTokensController=(_ye=class extends Disposable{static get(editor2){return editor2.getContribution(InspectTokensController_1.ID)}constructor(editor2,standaloneColorService,languageService){super(),this._editor=editor2,this._languageService=languageService,this._widget=null,this._register(this._editor.onDidChangeModel(e=>this.stop())),this._register(this._editor.onDidChangeModelLanguage(e=>this.stop())),this._register(TokenizationRegistry.onDidChange(e=>this.stop())),this._register(this._editor.onKeyUp(e=>e.keyCode===9&&this.stop()))}dispose(){this.stop(),super.dispose()}launch(){this._widget||this._editor.hasModel()&&(this._widget=new InspectTokensWidget(this._editor,this._languageService))}stop(){this._widget&&(this._widget.dispose(),this._widget=null)}},__name(_ye,"InspectTokensController"),InspectTokensController_1=_ye,_ye.ID="editor.contrib.inspectTokens",_ye);InspectTokensController=InspectTokensController_1=__decorate$7([__param$7(1,IStandaloneThemeService),__param$7(2,ILanguageService)],InspectTokensController);const _InspectTokens=class _InspectTokens extends EditorAction{constructor(){super({id:"editor.action.inspectTokens",label:InspectTokensNLS.inspectTokensAction,alias:"Developer: Inspect Tokens",precondition:void 0})}run(accessor,editor2){const controller=InspectTokensController.get(editor2);controller==null||controller.launch()}};__name(_InspectTokens,"InspectTokens");let InspectTokens=_InspectTokens;function renderTokenText(tokenText){let result="";for(let charIndex=0,len=tokenText.length;charIndex<len;charIndex++){const charCode=tokenText.charCodeAt(charIndex);switch(charCode){case 9:result+="→";break;case 32:result+="·";break;default:result+=String.fromCharCode(charCode)}}return result}__name(renderTokenText,"renderTokenText");function getSafeTokenizationSupport(languageIdCodec,languageId){const tokenizationSupport=TokenizationRegistry.get(languageId);if(tokenizationSupport)return tokenizationSupport;const encodedLanguageId=languageIdCodec.encodeLanguageId(languageId);return{getInitialState:__name(()=>NullState,"getInitialState"),tokenize:__name((line,hasEOL,state)=>nullTokenize(languageId,state),"tokenize"),tokenizeEncoded:__name((line,hasEOL,state)=>nullTokenizeEncoded(encodedLanguageId,state),"tokenizeEncoded")}}__name(getSafeTokenizationSupport,"getSafeTokenizationSupport");const _InspectTokensWidget=class _InspectTokensWidget extends Disposable{constructor(editor2,languageService){super(),this.allowEditorOverflow=!0,this._editor=editor2,this._languageService=languageService,this._model=this._editor.getModel(),this._domNode=document.createElement("div"),this._domNode.className="tokens-inspect-widget",this._tokenizationSupport=getSafeTokenizationSupport(this._languageService.languageIdCodec,this._model.getLanguageId()),this._compute(this._editor.getPosition()),this._register(this._editor.onDidChangeCursorPosition(e=>this._compute(this._editor.getPosition()))),this._editor.addContentWidget(this)}dispose(){this._editor.removeContentWidget(this),super.dispose()}getId(){return _InspectTokensWidget._ID}_compute(position){const data=this._getTokensAtLine(position.lineNumber);let token1Index=0;for(let i=data.tokens1.length-1;i>=0;i--){const t=data.tokens1[i];if(position.column-1>=t.offset){token1Index=i;break}}let token2Index=0;for(let i=data.tokens2.length>>>1;i>=0;i--)if(position.column-1>=data.tokens2[i<<1]){token2Index=i;break}const lineContent=this._model.getLineContent(position.lineNumber);let tokenText="";if(token1Index<data.tokens1.length){const tokenStartIndex=data.tokens1[token1Index].offset,tokenEndIndex=token1Index+1<data.tokens1.length?data.tokens1[token1Index+1].offset:lineContent.length;tokenText=lineContent.substring(tokenStartIndex,tokenEndIndex)}reset(this._domNode,$$e("h2.tm-token",void 0,renderTokenText(tokenText),$$e("span.tm-token-length",void 0,`${tokenText.length} ${tokenText.length===1?"char":"chars"}`))),append$1(this._domNode,$$e("hr.tokens-inspect-separator",{style:"clear:both"}));const metadata=(token2Index<<1)+1<data.tokens2.length?this._decodeMetadata(data.tokens2[(token2Index<<1)+1]):null;append$1(this._domNode,$$e("table.tm-metadata-table",void 0,$$e("tbody",void 0,$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"language"),$$e("td.tm-metadata-value",void 0,`${metadata?metadata.languageId:"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"token type"),$$e("td.tm-metadata-value",void 0,`${metadata?this._tokenTypeToString(metadata.tokenType):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"font style"),$$e("td.tm-metadata-value",void 0,`${metadata?this._fontStyleToString(metadata.fontStyle):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"foreground"),$$e("td.tm-metadata-value",void 0,`${metadata?Color$3.Format.CSS.formatHex(metadata.foreground):"-?-"}`)),$$e("tr",void 0,$$e("td.tm-metadata-key",void 0,"background"),$$e("td.tm-metadata-value",void 0,`${metadata?Color$3.Format.CSS.formatHex(metadata.background):"-?-"}`))))),append$1(this._domNode,$$e("hr.tokens-inspect-separator")),token1Index<data.tokens1.length&&append$1(this._domNode,$$e("span.tm-token-type",void 0,data.tokens1[token1Index].type)),this._editor.layoutContentWidget(this)}_decodeMetadata(metadata){const colorMap=TokenizationRegistry.getColorMap(),languageId=TokenMetadata.getLanguageId(metadata),tokenType=TokenMetadata.getTokenType(metadata),fontStyle=TokenMetadata.getFontStyle(metadata),foreground2=TokenMetadata.getForeground(metadata),background=TokenMetadata.getBackground(metadata);return{languageId:this._languageService.languageIdCodec.decodeLanguageId(languageId),tokenType,fontStyle,foreground:colorMap[foreground2],background:colorMap[background]}}_tokenTypeToString(tokenType){switch(tokenType){case 0:return"Other";case 1:return"Comment";case 2:return"String";case 3:return"RegEx";default:return"??"}}_fontStyleToString(fontStyle){let r2="";return fontStyle&1&&(r2+="italic "),fontStyle&2&&(r2+="bold "),fontStyle&4&&(r2+="underline "),fontStyle&8&&(r2+="strikethrough "),r2.length===0&&(r2="---"),r2}_getTokensAtLine(lineNumber){const stateBeforeLine=this._getStateBeforeLine(lineNumber),tokenizationResult1=this._tokenizationSupport.tokenize(this._model.getLineContent(lineNumber),!0,stateBeforeLine),tokenizationResult2=this._tokenizationSupport.tokenizeEncoded(this._model.getLineContent(lineNumber),!0,stateBeforeLine);return{startState:stateBeforeLine,tokens1:tokenizationResult1.tokens,tokens2:tokenizationResult2.tokens,endState:tokenizationResult1.endState}}_getStateBeforeLine(lineNumber){let state=this._tokenizationSupport.getInitialState();for(let i=1;i<lineNumber;i++)state=this._tokenizationSupport.tokenize(this._model.getLineContent(i),!0,state).endState;return state}getDomNode(){return this._domNode}getPosition(){return{position:this._editor.getPosition(),preference:[2,1]}}};__name(_InspectTokensWidget,"InspectTokensWidget"),_InspectTokensWidget._ID="editor.contrib.inspectTokensWidget";let InspectTokensWidget=_InspectTokensWidget;registerEditorContribution(InspectTokensController.ID,InspectTokensController,4),registerEditorAction(InspectTokens);var __decorate$6=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$6=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},HelpQuickAccessProvider_1;let HelpQuickAccessProvider=(_ze=class{constructor(quickInputService,keybindingService){this.quickInputService=quickInputService,this.keybindingService=keybindingService,this.registry=Registry.as(Extensions$2.Quickaccess)}provide(picker){const disposables=new DisposableStore;return disposables.add(picker.onDidAccept(()=>{const[item]=picker.selectedItems;item&&this.quickInputService.quickAccess.show(item.prefix,{preserveValue:!0})})),disposables.add(picker.onDidChangeValue(value=>{const providerDescriptor=this.registry.getQuickAccessProvider(value.substr(HelpQuickAccessProvider_1.PREFIX.length));providerDescriptor&&providerDescriptor.prefix&&providerDescriptor.prefix!==HelpQuickAccessProvider_1.PREFIX&&this.quickInputService.quickAccess.show(providerDescriptor.prefix,{preserveValue:!0})})),picker.items=this.getQuickAccessProviders().filter(p2=>p2.prefix!==HelpQuickAccessProvider_1.PREFIX),disposables}getQuickAccessProviders(){return this.registry.getQuickAccessProviders().sort((providerA,providerB)=>providerA.prefix.localeCompare(providerB.prefix)).flatMap(provider=>this.createPicks(provider))}createPicks(provider){return provider.helpEntries.map(helpEntry=>{const prefix=helpEntry.prefix||provider.prefix,label=prefix||"…";return{prefix,label,keybinding:helpEntry.commandId?this.keybindingService.lookupKeybinding(helpEntry.commandId):void 0,ariaLabel:localize("helpPickAriaLabel","{0}, {1}",label,helpEntry.description),description:helpEntry.description}})}},__name(_ze,"HelpQuickAccessProvider"),HelpQuickAccessProvider_1=_ze,_ze.PREFIX="?",_ze);HelpQuickAccessProvider=HelpQuickAccessProvider_1=__decorate$6([__param$6(0,IQuickInputService),__param$6(1,IKeybindingService)],HelpQuickAccessProvider),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:HelpQuickAccessProvider,prefix:"",helpEntries:[{description:QuickHelpNLS.helpQuickAccessActionLabel}]});const _AbstractEditorNavigationQuickAccessProvider=class _AbstractEditorNavigationQuickAccessProvider{constructor(options){this.options=options,this.rangeHighlightDecorationId=void 0}provide(picker,token,runOptions){var _a3;const disposables=new DisposableStore;picker.canAcceptInBackground=!!((_a3=this.options)!=null&&_a3.canAcceptInBackground),picker.matchOnLabel=picker.matchOnDescription=picker.matchOnDetail=picker.sortByLabel=!1;const pickerDisposable=disposables.add(new MutableDisposable);return pickerDisposable.value=this.doProvide(picker,token,runOptions),disposables.add(this.onDidActiveTextEditorControlChange(()=>{pickerDisposable.value=void 0,pickerDisposable.value=this.doProvide(picker,token)})),disposables}doProvide(picker,token,runOptions){var _a3;const disposables=new DisposableStore,editor2=this.activeTextEditorControl;if(editor2&&this.canProvideWithTextEditor(editor2)){const context={editor:editor2},codeEditor=getCodeEditor(editor2);if(codeEditor){let lastKnownEditorViewState=(_a3=editor2.saveViewState())!=null?_a3:void 0;disposables.add(codeEditor.onDidChangeCursorPosition(()=>{var _a4;lastKnownEditorViewState=(_a4=editor2.saveViewState())!=null?_a4:void 0})),context.restoreViewState=()=>{lastKnownEditorViewState&&editor2===this.activeTextEditorControl&&editor2.restoreViewState(lastKnownEditorViewState)},disposables.add(createSingleCallFunction(token.onCancellationRequested)(()=>{var _a4;return(_a4=context.restoreViewState)==null?void 0:_a4.call(context)}))}disposables.add(toDisposable(()=>this.clearDecorations(editor2))),disposables.add(this.provideWithTextEditor(context,picker,token,runOptions))}else disposables.add(this.provideWithoutTextEditor(picker,token));return disposables}canProvideWithTextEditor(editor2){return!0}gotoLocation({editor:editor2},options){editor2.setSelection(options.range,"code.jump"),editor2.revealRangeInCenter(options.range,0),options.preserveFocus||editor2.focus();const model=editor2.getModel();model&&"getLineContent"in model&&status(`${model.getLineContent(options.range.startLineNumber)}`)}getModel(editor2){var _a3;return isDiffEditor(editor2)?(_a3=editor2.getModel())==null?void 0:_a3.modified:editor2.getModel()}addDecorations(editor2,range2){editor2.changeDecorations(changeAccessor=>{const deleteDecorations=[];this.rangeHighlightDecorationId&&(deleteDecorations.push(this.rangeHighlightDecorationId.overviewRulerDecorationId),deleteDecorations.push(this.rangeHighlightDecorationId.rangeHighlightId),this.rangeHighlightDecorationId=void 0);const newDecorations=[{range:range2,options:{description:"quick-access-range-highlight",className:"rangeHighlight",isWholeLine:!0}},{range:range2,options:{description:"quick-access-range-highlight-overview",overviewRuler:{color:themeColorFromId(overviewRulerRangeHighlight),position:OverviewRulerLane.Full}}}],[rangeHighlightId,overviewRulerDecorationId]=changeAccessor.deltaDecorations(deleteDecorations,newDecorations);this.rangeHighlightDecorationId={rangeHighlightId,overviewRulerDecorationId}})}clearDecorations(editor2){const rangeHighlightDecorationId=this.rangeHighlightDecorationId;rangeHighlightDecorationId&&(editor2.changeDecorations(changeAccessor=>{changeAccessor.deltaDecorations([rangeHighlightDecorationId.overviewRulerDecorationId,rangeHighlightDecorationId.rangeHighlightId],[])}),this.rangeHighlightDecorationId=void 0)}};__name(_AbstractEditorNavigationQuickAccessProvider,"AbstractEditorNavigationQuickAccessProvider");let AbstractEditorNavigationQuickAccessProvider=_AbstractEditorNavigationQuickAccessProvider;const _AbstractGotoLineQuickAccessProvider=class _AbstractGotoLineQuickAccessProvider extends AbstractEditorNavigationQuickAccessProvider{constructor(){super({canAcceptInBackground:!0})}provideWithoutTextEditor(picker){const label=localize("cannotRunGotoLine","Open a text editor first to go to a line.");return picker.items=[{label}],picker.ariaLabel=label,Disposable.None}provideWithTextEditor(context,picker,token){const editor2=context.editor,disposables=new DisposableStore;disposables.add(picker.onDidAccept(event=>{const[item]=picker.selectedItems;if(item){if(!this.isValidLineNumber(editor2,item.lineNumber))return;this.gotoLocation(context,{range:this.toRange(item.lineNumber,item.column),keyMods:picker.keyMods,preserveFocus:event.inBackground}),event.inBackground||picker.hide()}}));const updatePickerAndEditor=__name(()=>{const position=this.parsePosition(editor2,picker.value.trim().substr(_AbstractGotoLineQuickAccessProvider.PREFIX.length)),label=this.getPickLabel(editor2,position.lineNumber,position.column);if(picker.items=[{lineNumber:position.lineNumber,column:position.column,label}],picker.ariaLabel=label,!this.isValidLineNumber(editor2,position.lineNumber)){this.clearDecorations(editor2);return}const range2=this.toRange(position.lineNumber,position.column);editor2.revealRangeInCenter(range2,0),this.addDecorations(editor2,range2)},"updatePickerAndEditor");updatePickerAndEditor(),disposables.add(picker.onDidChangeValue(()=>updatePickerAndEditor()));const codeEditor=getCodeEditor(editor2);return codeEditor&&codeEditor.getOptions().get(68).renderType===2&&(codeEditor.updateOptions({lineNumbers:"on"}),disposables.add(toDisposable(()=>codeEditor.updateOptions({lineNumbers:"relative"})))),disposables}toRange(lineNumber=1,column=1){return{startLineNumber:lineNumber,startColumn:column,endLineNumber:lineNumber,endColumn:column}}parsePosition(editor2,value){const numbers=value.split(/,|:|#/).map(part=>parseInt(part,10)).filter(part=>!isNaN(part)),endLine=this.lineCount(editor2)+1;return{lineNumber:numbers[0]>0?numbers[0]:endLine+numbers[0],column:numbers[1]}}getPickLabel(editor2,lineNumber,column){if(this.isValidLineNumber(editor2,lineNumber))return this.isValidColumn(editor2,lineNumber,column)?localize("gotoLineColumnLabel","Go to line {0} and character {1}.",lineNumber,column):localize("gotoLineLabel","Go to line {0}.",lineNumber);const position=editor2.getPosition()||{lineNumber:1,column:1},lineCount=this.lineCount(editor2);return lineCount>1?localize("gotoLineLabelEmptyWithLimit","Current Line: {0}, Character: {1}. Type a line number between 1 and {2} to navigate to.",position.lineNumber,position.column,lineCount):localize("gotoLineLabelEmpty","Current Line: {0}, Character: {1}. Type a line number to navigate to.",position.lineNumber,position.column)}isValidLineNumber(editor2,lineNumber){return!lineNumber||typeof lineNumber!="number"?!1:lineNumber>0&&lineNumber<=this.lineCount(editor2)}isValidColumn(editor2,lineNumber,column){if(!column||typeof column!="number")return!1;const model=this.getModel(editor2);if(!model)return!1;const positionCandidate={lineNumber,column};return model.validatePosition(positionCandidate).equals(positionCandidate)}lineCount(editor2){var _a3,_b3;return(_b3=(_a3=this.getModel(editor2))==null?void 0:_a3.getLineCount())!=null?_b3:0}};__name(_AbstractGotoLineQuickAccessProvider,"AbstractGotoLineQuickAccessProvider"),_AbstractGotoLineQuickAccessProvider.PREFIX=":";let AbstractGotoLineQuickAccessProvider=_AbstractGotoLineQuickAccessProvider;var __decorate$5=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$5=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneGotoLineQuickAccessProvider=(_Ae=class extends AbstractGotoLineQuickAccessProvider{constructor(editorService){super(),this.editorService=editorService,this.onDidActiveTextEditorControlChange=Event.None}get activeTextEditorControl(){var _a3;return(_a3=this.editorService.getFocusedCodeEditor())!=null?_a3:void 0}},__name(_Ae,"StandaloneGotoLineQuickAccessProvider"),_Ae);StandaloneGotoLineQuickAccessProvider=__decorate$5([__param$5(0,ICodeEditorService)],StandaloneGotoLineQuickAccessProvider);let GotoLineAction$1=(_Be=class extends EditorAction{constructor(){super({id:_Be.ID,label:GoToLineNLS.gotoLineActionLabel,alias:"Go to Line/Column...",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.focus,primary:2085,mac:{primary:293},weight:100}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(StandaloneGotoLineQuickAccessProvider.PREFIX)}},__name(_Be,"GotoLineAction"),_Be.ID="editor.action.gotoLine",_Be);registerEditorAction(GotoLineAction$1),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneGotoLineQuickAccessProvider,prefix:StandaloneGotoLineQuickAccessProvider.PREFIX,helpEntries:[{description:GoToLineNLS.gotoLineActionLabel,commandId:GotoLineAction$1.ID}]});const NO_SCORE2=[void 0,[]];function scoreFuzzy2(target,query,patternStart=0,wordStart=0){const preparedQuery=query;return preparedQuery.values&&preparedQuery.values.length>1?doScoreFuzzy2Multiple(target,preparedQuery.values,patternStart,wordStart):doScoreFuzzy2Single(target,query,patternStart,wordStart)}__name(scoreFuzzy2,"scoreFuzzy2");function doScoreFuzzy2Multiple(target,query,patternStart,wordStart){let totalScore=0;const totalMatches=[];for(const queryPiece of query){const[score2,matches]=doScoreFuzzy2Single(target,queryPiece,patternStart,wordStart);if(typeof score2!="number")return NO_SCORE2;totalScore+=score2,totalMatches.push(...matches)}return[totalScore,normalizeMatches(totalMatches)]}__name(doScoreFuzzy2Multiple,"doScoreFuzzy2Multiple");function doScoreFuzzy2Single(target,query,patternStart,wordStart){const score2=fuzzyScore(query.original,query.originalLowercase,patternStart,target,target.toLowerCase(),wordStart,{firstMatchCanBeWeak:!0,boostFullMatch:!0});return score2?[score2[0],createMatches(score2)]:NO_SCORE2}__name(doScoreFuzzy2Single,"doScoreFuzzy2Single");function normalizeMatches(matches){const sortedMatches=matches.sort((matchA,matchB)=>matchA.start-matchB.start),normalizedMatches=[];let currentMatch;for(const match2 of sortedMatches)!currentMatch||!matchOverlaps(currentMatch,match2)?(currentMatch=match2,normalizedMatches.push(match2)):(currentMatch.start=Math.min(currentMatch.start,match2.start),currentMatch.end=Math.max(currentMatch.end,match2.end));return normalizedMatches}__name(normalizeMatches,"normalizeMatches");function matchOverlaps(matchA,matchB){return!(matchA.end<matchB.start||matchB.end<matchA.start)}__name(matchOverlaps,"matchOverlaps");function queryExpectsExactMatch(query){return query.startsWith('"')&&query.endsWith('"')}__name(queryExpectsExactMatch,"queryExpectsExactMatch");const MULTIPLE_QUERY_VALUES_SEPARATOR=" ";function prepareQuery(original){typeof original!="string"&&(original="");const originalLowercase=original.toLowerCase(),{pathNormalized,normalized,normalizedLowercase}=normalizeQuery(original),containsPathSeparator=pathNormalized.indexOf(sep)>=0,expectExactMatch=queryExpectsExactMatch(original);let values;const originalSplit=original.split(MULTIPLE_QUERY_VALUES_SEPARATOR);if(originalSplit.length>1)for(const originalPiece of originalSplit){const expectExactMatchPiece=queryExpectsExactMatch(originalPiece),{pathNormalized:pathNormalizedPiece,normalized:normalizedPiece,normalizedLowercase:normalizedLowercasePiece}=normalizeQuery(originalPiece);normalizedPiece&&(values||(values=[]),values.push({original:originalPiece,originalLowercase:originalPiece.toLowerCase(),pathNormalized:pathNormalizedPiece,normalized:normalizedPiece,normalizedLowercase:normalizedLowercasePiece,expectContiguousMatch:expectExactMatchPiece}))}return{original,originalLowercase,pathNormalized,normalized,normalizedLowercase,values,containsPathSeparator,expectContiguousMatch:expectExactMatch}}__name(prepareQuery,"prepareQuery");function normalizeQuery(original){let pathNormalized;isWindows?pathNormalized=original.replace(/\//g,sep):pathNormalized=original.replace(/\\/g,sep);const normalized=stripWildcards(pathNormalized).replace(/\s|"/g,"");return{pathNormalized,normalized,normalizedLowercase:normalized.toLowerCase()}}__name(normalizeQuery,"normalizeQuery");function pieceToQuery(arg1){return Array.isArray(arg1)?prepareQuery(arg1.map(piece=>piece.original).join(MULTIPLE_QUERY_VALUES_SEPARATOR)):prepareQuery(arg1.original)}__name(pieceToQuery,"pieceToQuery");var __decorate$4=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$4=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},AbstractGotoSymbolQuickAccessProvider_1;let AbstractGotoSymbolQuickAccessProvider=(_Ce=class extends AbstractEditorNavigationQuickAccessProvider{constructor(_languageFeaturesService,_outlineModelService,options=Object.create(null)){super(options),this._languageFeaturesService=_languageFeaturesService,this._outlineModelService=_outlineModelService,this.options=options,this.options.canAcceptInBackground=!0}provideWithoutTextEditor(picker){return this.provideLabelPick(picker,localize("cannotRunGotoSymbolWithoutEditor","To go to a symbol, first open a text editor with symbol information.")),Disposable.None}provideWithTextEditor(context,picker,token,runOptions){const editor2=context.editor,model=this.getModel(editor2);return model?this._languageFeaturesService.documentSymbolProvider.has(model)?this.doProvideWithEditorSymbols(context,model,picker,token,runOptions):this.doProvideWithoutEditorSymbols(context,model,picker,token):Disposable.None}doProvideWithoutEditorSymbols(context,model,picker,token){const disposables=new DisposableStore;return this.provideLabelPick(picker,localize("cannotRunGotoSymbolWithoutSymbolProvider","The active text editor does not provide symbol information.")),(async()=>!await this.waitForLanguageSymbolRegistry(model,disposables)||token.isCancellationRequested||disposables.add(this.doProvideWithEditorSymbols(context,model,picker,token)))(),disposables}provideLabelPick(picker,label){picker.items=[{label,index:0,kind:14}],picker.ariaLabel=label}async waitForLanguageSymbolRegistry(model,disposables){if(this._languageFeaturesService.documentSymbolProvider.has(model))return!0;const symbolProviderRegistryPromise=new DeferredPromise,symbolProviderListener=disposables.add(this._languageFeaturesService.documentSymbolProvider.onDidChange(()=>{this._languageFeaturesService.documentSymbolProvider.has(model)&&(symbolProviderListener.dispose(),symbolProviderRegistryPromise.complete(!0))}));return disposables.add(toDisposable(()=>symbolProviderRegistryPromise.complete(!1))),symbolProviderRegistryPromise.p}doProvideWithEditorSymbols(context,model,picker,token,runOptions){var _a3;const editor2=context.editor,disposables=new DisposableStore;disposables.add(picker.onDidAccept(event=>{var _a4;const[item]=picker.selectedItems;item&&item.range&&(this.gotoLocation(context,{range:item.range.selection,keyMods:picker.keyMods,preserveFocus:event.inBackground}),(_a4=runOptions==null?void 0:runOptions.handleAccept)==null||_a4.call(runOptions,item),event.inBackground||picker.hide())})),disposables.add(picker.onDidTriggerItemButton(({item})=>{item&&item.range&&(this.gotoLocation(context,{range:item.range.selection,keyMods:picker.keyMods,forceSideBySide:!0}),picker.hide())}));const symbolsPromise=this.getDocumentSymbols(model,token);let picksCts;const updatePickerItems=__name(async positionToEnclose=>{picksCts==null||picksCts.dispose(!0),picker.busy=!1,picksCts=new CancellationTokenSource$1(token),picker.busy=!0;try{const query=prepareQuery(picker.value.substr(AbstractGotoSymbolQuickAccessProvider_1.PREFIX.length).trim()),items=await this.doGetSymbolPicks(symbolsPromise,query,void 0,picksCts.token,model);if(token.isCancellationRequested)return;if(items.length>0){if(picker.items=items,positionToEnclose&&query.original.length===0){const candidate=findLast(items,item=>!!(item.type!=="separator"&&item.range&&Range$5.containsPosition(item.range.decoration,positionToEnclose)));candidate&&(picker.activeItems=[candidate])}}else query.original.length>0?this.provideLabelPick(picker,localize("noMatchingSymbolResults","No matching editor symbols")):this.provideLabelPick(picker,localize("noSymbolResults","No editor symbols"))}finally{token.isCancellationRequested||(picker.busy=!1)}},"updatePickerItems");return disposables.add(picker.onDidChangeValue(()=>updatePickerItems(void 0))),updatePickerItems((_a3=editor2.getSelection())==null?void 0:_a3.getPosition()),disposables.add(picker.onDidChangeActive(()=>{const[item]=picker.activeItems;item&&item.range&&(editor2.revealRangeInCenter(item.range.selection,0),this.addDecorations(editor2,item.range.decoration))})),disposables}async doGetSymbolPicks(symbolsPromise,query,options,token,model){var _a3,_b3;const symbols=await symbolsPromise;if(token.isCancellationRequested)return[];const filterBySymbolKind=query.original.indexOf(AbstractGotoSymbolQuickAccessProvider_1.SCOPE_PREFIX)===0,filterPos=filterBySymbolKind?1:0;let symbolQuery,containerQuery;query.values&&query.values.length>1?(symbolQuery=pieceToQuery(query.values[0]),containerQuery=pieceToQuery(query.values.slice(1))):symbolQuery=query;let buttons;const openSideBySideDirection=(_b3=(_a3=this.options)==null?void 0:_a3.openSideBySideDirection)==null?void 0:_b3.call(_a3);openSideBySideDirection&&(buttons=[{iconClass:openSideBySideDirection==="right"?ThemeIcon.asClassName(Codicon.splitHorizontal):ThemeIcon.asClassName(Codicon.splitVertical),tooltip:openSideBySideDirection==="right"?localize("openToSide","Open to the Side"):localize("openToBottom","Open to the Bottom")}]);const filteredSymbolPicks=[];for(let index=0;index<symbols.length;index++){const symbol=symbols[index],symbolLabel=trim(symbol.name),symbolLabelWithIcon=`$(${SymbolKinds.toIcon(symbol.kind).id}) ${symbolLabel}`,symbolLabelIconOffset=symbolLabelWithIcon.length-symbolLabel.length;let containerLabel=symbol.containerName;options!=null&&options.extraContainerLabel&&(containerLabel?containerLabel=`${options.extraContainerLabel} • ${containerLabel}`:containerLabel=options.extraContainerLabel);let symbolScore,symbolMatches,containerScore,containerMatches;if(query.original.length>filterPos){let skipContainerQuery=!1;if(symbolQuery!==query&&([symbolScore,symbolMatches]=scoreFuzzy2(symbolLabelWithIcon,{...query,values:void 0},filterPos,symbolLabelIconOffset),typeof symbolScore=="number"&&(skipContainerQuery=!0)),typeof symbolScore!="number"&&([symbolScore,symbolMatches]=scoreFuzzy2(symbolLabelWithIcon,symbolQuery,filterPos,symbolLabelIconOffset),typeof symbolScore!="number"))continue;if(!skipContainerQuery&&containerQuery){if(containerLabel&&containerQuery.original.length>0&&([containerScore,containerMatches]=scoreFuzzy2(containerLabel,containerQuery)),typeof containerScore!="number")continue;typeof symbolScore=="number"&&(symbolScore+=containerScore)}}const deprecated=symbol.tags&&symbol.tags.indexOf(1)>=0;filteredSymbolPicks.push({index,kind:symbol.kind,score:symbolScore,label:symbolLabelWithIcon,ariaLabel:getAriaLabelForSymbol(symbol.name,symbol.kind),description:containerLabel,highlights:deprecated?void 0:{label:symbolMatches,description:containerMatches},range:{selection:Range$5.collapseToStart(symbol.selectionRange),decoration:symbol.range},uri:model.uri,symbolName:symbolLabel,strikethrough:deprecated,buttons})}const sortedFilteredSymbolPicks=filteredSymbolPicks.sort((symbolA,symbolB)=>filterBySymbolKind?this.compareByKindAndScore(symbolA,symbolB):this.compareByScore(symbolA,symbolB));let symbolPicks=[];if(filterBySymbolKind){let updateLastSeparatorLabel=function(){lastSeparator&&typeof lastSymbolKind=="number"&&lastSymbolKindCounter>0&&(lastSeparator.label=format(NLS_SYMBOL_KIND_CACHE[lastSymbolKind]||FALLBACK_NLS_SYMBOL_KIND,lastSymbolKindCounter))};__name(updateLastSeparatorLabel,"updateLastSeparatorLabel");let lastSymbolKind,lastSeparator,lastSymbolKindCounter=0;for(const symbolPick of sortedFilteredSymbolPicks)lastSymbolKind!==symbolPick.kind?(updateLastSeparatorLabel(),lastSymbolKind=symbolPick.kind,lastSymbolKindCounter=1,lastSeparator={type:"separator"},symbolPicks.push(lastSeparator)):lastSymbolKindCounter++,symbolPicks.push(symbolPick);updateLastSeparatorLabel()}else sortedFilteredSymbolPicks.length>0&&(symbolPicks=[{label:localize("symbols","symbols ({0})",filteredSymbolPicks.length),type:"separator"},...sortedFilteredSymbolPicks]);return symbolPicks}compareByScore(symbolA,symbolB){if(typeof symbolA.score!="number"&&typeof symbolB.score=="number")return 1;if(typeof symbolA.score=="number"&&typeof symbolB.score!="number")return-1;if(typeof symbolA.score=="number"&&typeof symbolB.score=="number"){if(symbolA.score>symbolB.score)return-1;if(symbolA.score<symbolB.score)return 1}return symbolA.index<symbolB.index?-1:symbolA.index>symbolB.index?1:0}compareByKindAndScore(symbolA,symbolB){const kindA=NLS_SYMBOL_KIND_CACHE[symbolA.kind]||FALLBACK_NLS_SYMBOL_KIND,kindB=NLS_SYMBOL_KIND_CACHE[symbolB.kind]||FALLBACK_NLS_SYMBOL_KIND,result=kindA.localeCompare(kindB);return result===0?this.compareByScore(symbolA,symbolB):result}async getDocumentSymbols(document2,token){const model=await this._outlineModelService.getOrCreate(document2,token);return token.isCancellationRequested?[]:model.asListOfDocumentSymbols()}},__name(_Ce,"AbstractGotoSymbolQuickAccessProvider"),AbstractGotoSymbolQuickAccessProvider_1=_Ce,_Ce.PREFIX="@",_Ce.SCOPE_PREFIX=":",_Ce.PREFIX_BY_CATEGORY=`${_Ce.PREFIX}${_Ce.SCOPE_PREFIX}`,_Ce);AbstractGotoSymbolQuickAccessProvider=AbstractGotoSymbolQuickAccessProvider_1=__decorate$4([__param$4(0,ILanguageFeaturesService),__param$4(1,IOutlineModelService)],AbstractGotoSymbolQuickAccessProvider);const FALLBACK_NLS_SYMBOL_KIND=localize("property","properties ({0})"),NLS_SYMBOL_KIND_CACHE={5:localize("method","methods ({0})"),11:localize("function","functions ({0})"),8:localize("_constructor","constructors ({0})"),12:localize("variable","variables ({0})"),4:localize("class","classes ({0})"),22:localize("struct","structs ({0})"),23:localize("event","events ({0})"),24:localize("operator","operators ({0})"),10:localize("interface","interfaces ({0})"),2:localize("namespace","namespaces ({0})"),3:localize("package","packages ({0})"),25:localize("typeParameter","type parameters ({0})"),1:localize("modules","modules ({0})"),6:localize("property","properties ({0})"),9:localize("enum","enumerations ({0})"),21:localize("enumMember","enumeration members ({0})"),14:localize("string","strings ({0})"),0:localize("file","files ({0})"),17:localize("array","arrays ({0})"),15:localize("number","numbers ({0})"),16:localize("boolean","booleans ({0})"),18:localize("object","objects ({0})"),19:localize("key","keys ({0})"),7:localize("field","fields ({0})"),13:localize("constant","constants ({0})")};var __decorate$3=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$3=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneGotoSymbolQuickAccessProvider=(_De=class extends AbstractGotoSymbolQuickAccessProvider{constructor(editorService,languageFeaturesService,outlineModelService){super(languageFeaturesService,outlineModelService),this.editorService=editorService,this.onDidActiveTextEditorControlChange=Event.None}get activeTextEditorControl(){var _a3;return(_a3=this.editorService.getFocusedCodeEditor())!=null?_a3:void 0}},__name(_De,"StandaloneGotoSymbolQuickAccessProvider"),_De);StandaloneGotoSymbolQuickAccessProvider=__decorate$3([__param$3(0,ICodeEditorService),__param$3(1,ILanguageFeaturesService),__param$3(2,IOutlineModelService)],StandaloneGotoSymbolQuickAccessProvider);const _GotoSymbolAction=class _GotoSymbolAction extends EditorAction{constructor(){super({id:_GotoSymbolAction.ID,label:QuickOutlineNLS.quickOutlineActionLabel,alias:"Go to Symbol...",precondition:EditorContextKeys.hasDocumentSymbolProvider,kbOpts:{kbExpr:EditorContextKeys.focus,primary:3117,weight:100},contextMenuOpts:{group:"navigation",order:3}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(AbstractGotoSymbolQuickAccessProvider.PREFIX,{itemActivation:ItemActivation.NONE})}};__name(_GotoSymbolAction,"GotoSymbolAction"),_GotoSymbolAction.ID="editor.action.quickOutline";let GotoSymbolAction=_GotoSymbolAction;registerEditorAction(GotoSymbolAction),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneGotoSymbolQuickAccessProvider,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX,helpEntries:[{description:QuickOutlineNLS.quickOutlineActionLabel,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX,commandId:GotoSymbolAction.ID},{description:QuickOutlineNLS.quickOutlineByCategoryActionLabel,prefix:AbstractGotoSymbolQuickAccessProvider.PREFIX_BY_CATEGORY}]});function countMapFrom(values){var _a3;const map=new Map;for(const value of values)map.set(value,((_a3=map.get(value))!=null?_a3:0)+1);return map}__name(countMapFrom,"countMapFrom");const _TfIdfCalculator=class _TfIdfCalculator{constructor(){this.chunkCount=0,this.chunkOccurrences=new Map,this.documents=new Map}calculateScores(query,token){const embedding=this.computeEmbedding(query),idfCache=new Map,scores=[];for(const[key,doc]of this.documents){if(token.isCancellationRequested)return[];for(const chunk of doc.chunks){const score2=this.computeSimilarityScore(chunk,embedding,idfCache);score2>0&&scores.push({key,score:score2})}}return scores}static termFrequencies(input){return countMapFrom(_TfIdfCalculator.splitTerms(input))}static*splitTerms(input){const normalize2=__name(word=>word.toLowerCase(),"normalize");for(const[word]of input.matchAll(new RegExp("\\b\\p{Letter}[\\p{Letter}\\d]{2,}\\b","gu"))){yield normalize2(word);const camelParts=word.replace(/([a-z])([A-Z])/g,"$1 $2").split(/\s+/g);if(camelParts.length>1)for(const part of camelParts)part.length>2&&new RegExp("\\p{Letter}{3,}","gu").test(part)&&(yield normalize2(part))}}updateDocuments(documents){var _a3;for(const{key}of documents)this.deleteDocument(key);for(const doc of documents){const chunks=[];for(const text2 of doc.textChunks){const tf=_TfIdfCalculator.termFrequencies(text2);for(const term of tf.keys())this.chunkOccurrences.set(term,((_a3=this.chunkOccurrences.get(term))!=null?_a3:0)+1);chunks.push({text:text2,tf})}this.chunkCount+=chunks.length,this.documents.set(doc.key,{chunks})}return this}deleteDocument(key){const doc=this.documents.get(key);if(doc){this.documents.delete(key),this.chunkCount-=doc.chunks.length;for(const chunk of doc.chunks)for(const term of chunk.tf.keys()){const currentOccurrences=this.chunkOccurrences.get(term);if(typeof currentOccurrences=="number"){const newOccurrences=currentOccurrences-1;newOccurrences<=0?this.chunkOccurrences.delete(term):this.chunkOccurrences.set(term,newOccurrences)}}}}computeSimilarityScore(chunk,queryEmbedding,idfCache){let sum=0;for(const[term,termTfidf]of Object.entries(queryEmbedding)){const chunkTf=chunk.tf.get(term);if(!chunkTf)continue;let chunkIdf=idfCache.get(term);typeof chunkIdf!="number"&&(chunkIdf=this.computeIdf(term),idfCache.set(term,chunkIdf));const chunkTfidf=chunkTf*chunkIdf;sum+=chunkTfidf*termTfidf}return sum}computeEmbedding(input){const tf=_TfIdfCalculator.termFrequencies(input);return this.computeTfidf(tf)}computeIdf(term){var _a3;const chunkOccurrences=(_a3=this.chunkOccurrences.get(term))!=null?_a3:0;return chunkOccurrences>0?Math.log((this.chunkCount+1)/chunkOccurrences):0}computeTfidf(termFrequencies){const embedding=Object.create(null);for(const[word,occurrences]of termFrequencies){const idf=this.computeIdf(word);idf>0&&(embedding[word]=occurrences*idf)}return embedding}};__name(_TfIdfCalculator,"TfIdfCalculator");let TfIdfCalculator=_TfIdfCalculator;function normalizeTfIdfScores(scores){var _a3,_b3;const result=scores.slice(0);result.sort((a,b)=>b.score-a.score);const max=(_b3=(_a3=result[0])==null?void 0:_a3.score)!=null?_b3:0;if(max>0)for(const score2 of result)score2.score/=max;return result}__name(normalizeTfIdfScores,"normalizeTfIdfScores");var TriggerAction;(function(TriggerAction2){TriggerAction2[TriggerAction2.NO_ACTION=0]="NO_ACTION",TriggerAction2[TriggerAction2.CLOSE_PICKER=1]="CLOSE_PICKER",TriggerAction2[TriggerAction2.REFRESH_PICKER=2]="REFRESH_PICKER",TriggerAction2[TriggerAction2.REMOVE_ITEM=3]="REMOVE_ITEM"})(TriggerAction||(TriggerAction={}));function isPicksWithActive(obj){const candidate=obj;return Array.isArray(candidate.items)}__name(isPicksWithActive,"isPicksWithActive");function isFastAndSlowPicks(obj){const candidate=obj;return!!candidate.picks&&candidate.additionalPicks instanceof Promise}__name(isFastAndSlowPicks,"isFastAndSlowPicks");const _PickerQuickAccessProvider=class _PickerQuickAccessProvider extends Disposable{constructor(prefix,options){super(),this.prefix=prefix,this.options=options}provide(picker,token,runOptions){var _a3;const disposables=new DisposableStore;picker.canAcceptInBackground=!!((_a3=this.options)!=null&&_a3.canAcceptInBackground),picker.matchOnLabel=picker.matchOnDescription=picker.matchOnDetail=picker.sortByLabel=!1;let picksCts;const picksDisposable=disposables.add(new MutableDisposable),updatePickerItems=__name(async()=>{var _a4;const picksDisposables=picksDisposable.value=new DisposableStore;picksCts==null||picksCts.dispose(!0),picker.busy=!1,picksCts=new CancellationTokenSource$1(token);const picksToken=picksCts.token;let picksFilter=picker.value.substring(this.prefix.length);(_a4=this.options)!=null&&_a4.shouldSkipTrimPickFilter||(picksFilter=picksFilter.trim());const providedPicks=this._getPicks(picksFilter,picksDisposables,picksToken,runOptions),applyPicks=__name((picks,skipEmpty)=>{var _a5;let items,activeItem;if(isPicksWithActive(picks)?(items=picks.items,activeItem=picks.active):items=picks,items.length===0){if(skipEmpty)return!1;(picksFilter.length>0||picker.hideInput)&&((_a5=this.options)!=null&&_a5.noResultsPick)&&(isFunction(this.options.noResultsPick)?items=[this.options.noResultsPick(picksFilter)]:items=[this.options.noResultsPick])}return picker.items=items,activeItem&&(picker.activeItems=[activeItem]),!0},"applyPicks"),applyFastAndSlowPicks=__name(async fastAndSlowPicks=>{let fastPicksApplied=!1,slowPicksApplied=!1;await Promise.all([(async()=>{typeof fastAndSlowPicks.mergeDelay=="number"&&(await timeout(fastAndSlowPicks.mergeDelay),picksToken.isCancellationRequested)||slowPicksApplied||(fastPicksApplied=applyPicks(fastAndSlowPicks.picks,!0))})(),(async()=>{picker.busy=!0;try{const awaitedAdditionalPicks=await fastAndSlowPicks.additionalPicks;if(picksToken.isCancellationRequested)return;let picks,activePick;isPicksWithActive(fastAndSlowPicks.picks)?(picks=fastAndSlowPicks.picks.items,activePick=fastAndSlowPicks.picks.active):picks=fastAndSlowPicks.picks;let additionalPicks,additionalActivePick;if(isPicksWithActive(awaitedAdditionalPicks)?(additionalPicks=awaitedAdditionalPicks.items,additionalActivePick=awaitedAdditionalPicks.active):additionalPicks=awaitedAdditionalPicks,additionalPicks.length>0||!fastPicksApplied){let fallbackActivePick;if(!activePick&&!additionalActivePick){const fallbackActivePickCandidate=picker.activeItems[0];fallbackActivePickCandidate&&picks.indexOf(fallbackActivePickCandidate)!==-1&&(fallbackActivePick=fallbackActivePickCandidate)}applyPicks({items:[...picks,...additionalPicks],active:activePick||additionalActivePick||fallbackActivePick})}}finally{picksToken.isCancellationRequested||(picker.busy=!1),slowPicksApplied=!0}})()])},"applyFastAndSlowPicks");if(providedPicks!==null)if(isFastAndSlowPicks(providedPicks))await applyFastAndSlowPicks(providedPicks);else if(!(providedPicks instanceof Promise))applyPicks(providedPicks);else{picker.busy=!0;try{const awaitedPicks=await providedPicks;if(picksToken.isCancellationRequested)return;isFastAndSlowPicks(awaitedPicks)?await applyFastAndSlowPicks(awaitedPicks):applyPicks(awaitedPicks)}finally{picksToken.isCancellationRequested||(picker.busy=!1)}}},"updatePickerItems");disposables.add(picker.onDidChangeValue(()=>updatePickerItems())),updatePickerItems(),disposables.add(picker.onDidAccept(event=>{var _a4;if(runOptions!=null&&runOptions.handleAccept){event.inBackground||picker.hide(),(_a4=runOptions.handleAccept)==null||_a4.call(runOptions,picker.activeItems[0]);return}const[item]=picker.selectedItems;typeof(item==null?void 0:item.accept)=="function"&&(event.inBackground||picker.hide(),item.accept(picker.keyMods,event))}));const buttonTrigger=__name(async(button,item)=>{var _a4,_b3;if(typeof item.trigger!="function")return;const buttonIndex=(_b3=(_a4=item.buttons)==null?void 0:_a4.indexOf(button))!=null?_b3:-1;if(buttonIndex>=0){const result=item.trigger(buttonIndex,picker.keyMods),action=typeof result=="number"?result:await result;if(token.isCancellationRequested)return;switch(action){case TriggerAction.NO_ACTION:break;case TriggerAction.CLOSE_PICKER:picker.hide();break;case TriggerAction.REFRESH_PICKER:updatePickerItems();break;case TriggerAction.REMOVE_ITEM:{const index=picker.items.indexOf(item);if(index!==-1){const items=picker.items.slice(),removed=items.splice(index,1),activeItems=picker.activeItems.filter(activeItem=>activeItem!==removed[0]),keepScrollPositionBefore=picker.keepScrollPosition;picker.keepScrollPosition=!0,picker.items=items,activeItems&&(picker.activeItems=activeItems),picker.keepScrollPosition=keepScrollPositionBefore}break}}}},"buttonTrigger");return disposables.add(picker.onDidTriggerItemButton(({button,item})=>buttonTrigger(button,item))),disposables.add(picker.onDidTriggerSeparatorButton(({button,separator})=>buttonTrigger(button,separator))),disposables}};__name(_PickerQuickAccessProvider,"PickerQuickAccessProvider");let PickerQuickAccessProvider=_PickerQuickAccessProvider;var __decorate$2=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$2=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}},AbstractCommandsQuickAccessProvider_1,CommandsHistory_1;let AbstractCommandsQuickAccessProvider=(_Ee=class extends PickerQuickAccessProvider{constructor(options,instantiationService,keybindingService,commandService,telemetryService,dialogService){super(AbstractCommandsQuickAccessProvider_1.PREFIX,options),this.instantiationService=instantiationService,this.keybindingService=keybindingService,this.commandService=commandService,this.telemetryService=telemetryService,this.dialogService=dialogService,this.commandsHistory=this._register(this.instantiationService.createInstance(CommandsHistory)),this.options=options}async _getPicks(filter,_disposables,token,runOptions){var _a3,_b3,_c2,_d2;const allCommandPicks=await this.getCommandPicks(token);if(token.isCancellationRequested)return[];const runTfidf=createSingleCallFunction(()=>{const tfidf=new TfIdfCalculator;tfidf.updateDocuments(allCommandPicks.map(commandPick=>({key:commandPick.commandId,textChunks:[this.getTfIdfChunk(commandPick)]})));const result=tfidf.calculateScores(filter,token);return normalizeTfIdfScores(result).filter(score2=>score2.score>AbstractCommandsQuickAccessProvider_1.TFIDF_THRESHOLD).slice(0,AbstractCommandsQuickAccessProvider_1.TFIDF_MAX_RESULTS)}),filteredCommandPicks=[];for(const commandPick of allCommandPicks){const labelHighlights=(_a3=AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter,commandPick.label))!=null?_a3:void 0,aliasHighlights=commandPick.commandAlias&&(_b3=AbstractCommandsQuickAccessProvider_1.WORD_FILTER(filter,commandPick.commandAlias))!=null?_b3:void 0;if(labelHighlights||aliasHighlights)commandPick.highlights={label:labelHighlights,detail:this.options.showAlias?aliasHighlights:void 0},filteredCommandPicks.push(commandPick);else if(filter===commandPick.commandId)filteredCommandPicks.push(commandPick);else if(filter.length>=3){const tfidf=runTfidf();if(token.isCancellationRequested)return[];const tfidfScore=tfidf.find(score2=>score2.key===commandPick.commandId);tfidfScore&&(commandPick.tfIdfScore=tfidfScore.score,filteredCommandPicks.push(commandPick))}}const mapLabelToCommand=new Map;for(const commandPick of filteredCommandPicks){const existingCommandForLabel=mapLabelToCommand.get(commandPick.label);existingCommandForLabel?(commandPick.description=commandPick.commandId,existingCommandForLabel.description=existingCommandForLabel.commandId):mapLabelToCommand.set(commandPick.label,commandPick)}filteredCommandPicks.sort((commandPickA,commandPickB)=>{if(commandPickA.tfIdfScore&&commandPickB.tfIdfScore)return commandPickA.tfIdfScore===commandPickB.tfIdfScore?commandPickA.label.localeCompare(commandPickB.label):commandPickB.tfIdfScore-commandPickA.tfIdfScore;if(commandPickA.tfIdfScore)return 1;if(commandPickB.tfIdfScore)return-1;const commandACounter=this.commandsHistory.peek(commandPickA.commandId),commandBCounter=this.commandsHistory.peek(commandPickB.commandId);if(commandACounter&&commandBCounter)return commandACounter>commandBCounter?-1:1;if(commandACounter)return-1;if(commandBCounter)return 1;if(this.options.suggestedCommandIds){const commandASuggestion=this.options.suggestedCommandIds.has(commandPickA.commandId),commandBSuggestion=this.options.suggestedCommandIds.has(commandPickB.commandId);if(commandASuggestion&&commandBSuggestion)return 0;if(commandASuggestion)return-1;if(commandBSuggestion)return 1}return commandPickA.label.localeCompare(commandPickB.label)});const commandPicks=[];let addOtherSeparator=!1,addSuggestedSeparator=!0,addCommonlyUsedSeparator=!!this.options.suggestedCommandIds;for(let i=0;i<filteredCommandPicks.length;i++){const commandPick=filteredCommandPicks[i];i===0&&this.commandsHistory.peek(commandPick.commandId)&&(commandPicks.push({type:"separator",label:localize("recentlyUsed","recently used")}),addOtherSeparator=!0),addSuggestedSeparator&&commandPick.tfIdfScore!==void 0&&(commandPicks.push({type:"separator",label:localize("suggested","similar commands")}),addSuggestedSeparator=!1),addCommonlyUsedSeparator&&commandPick.tfIdfScore===void 0&&!this.commandsHistory.peek(commandPick.commandId)&&((_c2=this.options.suggestedCommandIds)!=null&&_c2.has(commandPick.commandId))&&(commandPicks.push({type:"separator",label:localize("commonlyUsed","commonly used")}),addOtherSeparator=!0,addCommonlyUsedSeparator=!1),addOtherSeparator&&commandPick.tfIdfScore===void 0&&!this.commandsHistory.peek(commandPick.commandId)&&!((_d2=this.options.suggestedCommandIds)!=null&&_d2.has(commandPick.commandId))&&(commandPicks.push({type:"separator",label:localize("morecCommands","other commands")}),addOtherSeparator=!1),commandPicks.push(this.toCommandPick(commandPick,runOptions))}return this.hasAdditionalCommandPicks(filter,token)?{picks:commandPicks,additionalPicks:(async()=>{var _a4;const additionalCommandPicks=await this.getAdditionalCommandPicks(allCommandPicks,filteredCommandPicks,filter,token);if(token.isCancellationRequested)return[];const commandPicks2=additionalCommandPicks.map(commandPick=>this.toCommandPick(commandPick,runOptions));return addSuggestedSeparator&&((_a4=commandPicks2[0])==null?void 0:_a4.type)!=="separator"&&commandPicks2.unshift({type:"separator",label:localize("suggested","similar commands")}),commandPicks2})()}:commandPicks}toCommandPick(commandPick,runOptions){if(commandPick.type==="separator")return commandPick;const keybinding=this.keybindingService.lookupKeybinding(commandPick.commandId),ariaLabel=keybinding?localize("commandPickAriaLabelWithKeybinding","{0}, {1}",commandPick.label,keybinding.getAriaLabel()):commandPick.label;return{...commandPick,ariaLabel,detail:this.options.showAlias&&commandPick.commandAlias!==commandPick.label?commandPick.commandAlias:void 0,keybinding,accept:__name(async()=>{var _a3,_b3;this.commandsHistory.push(commandPick.commandId),this.telemetryService.publicLog2("workbenchActionExecuted",{id:commandPick.commandId,from:(_a3=runOptions==null?void 0:runOptions.from)!=null?_a3:"quick open"});try{(_b3=commandPick.args)!=null&&_b3.length?await this.commandService.executeCommand(commandPick.commandId,...commandPick.args):await this.commandService.executeCommand(commandPick.commandId)}catch(error){isCancellationError(error)||this.dialogService.error(localize("canNotRun","Command '{0}' resulted in an error",commandPick.label),toErrorMessage(error))}},"accept")}}getTfIdfChunk({label,commandAlias,commandDescription}){let chunk=label;return commandAlias&&commandAlias!==label&&(chunk+=` - ${commandAlias}`),commandDescription&&commandDescription.value!==label&&(chunk+=` - ${commandDescription.value===commandDescription.original?commandDescription.value:`${commandDescription.value} (${commandDescription.original})`}`),chunk}},__name(_Ee,"AbstractCommandsQuickAccessProvider"),AbstractCommandsQuickAccessProvider_1=_Ee,_Ee.PREFIX=">",_Ee.TFIDF_THRESHOLD=.5,_Ee.TFIDF_MAX_RESULTS=5,_Ee.WORD_FILTER=or(matchesPrefix,matchesWords,matchesContiguousSubString),_Ee);AbstractCommandsQuickAccessProvider=AbstractCommandsQuickAccessProvider_1=__decorate$2([__param$2(1,IInstantiationService),__param$2(2,IKeybindingService),__param$2(3,ICommandService),__param$2(4,ITelemetryService),__param$2(5,IDialogService)],AbstractCommandsQuickAccessProvider);let CommandsHistory=(_Fe=class extends Disposable{constructor(storageService,configurationService,logService){super(),this.storageService=storageService,this.configurationService=configurationService,this.logService=logService,this.configuredCommandsHistoryLength=0,this.updateConfiguration(),this.load(),this.registerListeners()}registerListeners(){this._register(this.configurationService.onDidChangeConfiguration(e=>this.updateConfiguration(e))),this._register(this.storageService.onWillSaveState(e=>{e.reason===WillSaveStateReason.SHUTDOWN&&this.saveState()}))}updateConfiguration(e){e&&!e.affectsConfiguration("workbench.commandPalette.history")||(this.configuredCommandsHistoryLength=CommandsHistory_1.getConfiguredCommandHistoryLength(this.configurationService),CommandsHistory_1.cache&&CommandsHistory_1.cache.limit!==this.configuredCommandsHistoryLength&&(CommandsHistory_1.cache.limit=this.configuredCommandsHistoryLength,CommandsHistory_1.hasChanges=!0))}load(){const raw=this.storageService.get(CommandsHistory_1.PREF_KEY_CACHE,0);let serializedCache;if(raw)try{serializedCache=JSON.parse(raw)}catch(error){this.logService.error(`[CommandsHistory] invalid data: ${error}`)}const cache=CommandsHistory_1.cache=new LRUCache(this.configuredCommandsHistoryLength,1);if(serializedCache){let entries2;serializedCache.usesLRU?entries2=serializedCache.entries:entries2=serializedCache.entries.sort((a,b)=>a.value-b.value),entries2.forEach(entry=>cache.set(entry.key,entry.value))}CommandsHistory_1.counter=this.storageService.getNumber(CommandsHistory_1.PREF_KEY_COUNTER,0,CommandsHistory_1.counter)}push(commandId){CommandsHistory_1.cache&&(CommandsHistory_1.cache.set(commandId,CommandsHistory_1.counter++),CommandsHistory_1.hasChanges=!0)}peek(commandId){var _a3;return(_a3=CommandsHistory_1.cache)==null?void 0:_a3.peek(commandId)}saveState(){if(!CommandsHistory_1.cache||!CommandsHistory_1.hasChanges)return;const serializedCache={usesLRU:!0,entries:[]};CommandsHistory_1.cache.forEach((value,key)=>serializedCache.entries.push({key,value})),this.storageService.store(CommandsHistory_1.PREF_KEY_CACHE,JSON.stringify(serializedCache),0,0),this.storageService.store(CommandsHistory_1.PREF_KEY_COUNTER,CommandsHistory_1.counter,0,0),CommandsHistory_1.hasChanges=!1}static getConfiguredCommandHistoryLength(configurationService){var _a3,_b3;const configuredCommandHistoryLength=(_b3=(_a3=configurationService.getValue().workbench)==null?void 0:_a3.commandPalette)==null?void 0:_b3.history;return typeof configuredCommandHistoryLength=="number"?configuredCommandHistoryLength:CommandsHistory_1.DEFAULT_COMMANDS_HISTORY_LENGTH}},__name(_Fe,"CommandsHistory"),CommandsHistory_1=_Fe,_Fe.DEFAULT_COMMANDS_HISTORY_LENGTH=50,_Fe.PREF_KEY_CACHE="commandPalette.mru.cache",_Fe.PREF_KEY_COUNTER="commandPalette.mru.counter",_Fe.counter=1,_Fe.hasChanges=!1,_Fe);CommandsHistory=CommandsHistory_1=__decorate$2([__param$2(0,IStorageService),__param$2(1,IConfigurationService),__param$2(2,ILogService)],CommandsHistory);const _AbstractEditorCommandsQuickAccessProvider=class _AbstractEditorCommandsQuickAccessProvider extends AbstractCommandsQuickAccessProvider{constructor(options,instantiationService,keybindingService,commandService,telemetryService,dialogService){super(options,instantiationService,keybindingService,commandService,telemetryService,dialogService)}getCodeEditorCommandPicks(){var _a3;const activeTextEditorControl=this.activeTextEditorControl;if(!activeTextEditorControl)return[];const editorCommandPicks=[];for(const editorAction of activeTextEditorControl.getSupportedActions()){let commandDescription;(_a3=editorAction.metadata)!=null&&_a3.description&&(isLocalizedString(editorAction.metadata.description)?commandDescription=editorAction.metadata.description:commandDescription={original:editorAction.metadata.description,value:editorAction.metadata.description}),editorCommandPicks.push({commandId:editorAction.id,commandAlias:editorAction.alias,commandDescription,label:stripIcons(editorAction.label)||editorAction.id})}return editorCommandPicks}};__name(_AbstractEditorCommandsQuickAccessProvider,"AbstractEditorCommandsQuickAccessProvider");let AbstractEditorCommandsQuickAccessProvider=_AbstractEditorCommandsQuickAccessProvider;var __decorate$1=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param$1=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneCommandsQuickAccessProvider=(_Ge=class extends AbstractEditorCommandsQuickAccessProvider{get activeTextEditorControl(){var _a3;return(_a3=this.codeEditorService.getFocusedCodeEditor())!=null?_a3:void 0}constructor(instantiationService,codeEditorService,keybindingService,commandService,telemetryService,dialogService){super({showAlias:!1},instantiationService,keybindingService,commandService,telemetryService,dialogService),this.codeEditorService=codeEditorService}async getCommandPicks(){return this.getCodeEditorCommandPicks()}hasAdditionalCommandPicks(){return!1}async getAdditionalCommandPicks(){return[]}},__name(_Ge,"StandaloneCommandsQuickAccessProvider"),_Ge);StandaloneCommandsQuickAccessProvider=__decorate$1([__param$1(0,IInstantiationService),__param$1(1,ICodeEditorService),__param$1(2,IKeybindingService),__param$1(3,ICommandService),__param$1(4,ITelemetryService),__param$1(5,IDialogService)],StandaloneCommandsQuickAccessProvider);const _GotoLineAction=class _GotoLineAction extends EditorAction{constructor(){super({id:_GotoLineAction.ID,label:QuickCommandNLS.quickCommandActionLabel,alias:"Command Palette",precondition:void 0,kbOpts:{kbExpr:EditorContextKeys.focus,primary:59,weight:100},contextMenuOpts:{group:"z_commands",order:1}})}run(accessor){accessor.get(IQuickInputService).quickAccess.show(StandaloneCommandsQuickAccessProvider.PREFIX)}};__name(_GotoLineAction,"GotoLineAction"),_GotoLineAction.ID="editor.action.quickCommand";let GotoLineAction=_GotoLineAction;registerEditorAction(GotoLineAction),Registry.as(Extensions$2.Quickaccess).registerQuickAccessProvider({ctor:StandaloneCommandsQuickAccessProvider,prefix:StandaloneCommandsQuickAccessProvider.PREFIX,helpEntries:[{description:QuickCommandNLS.quickCommandHelp,commandId:GotoLineAction.ID}]});var __decorate=function(decorators,target,key,desc){var c=arguments.length,r2=c<3?target:desc===null?desc=Object.getOwnPropertyDescriptor(target,key):desc,d;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")r2=Reflect.decorate(decorators,target,key,desc);else for(var i=decorators.length-1;i>=0;i--)(d=decorators[i])&&(r2=(c<3?d(r2):c>3?d(target,key,r2):d(target,key))||r2);return c>3&&r2&&Object.defineProperty(target,key,r2),r2},__param=function(paramIndex,decorator){return function(target,key){decorator(target,key,paramIndex)}};let StandaloneReferencesController=(_He=class extends ReferencesController{constructor(editor2,contextKeyService,editorService,notificationService,instantiationService,storageService,configurationService){super(!0,editor2,contextKeyService,editorService,notificationService,instantiationService,storageService,configurationService)}},__name(_He,"StandaloneReferencesController"),_He);StandaloneReferencesController=__decorate([__param(1,IContextKeyService),__param(2,ICodeEditorService),__param(3,INotificationService),__param(4,IInstantiationService),__param(5,IStorageService),__param(6,IConfigurationService)],StandaloneReferencesController),registerEditorContribution(ReferencesController.ID,StandaloneReferencesController,4);const _ToggleHighContrast=class _ToggleHighContrast extends EditorAction{constructor(){super({id:"editor.action.toggleHighContrast",label:ToggleHighContrastNLS.toggleHighContrast,alias:"Toggle High Contrast Theme",precondition:void 0}),this._originalThemeName=null}run(accessor,editor2){const standaloneThemeService=accessor.get(IStandaloneThemeService),currentTheme=standaloneThemeService.getColorTheme();isHighContrast(currentTheme.type)?(standaloneThemeService.setTheme(this._originalThemeName||(isDark(currentTheme.type)?VS_DARK_THEME_NAME:VS_LIGHT_THEME_NAME)),this._originalThemeName=null):(standaloneThemeService.setTheme(isDark(currentTheme.type)?HC_BLACK_THEME_NAME:HC_LIGHT_THEME_NAME),this._originalThemeName=currentTheme.themeName)}};__name(_ToggleHighContrast,"ToggleHighContrast");let ToggleHighContrast=_ToggleHighContrast;registerEditorAction(ToggleHighContrast);var __defProp$h=Object.defineProperty,__getOwnPropDesc$h=Object.getOwnPropertyDescriptor,__decorateClass$3=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$h(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$h(target,key,result),result},"__decorateClass$3"),__decorateParam$3=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$3");exports2.ScriptEditorService=(_Ie=class extends core.Disposable{constructor(_configService){super();__publicField(this,"_editorInstance",null);this._configService=_configService}setEditorInstance(editor2){return this._editorInstance=editor2,core.toDisposable(()=>this._editorInstance=null)}getEditorInstance(){return this._editorInstance}requireVscodeEditor(){if(!window.MonacoEnvironment){const config=this._configService.getConfig(PLUGIN_CONFIG_KEY);window.MonacoEnvironment={getWorkerUrl:config==null?void 0:config.getWorkerUrl}}}},__name(_Ie,"ScriptEditorService"),_Ie),exports2.ScriptEditorService=__decorateClass$3([__decorateParam$3(0,core.IConfigService)],exports2.ScriptEditorService);var __defProp$g=Object.defineProperty,__getOwnPropDesc$g=Object.getOwnPropertyDescriptor,__decorateClass$2=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$g(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$g(target,key,result),result},"__decorateClass$2"),__decorateParam$2=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$2");const IUniscriptExecutionService=core.createIdentifier("univer.uniscript.execution-service");let UniscriptExecutionService=(_Je=class extends core.Disposable{constructor(_logService,_injector){super(),this._logService=_logService,this._injector=_injector}async execute(code){this._logService.log("[UniscriptExecutionService]","executing Uniscript...");const apiInstance=facade.FUniver.newAPI(this._injector),scriptFunction=new Function("univerAPI",`(() => {${code}})()`);try{return scriptFunction(apiInstance),!0}catch(e){return this._logService.error(e),!1}}},__name(_Je,"UniscriptExecutionService"),_Je);UniscriptExecutionService=__decorateClass$2([__decorateParam$2(0,core.ILogService),__decorateParam$2(1,core.Inject(core.Injector))],UniscriptExecutionService);const styles={scriptEditorPanel:"univer-script-editor-panel",scriptEditorContent:"univer-script-editor-content",scriptEditorActions:"univer-script-editor-actions"};function ScriptEditorPanel(){const editorContentRef=require$$0.useRef(null),editorContainerRef=require$$0.useRef(null),monacoEditorRef=require$$0.useRef(null),localeService=core.useDependency(core.LocaleService),shortcutService=core.useDependency(ui.IShortcutService),editorService=core.useDependency(exports2.ScriptEditorService);require$$0.useEffect(()=>{const containerElement=editorContainerRef.current,contentElement=editorContentRef.current;let disposableCollection=null,resizeObserver=null;if(containerElement&&contentElement){editorService.requireVscodeEditor();const monacoEditor=monacoEditorRef.current=editor.create(containerElement,{value:"",language:"javascript"});resizeObserver=new ResizeObserver(()=>{let timer=requestIdleCallback(()=>{if(!timer)return;const{height,width:width2}=contentElement.getBoundingClientRect();monacoEditor.layout({width:width2,height}),timer=void 0})}),resizeObserver.observe(contentElement);let terminateEscaping;disposableCollection=new core.DisposableCollection,disposableCollection.add(editorService.setEditorInstance(monacoEditor)),disposableCollection.add(monacoEditor.onDidFocusEditorWidget(()=>{terminateEscaping=shortcutService.forceEscape()})),disposableCollection.add(monacoEditor.onDidBlurEditorWidget(()=>{terminateEscaping==null||terminateEscaping.dispose(),terminateEscaping=void 0})),disposableCollection.add(core.toDisposable(()=>terminateEscaping==null?void 0:terminateEscaping.dispose()))}return()=>{resizeObserver&&contentElement&&resizeObserver.unobserve(contentElement),disposableCollection==null||disposableCollection.dispose()}},[editorService,shortcutService]);const startExecution=useExecution(monacoEditorRef);return jsxRuntimeExports.jsxs("div",{className:styles.scriptEditorPanel,children:[jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContent,ref:editorContentRef,children:jsxRuntimeExports.jsx("div",{className:styles.scriptEditorContainer,ref:editorContainerRef})}),jsxRuntimeExports.jsx("div",{className:styles.scriptEditorActions,children:jsxRuntimeExports.jsx(design.Button,{type:"primary",size:"small",onClick:startExecution,children:localeService.t("script-panel.panel.execute")})})]})}__name(ScriptEditorPanel,"ScriptEditorPanel");function useExecution(monacoEditorRef){const scriptService=core.useDependency(IUniscriptExecutionService),messageService=core.useDependency(ui.IMessageService),localeService=core.useDependency(core.LocaleService);return require$$0.useCallback(()=>{var _a3;const model=(_a3=monacoEditorRef.current)==null?void 0:_a3.getModel();model&&scriptService.execute(model.getValue()).then(()=>{messageService.show({content:localeService.t("uniscript.message.success"),type:design.MessageType.Success})}).catch(()=>{messageService.show({content:localeService.t("uniscript.message.failed"),type:design.MessageType.Error})})},[localeService,messageService,monacoEditorRef,scriptService])}__name(useExecution,"useExecution");function UniscriptMenuItemFactory(accessor){return{id:ToggleScriptPanelOperation.id,title:"toggle-script-panel",tooltip:"script-panel.tooltip.menu-button",icon:"CodeSingle",type:ui.MenuItemType.BUTTON,hidden$:ui.getMenuHiddenObservable(accessor,core.UniverInstanceType.UNIVER_SHEET),disabled$:sheetsUi.getCurrentRangeDisable$(accessor,{workbookTypes:[sheets.WorkbookEditablePermission],worksheetTypes:[sheets.WorksheetEditPermission,sheets.WorksheetSetCellStylePermission,sheets.WorksheetSetCellValuePermission],rangeTypes:[sheets.RangeProtectionPermissionEditPoint]})}}__name(UniscriptMenuItemFactory,"UniscriptMenuItemFactory");const menuSchema={[ui.RibbonStartGroup.OTHERS]:{[ToggleScriptPanelOperation.id]:{order:5,menuItemFactory:UniscriptMenuItemFactory}}};var __defProp$f=Object.defineProperty,__getOwnPropDesc$f=Object.getOwnPropertyDescriptor,__decorateClass$1=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$f(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$f(target,key,result),result},"__decorateClass$1"),__decorateParam$1=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam$1");let UniscriptController=(_Ke=class extends core.Disposable{constructor(_menuManagerService,commandService,componentManager){super(),this._menuManagerService=_menuManagerService,this._menuManagerService.mergeMenu(menuSchema),this.disposeWithMe(componentManager.register(ScriptPanelComponentName,ScriptEditorPanel)),this.disposeWithMe(commandService.registerCommand(ToggleScriptPanelOperation))}},__name(_Ke,"UniscriptController"),_Ke);UniscriptController=__decorateClass$1([__decorateParam$1(0,ui.IMenuManagerService),__decorateParam$1(1,core.ICommandService),__decorateParam$1(2,core.Inject(ui.ComponentManager))],UniscriptController);var __defProp$e=Object.defineProperty,__getOwnPropDesc$e=Object.getOwnPropertyDescriptor,__decorateClass=__name((decorators,target,key,kind)=>{for(var result=kind>1?void 0:kind?__getOwnPropDesc$e(target,key):target,i=decorators.length-1,decorator;i>=0;i--)(decorator=decorators[i])&&(result=(kind?decorator(target,key,result):decorator(result))||result);return kind&&result&&__defProp$e(target,key,result),result},"__decorateClass"),__decorateParam=__name((index,decorator)=>(target,key)=>decorator(target,key,index),"__decorateParam");const PLUGIN_NAME="UNIVER_UNISCRIPT_PLUGIN";exports2.UniverUniscriptPlugin=(_Le=class extends core.Plugin{constructor(_config=defaultPluginConfig,_injector,_configService){super(),this._config=_config,this._injector=_injector,this._configService=_configService;const{menu,...rest}=this._config;menu&&this._configService.setConfig("menu",menu,{merge:!0}),this._configService.setConfig(PLUGIN_CONFIG_KEY,rest)}onStarting(){const injector=this._injector;[[UniscriptController],[exports2.ScriptEditorService],[ScriptPanelService]].forEach(d=>injector.add(d)),this.registerExecution()}onSteady(){this._injector.get(UniscriptController)}registerExecution(){this._injector.add([IUniscriptExecutionService,{useClass:UniscriptExecutionService}])}},__name(_Le,"UniverUniscriptPlugin"),__publicField(_Le,"pluginName",PLUGIN_NAME),_Le),exports2.UniverUniscriptPlugin=__decorateClass([__decorateParam(1,core.Inject(core.Injector)),__decorateParam(2,core.IConfigService)],exports2.UniverUniscriptPlugin);/*!-----------------------------------------------------------------------------
1164
1164
  * Copyright (c) Microsoft Corporation. All rights reserved.
1165
1165
  * Version: 0.52.0(f6dc0eb8fce67e57f6036f4769d92c1666cdf546)
1166
1166
  * Released under the MIT license